oracle数据库的导入导出及表空间的创建

oracle数据库的导入导出及表空间的创建
oracle数据库的导入导出及表空间的创建

oracle数据库的导入导出及表空间的创建

(1)向oracle数据库中导入完整的数据库(后缀名:dmp)

首先进入cmd,输入sqlplus/nolog运行oracle自带程序,然后输入conn/as sysdba,以数据库管理员(dba)的身份链接到后台数据库。

step1:建立临时表空间(取名为:libsys_temp)

create temporary tablespace libsys_temp

tempfile'D:\oracle\libsys_temp.dbf'//指定空间存放路径

size1000M//为临时表空间分配磁盘空间

autoextend on

next10M maxsize2048M//若存入的数据量超过了分配的空间大小,

//则以每次新增10M的大小增大表间,但最大为2048M!

extent management local;//设置表空间的区管理为本地管理,为的是减少分配extent的时

//候产生的内部递归sql,提高数据库分配空间的效率.

step2:建立数据表空间,用于存储导入的数据库中的所有数据(取名:libsys_data) create tablespace libsys_data

logging//指明导入过程记入日志中

datafile'D:\oracle\libsys_data.dbf'//指定数据库保存的路径size10240M//注意表空间应足够大,否则导入将出错!

autoextend on

next100M maxsize20480M

extent management local;

step3:创建用户并指定表空间(PS:需拥有dba权限)

create user libsys identified by abc123//设置用户名:libsys,码:abc123.

default tablespace libsys_data//为用户指定刚刚建立的表空间libsys_data,以便保存与此用户相关的所有数据.

temporary tablespace libsys_temp;//为用户指定临时表空间libsys_temp,以提高数据库运行效率.

step4:给用户授权(需授予dba,connect和resource三个权限,否则无法完成数据库导入)

grant dba,connect,resource to libsys;

step5:将拷贝来的完整的数据库文件(此处为:'libsys.dmp')导入到自己机器中的oracle数据库中

imp libsys/abc123file='D:\libsys.dmp'full=y ignore=y;

//full=y表示全部导入,ignore=y表示忽略数据库中已存在的表,否则可能出错。

(特别注意:在进行step5之前,需要输入“exit”命令退出并返回到'cmd'命令后,才能做导入导出操作!!!!)

另外:若只想将数据库dmp文件中的部分表(此处为:item表)导入,则只需加上表名即可,方法如下:

imp libsys/abc123file='D:\libsys.dmp'tables=(item);//其中的item为libsys.dmp数据库

文件中的一张表对象.

(2)将oracle数据库中的数据导出

A.导出完整的数据库(此处数据库为:libsys_data):

exp libsys/abc123file='D:\oracle\libsys.dmp'full=y;//full=y表示全部导出.

B.将指定用户的数据表导出(此处为:用户xdw和用户newuser):

exp libsys/abc123file='D:\oracle\libsys.dmp' owner=(xdw,newuser);

C.导出指定的数据库中的表(此处为:student表和teacher表):

exp libsys/abc123file='D:\oracle\libsys.dmp' tables=(student,teacher);

D.导出数据库中表的指定字段(此处为:学生姓名中的姓为"王")的数据(此处为:student表):

exp libsys/abc123file='D:\oracle\libsys.dmp'tables=(student) query=\"where studentName like'王%'\";

Oracle表空间操作详解

Oracle表空间操作详解 1.创建表空间: createtablespacedatafile '' size autoextend on next maxsize eg: createtablespace sales datafile 'c:\1.txt' size 10m autoextend on next 1m maxsize 100m 2.为表空间增加数据文件: altertablespace add datafile 'filepath' size autoextend on next maxsizefilemaxsize[unlimited]; eg: altertablespace sales datafile 'c:\2.txt' size 10m autoextend on next 1m maxsize unlimited 3.调整表空间: alter database datafile 'filepath' resize ;--重置表空间的大小 eg: alter database datafile 'c:\2.txt' resize 10m 在实际使用中我们经常会遇到oracle某个表空间占用了大量的空间而其中的数据量却只占用了少量空间,此时我们可以用ALTER DATABASE DATAFILE '***.dbf' RESIZE nnM的命令来收缩表空间,但在收缩的过程中会遇到ora-03297错误,表示在所定义的空间之后有数据存在,不能收缩,此时的解决办法有: (1). 先估算该表空间内各个数据文件的空间使用情况: SQL>select file#,name from v$datafile;

oracle数据库数据的导入导出

Oracle数据库导入导出命令(备份与恢复) Toad 一个很好的oralce数据库操作与管理工具,使用它可以很方便地导入导出数据表,用户以及整个数据库。今天在这里主要讲一下用命令行来操作oracle数据导入和导出: 备份数据 1、获取帮助: exp help=y 2. 导出一个完整数据库 exp user/pwd@instance file=path full=y 示例:exp system/system@xc file = c:/hehe full =y imp tax/test@tax file=d:/dbbak.dmp full=y 3 、导出一个或一组指定用户所属的全部表、索引和其他对象 exp system/manager file=seapark log=seapark owner=seapark exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold) 示例:exp system/system@xc file=c:/hehe owner=uep 4、导出一个或多个指定表 exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist) 示例:exp system/system@xc file=c:/heh tables=(ueppm.ne_table) 恢复数据 1. 获取帮助 imp help=y 2. 导入一个完整数据库 imp system/manager file=bible_db log=dible_db full=y ignore=y 3. 导入一个或一组指定用户所属的全部表、索引和其他对象 imp system/manager file=seapark log=seapark fromuser=seapark imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold) 4. 将一个用户所属的数据导入另一个用户 imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy imp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1) 5. 导入一个表 imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b) ************************ **************************** 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回Oracle 数据库中去。 1. 简单导出数据(Export)和导入数据(Import) Oracle支持三种类型的输出: (1)表方式(T方式),将指定表的数据导出。 (2)用户方式(U方式),将指定用户的所有对象及数据导出。 (3)全库方式(Full方式),将数据库中的所有对象导出。 数据导出(Import)的过程是数据导入(Export)的逆过程,它们的数据流向不同。

oracle表空间管理

实验一数据文件和表空间的管理 【开发语言及实现平台或实验环境】 Oracle10g 【实验目的】 (1)熟悉ORACLE的环境,学习使用SQL*Plus与ORACLE进行交互;(2)掌握连接数据库以及断开连接的方法; (3)掌握数据文件和控制文件的管理基本命令 (4)掌握表空间管理的基本命令 【实验原理】 1.SQL*Plus命令

2.数据文件的管理 (1)创建数据文件 数据文件依附于表空间而存在,创建数据文件就是向表空间添加文件 在创建数据文件时应该根据文件数据量的大小确定文件的大小以及文件的增长方式。 语法: ALTER TABLESPACE…ADD DA TAFILE ALTER TABLESPACE…ADD TEMPFILE 例:向ORCL数据库的USERS表空间中添加一个大小为10 MB的数据文件。 ALTER TABLESPACE USERS ADD DA TAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADA TA\ORCL\USERS02.DBF' SIZE 10M; (2)修改数据文件大小 创建后修改数据文件为自动增长: AUTOEXTEND ON NEXT …MAXSIZE…|UNLIMITED 手工改变数据文件的大小 ALTER DA TABASE DA TAFILE…RESIZE… 例:为ORCL数据库的USERS表空间添加一个自动增长的数据文件。 ALTER TABLESPACE USERS ADD DA TAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADA TA\ORCL\USERS03.DBF' SIZE 10M AUTOEXTEND ON NEXT 512K MAXSIZE 50M; 例:修改ORCL数据库USERS表空间的数据文件USERS02.DBF为自动增长方式。ALTER DA TABASE DA TAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADA TA\ORCL\USERS02.DBF ' AUTOEXTEND ON NEXT 512K MAXSIZE UNLIMITED; 例:取消ORCL数据库USERS表空间的数据文件USERS02.DBF的自动增长方式。ALTER DA TABASE DA TAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADA TA\ORCL\USERS02.DBF ' AUTOEXTEND OFF; 例:将ORCL数据库USERS表空间的数据文件USERS02.DBF大小设置为8 MB 。ALTER DA TABASE DA TAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADA TA\ORCL\USERS02.DBF' RESIZE 8M; (3)删除数据文件 删除某个表空间中的某个空数据文件 ALTER TABLESPACE…DROP DA TAFILE 例:删除USERS表空间中的数据文件USERS003.DBF。 ALTER TABLESPACE USERS DROP DA TAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADA TA\ORCL\USERS003.DBF'; 3.表空间的管理

oracle创建表与增删改

-- 数据准备:创建工资等级表 CREATE TABLE salgrade_test ( grade NUMBER (2), lowsal NUMBER (7, 2), hisal NUMBER (7, 2) ); -- 查看工资等级表结构 DESC salgrade; -- 查看工资等级表数据 SELECT * FROM salgrade_test; -- 插入数据 INSERT INTO salgrade_test VALUES (1, 10001, 99999); INSERT INTO salgrade_test VALUES (2, 8001, 10000); INSERT INTO salgrade_test VALUES (3, 6001, 8000); INSERT INTO salgrade_test VALUES (4, 4001, 6000); INSERT INTO salgrade_test VALUES (5, 1, 4000); -- 计算员工的薪水等级 SELECT NAME, salary, grade FROM emp_test, salgrade_test WHERE emp_test.salary BETWEEN salgrade_test.lowsal AND salgrade_test.hisal; -- ------------------------------------------------------SELECT NAME, salary, grade FROM emp_test

FULL JOIN salgrade_test ON emp_test.salary BETWEEN salgrade_test.lowsal AND salgrade_test.hisal; -- 复制表:只复制结构 , 不复制数据 CREATE TABLE salgrade_copy AS ( SELECT * FROM salgrade_test WHERE 1 <> 1 ); SELECT * FROM salgrade_copy; -- 复制表:复制一部分数据----通过设置别名的方式 , 指定新表中的列名(year_sal) CREATE TABLE emp_test_copy AS ( SELECT emp_id, NAME, salary * 12 year_sal FROM emp_test WHERE dept_test_id = 10 ); SELECT * FROM emp_test_copy; -- 复制表:复制一部分数据 -- 新表中的列名 CREATE TABLE emp_count (did, emp_num) AS ( SELECT dept_test_id, COUNT (*) FROM emp_test GROUP BY dept_test_id ); SELECT * FROM emp_count; -- 创建一个同 emp 表结构相同的空表 , 将部门号为 10 的员工信息放入该表 -- 如果有一张表 emp 的数据量为一百万条 , 此时需要建立 1 张测试表只放入少量测试数据( 如 100条 ) , 执行步骤如下所示: -- 第 1 步创建一个空表 CREATE TABLE emp_copy AS (

Oracle Export/Import数据库备份与恢复的三种方法

Oracle数据库备份与恢复的三种方法 Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。 一、导出/导入(Export/Import) 利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。 1、简单导出数据(Export)和导入数据(Import) Oracle支持三种方式类型的输出: (1)、表方式(T方式),将指定表的数据导出。 (2)、用户方式(U方式),将指定用户的所有对象及数据导出。 (3)、全库方式(Full方式),瘵数据库中的所有对象导出。 数据导入(Import)的过程是数据导出(Export)的逆过程,分别将数据文件导入数据库和将数据库数据导出到数据文件。 2、增量导出/导入 增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。 增量导出包括三种类型: (1)、“完全”增量导出(Complete) 即备份三个数据库,比如: exp system/manager inctype=complete file=040731.dmp (2)、“增量型”增量导出 备份上一次备份后改变的数据,比如: exp system/manager inctype=incremental file=040731.dmp

推荐下载-Oracle 数据泵导出和导入 精品

Oracle10g数据导入导出 简介 Oracle 10g引入了DATA PUMP提供的是一种基于服务器的数据提取和恢复的实用程序,DATA PUMP在体系结构和功能上与传统的EXPORT和IMPORT实用程序相比有了显著的提升。DATA PUMP允许您停止和重启作业,查看运行的作业的状态,及对导入和导出的数据做限制。 注意:数据泵文件与传统的EXP/IMP数据转储文件是不兼容的。 以下是DATA PUMP的几个优点介绍: 1.数据泵(Data Pump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行I/O服务器以更快地读取或插入数据,从而,单进程瓶颈被彻底解决。 2.通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的程度,以加快或减少资源消耗。 3.数据泵通过新的API来建立和管理,这些新的工作主要由DBMS_DATAPUMP来完成。新的导入/导出工具完全成为了一个客户端应用,通过IMPDP/EXPDP执行的命令实际上都是在调用Server端的API在执行操作,所以一旦一个任务被调度或执行,客户端就可以退出连接,任务会在server 端继续执行,随后通过客户端实用程序从任何地方检查任务的状态和进行修改创建DIRECTORY DATA PUMP要求为将要创建和读取的数据文件及日志文件创建目录,这个参数是用来定义一个目录,前面已经提到数据泵主要在Server端工作,导出文件需要写出到Server端本地目录,这个DIRECTORY就是对应的Server 端的目录。将要访问数据泵文件的用户必须要拥有该目录的读/写权限。 注意:在开始操作之前要验证外部目录是否存在,并且下达create directory 命令的用户需要拥有create any directory的系统权限。 下面给出一个创建名为TEST_EXPDP的目录并授予hs_user,hs_his用户访问此目录读/写权限。

Oracle 11g表空间——创建和扩展(永久)表空间

Oracle 11g表空间——创建和扩展(永久)表空间 本文内容 创建(永久)表空间 查看表空间 扩展表空间 创建(永久)表空间 Oracle 按照区和段空间进行管理表空间。 区管理方式 - 针对区的分配方式的不同,有两种方式:字典管理方式 (dictionary-managed tablespace,DMT)和本地管理方式(local-managed tablespace,LMT)。Oracle 10g 开始强烈建议使用 LMT 方式。从 Oracle 9i 开始,创建表空间时默认使用 LMT。 其中,LMT 区的分配方式: 统一(UNIFORM)- 统一分配。指定表空间中所有区的大小都相同。默认值是 1MB。自动(AUTOALLOCATE 或 SYSTEM)- 自动分配。指定有 Oracle 系统来自动管理区的大小。这是默认设置。 段管理方式– LMT 方式,除了可以指定区的分配方式外,还可以指定段的管理方式。段空间管理方式主要是指 Oracle 用来管理段中已用数据块和空闲数据块的机制。分为两种: 手动(MANUAL)- Oracle 将使用空闲列表(free list)管理段的已用数据块和空闲数据块。这是传统的段空间管理方式,为了与以前的版本兼容。 自动(AUTO)- Oracle 将使用位图(bitmap)来管理段的已用数据块和空闲数据块。通过位图中单元的取值判断段中的数据块是否可用。 字典管理方式没有段管理。 下面示例演示用本地管理方式创建表空间。这是 Oracle 推荐的方式。 示例 1:使用 AUTOALLOCATE 区分配方式。创建表空间 mytbs01,数据文件是 D:\oracledata\mytbs01_1.dbf,大小为 2M,并指定区分配方式为 AUTOALLOCATE。create tablespace mytbs01 datafile 'D:\oracledata\mytbs01_1.dbf' size 2M

oracle创建表

CREATE TABLE DEPT(id NUMBER(7),name VARCHAR2(25)); 2、将Departments表中数据插入到DEPT表中 SELECT * FROM HR.DEPARTMENTS; INSERT INTO DEPT(ID,NAME) SELECT * FROM DEPARTMENTS; CREATE TABLE EMP (id NUMBER(7),last_name VARCHAR2(25),first_name VARCHAR2(25),dept_id NUMBER(7)); 4、修改EMP表,允许输入更长(50)员工的姓氏(LAST_NAME) ALTER table EMP modify(last_name varchar2(50)); 5、在数据字典中确认DEPT表和EMP表的创建结果 DESCRIBE dept; DESCRIBE emp; 6、根据表Employees的结构创建表Employees2表,仅包含EMPLOYEE_ID、FIRST_NAME、 LAST_NAME、SALARY和DEPARTMENT_ID。将新表中的各列分别命名为EMPLOYEE_ID、FIRST_NAME、LAST_NAME、SALARY和DEPT_ID CREATE TABLE employees2 as SELECT employee_id,first_name,last_name,salary,department_id dept_id FROM employees; 7、删除EMP表 HR> drop table emp; 8、将EMPLOYEES2表重命名为EMP HR> alter table employees2 rename to emp; 9、删除表EMP的FIRST_NAME列,并确认

在Oracle中查询表的大小和表空间的大小

在Oracle中查询表的大小和表空间的大小 上一篇/ 下一篇 2011-08-28 11:59:01 / 个人分类:计算机 查看( 443 ) / 评论( 0 ) / 评分( 0 / 0 ) 原文:https://www.360docs.net/doc/229252429.html,/cosio/article/details/3978747 有两种含义的表大小。一种是分配给一个表的物理空间数量,而不管空间是否被使用。可以这样查询获得字节数: select segment_name, bytes from user_segments where segment_type = 'TABLE'; 或者 Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name 另一种表实际使用的空间。这样查询: analyze table emp compute statistics; select num_rows * avg_row_len from user_tables where table_name = 'EMP'; 查看每个表空间的大小 Select Tablespace_Name,Sum(bytes)/1024/1024 From Dba_Segments Group By Tablespace_Name 1.查看剩余表空间大小

SELECT tablespace_name 表空间,sum(blocks*8192/1000000) 剩余空间M FROM dba_free_space GROUP BY tablespace_name; 2.检查系统中所有表空间总体空间 select https://www.360docs.net/doc/229252429.html,,sum(a.bytes/1000000)总空间from v$datafile a,v$tablespace b where a.ts#=b.ts# group by https://www.360docs.net/doc/229252429.html,; 1、查看Oracle数据库中表空间信息的工具方法: 使用oracle enterprise manager console工具,这是oracle的客户端工具,当安装oracle服务器或客户端时会自动安装此工具,在windows操作系统上完成oracle安装后,通过下面的方法登录该工具:开始菜单——程序——Oracle-OraHome92——Enterprise Manager Console(单击)——oracle enterprise manager console登录——选择…独立启动?单选框——…确定? ——…oracle enterprise manager console,独立? ——选择要登录的…实例名? ——弹出…数据库连接信息? ——输入?用户名/口令? (一般使用sys用户),?连接身份?选择选择SYSDBA——…确定?,这时已经成功登录该工具,选择…存储? ——表空间,会看到如下的界面,该界面显示了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。 图1 表空间大小及使用率 2、查看Oracle数据库中表空间信息的命令方法:

Oracle 建表(一对多)代码及相关约束示例

建表(一对多)代码及相关约束 create table t_class( c_id number(3) primary key, c_name varchar2(20) not null ); create table t_stu( s_id number(5) primary key, s_name varchar2(8) not null, sex char(2) default '男', birthday date, school_age number(2) check(school_age>0), school_score number(5,2), c_id number(3), id_card char(18) unique, foreign key(c_id) references t_class(c_id) ); 附:测试数据: insert into t_class values(1,'订单班'); insert into t_class values(2,'开发班'); insert into t_class values(3,'美工班'); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (1, 'a', '男', to_date('01-01-1980', 'dd-mm-yyyy'), 24, 90, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (2, 'b', '男', to_date('11-05-1981', 'dd-mm-yyyy'), 23, 80, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (3, 'c', '女', to_date('19-09-1982', 'dd-mm-yyyy'), 22, 50, 1, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD) values (4, 'd', '女', to_date('28-01-1984', 'dd-mm-yyyy'), 21, 80, 2, null); insert into T_STU (S_ID, S_NAME, SEX, BIRTHDAY, SCHOOL_AGE, SCHOOL_SCORE, C_ID, ID_CARD)

查看Oracle表空间SQL语句

查看Oracle表空间SQL语句 1.查看所有表空间大小 SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024tablespacesize_M FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME; 2.未使用的表空间大小 SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024TABSPACE_FREE_SIZE_M FROM DBA_FREE_SPACE group by TABLESPACE_NAME; 3.所有使用空间可以这样计算 SELECT a.tablespace_name,a.total,b.free,a.total-b.free used from (SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024TOTAL FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME)A, (SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024FREE FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME)B where a.tablespace_name=b.tablespace_name; 4.下面这条语句查看所有段的大小 select segment_nam,sum(bytes)/1024/1024from USER_EXTENTS GROUP BY segment_name; 5.在命令行情况下如何将结果放到一个文件里用到了telnet SET TRIMSPOOL ON SET LINESIZE2000 SET PAGESIZE2000 SET NEWPAGE1 SET HEADING OFF SET TERM OFF SPOOL D:\EXP.TXT SELECT*FROM V$DATABASE; spool off 6.查看当前正在使用的临时表空间大小 SELECT https://www.360docs.net/doc/229252429.html,ERNAME,SE.SID,SU.BLOCKS*TO_NUMBER(RTRIM(P.VALUE))AS SPACE,tablespace,segtype,sql_text FROM V$SORT_USAGE SU,V$PARAMETER P,V$SESSION SE,V$SQL S WHERE https://www.360docs.net/doc/229252429.html,='db_block_size' AND SU.SESSION_ADDR=SE.SADDR AND S.HASH_VALUE=SU.SQLHASH AND S.ADDRESS=SU.SQLADDR

Oracle表空间和数据文件的管理

第六章表空间和数据文件的管理 6.1 Oracle引入逻辑结构的目的 Oracle数据库管理系统并没有像不少其它数据库管理系统那样直接地操作数据文件,而是引入一组逻辑结构。如图6-1所示。 图6-1 图6-1的虚线左边为逻辑结构,右边为物理结构。与计算机原理或计算机操作系统中所讲的有些不同,在Oracle数据库中,逻辑结构为Oracle引入的结构,而物理结构为操作系统所拥有的结构。 曾有不少学生问过我同样的一个问题,那就是Oracle为什么要引入逻辑结构呢? 首先可能是为了增加Oracle的可移植性。Oracle公司声称它的Oracle数据库是与IT 平台无关的,即在某一厂家的某个操作系统上开发的Oracle数据库(包括应用程序等)可以几乎不加修改地移植到另一厂家的另外的操作系统上。要做到这一点就不能直接操作数据文件,因为数据文件是跟操作系统相关的。 其次可能是为了减少Oracle从业人员学习的难度。因为有了逻辑结构Oracle的从业人员就可以只对逻辑结构进行操作,而在所有的IT平台上逻辑结构的操作都几乎完全相同,至于从逻辑结构到物理结构的映射(转换)是由Oracle数据库管理系统来完成的。 6.2 Oracle数据库中存储结构之间的关系 其实图6-1类似于一个Oracle数据库的存储结构之间关系的实体-关系图。如果读者学过实体-关系模型(E-R模型)的话,从图6-1中可以很容易地得到Oracle数据库中存储结构之间的关系。为了帮助那些没有学过E-R模型的读者理解图6-1,也是为了帮助那些

学过但已经忘的差不多了的读者恢复一下记忆,在下面对E-R模型和图6-1给出一些简单的解释。 在图6-1中,园角型方框为实体,实线表示关系,单线表示一的关系,三条线(鹰爪)表示多的关系。于是可以得到: 每个数据库是由一个或多个表空间所组成(至少一个)。 每个表空间基于一个或多个操作系统的数据文件(至少一个)。 每个表空间中可以存放有零个或多个段(Segment)。 每个段是由一个或多个区段(Extent)所组成。 每个区段是由一个或多个连续的Oracle数据块所组成。 每个Oracle数据块是由一个或多个连续的操作系统数据块所组成。 每个操作系统数据文件是由一个或多个区段(Extent)所组成。 每个操作系统数据文件是由一个或多个操作系统数据块所组成。 有关段,区段,和Oracle数据块等我们在接下来的章节中要详细地介绍。 6.3 表空间和数据文件之间的关系及表空间的分类 通过前面的讨论可知:Oracle将数据逻辑地存放在表空间里,而物理地存放在数据文件里。表空间(Tablespaces)在任何一个时刻只能属于一个数据库,但是反过来并不成立,因为一个数据库一般都有多个表空间。每个表空间都是由一个或多个操作系统的数据文件所组成,但是一个操作系统的数据文件只能属于一个表空间。 表空间可以被进一步划分成一些更小的逻辑存储单位。在一个Oracle数据库中,每个数据文件(Data files)可以而且只能属于一个表空间和一个数据库。数据文件实际上是存储模式对象数据的一个容器/仓库。 在一个Oracle数据库中一般有两类表空间,他们是系统(SYSTEM)表空间和非系统(Non-SYSTEM)表空间。 系统(SYSTEM)表空间是与数据库一起建立的,在系统表空间中存有数据字典,在系统表空间中还包含了系统还原(回滚)段。虽然在系统表空间中可以存放用户数据,但考虑到Oracle系统的效率和管理上的方便,在系统表空间上不应该存放任何用户数据。非系统(Non-SYSTEM)表空间可以由数据库管理员创建,在非系统表空间中存储一些单独的段,这些段可以是用户的数据段,索引段,还原段,和临时段等。引入非系统表空间可以方便磁盘空间的管理,也可以更好地控制分配给用户磁盘空间的数量。引入非系统表空间还可以将静态数据和动态数据有效地分开,也可以按照备份的要求将数据分开存放。使用如下的命令创建一个非系统表空间:CREATE TABLESPACE表空间名 [DATAFILE子句] [MINIMUM EXTENT 正整数[K|M]] [BLOCKSIZE正整数[K]] [LOGGING|NOLOGGING] [DEFAULT 存储子句] [ONLINE|OFFLINE] [PERMANENT|TEMPORARY] [区段管理子句] [段管理子句] 在这里对以上命令中的一些子句和选项给出进一步的解释: 表空间名:所要创建的表空间名。

oracle按用户导入导出数据

Oracle数据库exp imp按用户导出导入实例 按用户导出再导入实例,任务要求如下: ◆1.从一台windows服务器 A 上导出 Test1 这个用户的所有对象,然后导入到linux服务器 B 上的 Test2用户。(已知Test1密码为Test1passwd 或者用system用户导出也行) ◆2.B机器上Test2用户不存在,或Test2用户已经存在两种情况(用户存在相对比较复杂) ---------如果Test2用户已经存在(数据没用,可以删除),级联删除用户及所有对象(有可能遇到有人正在连接,删除不掉的情况方法参照下文),重新创建账号并赋权。 ◆3.赋予适当的权限 操作步骤: ◆1.从 A 上导出数据文件到指定目录(目录名称自己定义,只要自己能找到就行,和用户名没有关系) sqlplus /nolog conn / as sysdba exp Test1/Test1passwd owner=Test1 file=D:\files\Test1.dmp ◆2.在A机器上查看用户默认表空间,以便导入时创建一样的表空间 SQL> select username,default_tablespace from dba_users where username ='TEST1'; USERNAME DEFAULT_TABLESPACE ------------------------------ ------------------------------ TEST1 CMIS ◆3.查看用户使用的表空间 SQL> select DISTINCT owner ,tablespace_name from dba_extents where owner like 'TEST1'; OWNER TABLESPACE_NAME ------------------------------ ------------------------------ TEST1 XSL TEST1 CMIS ◆4.查看表空间对应的数据文件,以便在B上创建大小合适的数据文件。 SQL> select file_name,tablespace_name from dba_data_files where tablespace_name in ('CMIS','XSL'); FILE_NAME BYTES TABLESPACE ------------------------------------------------------------ ---------- ---------- D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS 8728346624 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS01.ORA 8204058624 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS02.ORA 4194304000 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS03.ORA 4194304000 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS04.ORA 4194304000 CMIS D:ORACLEPRODUCT10.2.0ORADATACMISDBCMIS05.ORA 4194304000 CMIS

oracle创建表基础

?VARCHAR2(size)和NVARCHAR2(size):变长字符型数据。 首先,该数据类型存储变长的字符数据,在使用该数据类型定义数据时,该数据的存储区大小是不固定的,依据存储数据的长度进行动态分配存储区。参数size是该变量存储的最大的字符数,该值最大为4000。size的最小或默认值都是1。一般在定义该数据类型时,都要指定该长度值,即指定size值。NVARCHAR2(size)的不同之处在于它支持全球化数据类型,支持定长和变长字符集。 ?CHAR(size) NCHAR(size):定长字符型数据 该数据类型一旦定义,则存储该变量的存储区的大小就固定下来。显然在存储区分配上它没有VARCHAR2(size)和NVARCHAR2(size)数据类型具有动态性,但是在实际中,如果可以预测到一个变量存储的字符数量,且数量不是很大,则最好还是使用定长字符型数据来定义该变量,这样可以提高存储的效率。因为使用变长字符型数据要不断的计算存储的数据长度,再分配存储数据块,会消耗计算资源。定长字符型数据的最小值和默认值都为1个字符,而最大值为2000。NCHAR(size)的不同之处在于它支持全球化数据类型,支持定长和变长字符集,此时定长字符型数据的最小和默认值都为1个字节。 ?DATE:日期型数据 ORACLE服务器使用7个定长的存储区存储日期型数据,它可以月,年,日,实际,时,分和秒。日期型数据的取值范围从公元前4712年1月1日到公元9999年12月31日。 ?NUMBER(P,S):数字型数据。 参数p指十进制数的中长度,s为该十进制数小数点后的位数,如NUMBER(10,2)表示该数字型数据的中长度为10位,而小数后为2为。其中参数p的最大值为38,最小值为1,而参数s的最大值为124,最小值为-84。

Oracle数据的导入导出(数据泵的使用)

Oracle数据泵的使用 使用数据泵导出数据 1、连接Oracle数据库 SQL> conn / as sysdba 已连接。 2、创建一个操作目录 SQL> create directory dump_dir as 'e:\dump'; 注意同时需要使用操作系统命令在硬盘上创建这个物理目录。 目录已创建。 3、使用以下命令创建一个导出文件目录 hr用户操作dump_dir目录的权限, SQL>grant read,write on directory my_dir to scott; 授权成功。 4、使用命令expdp导出数据(可以按照用户模式导出、按照表、按照表空间导出和全库导出) C:\>expdp scott/tiger directory=dump_dir dumpfile=20090517scotttab.dmp tables=dept,emp s= Export: Release 10.2.0.1.0 - Production on 星期三, 18 6月, 2008 15:49:00 Copyright (c) 2003, 2005, Oracle. All rights reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options 启动"SCOTT"."SYS_EXPORT_TABLE_01": scott/******** directory=dump_dir dumpfile=20080601.dmp table dept,emp 正在使用BLOCKS 方法进行估计... 处理对象类型TABLE_EXPORT/TABLE/TABLE_DA TA 使用BLOCKS 方法的总估计: 128 KB 处理对象类型TABLE_EXPORT/TABLE/TABLE 处理对象类型TABLE_EXPORT/TABLE/INDEX/INDEX 处理对象类型TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINT 处理对象类型TABLE_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT . . 导出了"SCOTT"."DEPT" 5.656 KB 4 行

Oracle tablespace创建参数

Oracle tablespace创建参数 ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方存放,Oracle会提示:没有存储配额.因此,在创建对象之前,首先要分配存储空间. 分配存储,就要创建表空间: 创建表空间示例如下: CREATE TABLESPACE "SAMPLE" LOGGING DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTAN.ora' SIZE 5M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO 上面的语句分以下几部分: 第一: CREATE TABLESPACE "SAMPLE" 创建一个名为 "SAMPLE" 的表空间. 对表空间的命名,遵守Oracle 的命名规范就可了. ORACLE可以创建的表空间有三种类型: (1)TEMPORARY: 临时表空间,用于临时数据的存放; 创建临时表空间的语法如下: CREATE TEMPORARY TABLESPACE "SAMPLE"...... (2)UNDO : 还原表空间. 用于存入重做日志文件. 创建还原表空间的语法如下: CREATE UNDO TABLESPACE "SAMPLE"...... (3)用户表空间: 最重要,也是用于存放用户数据表空间 可以直接写成: CREATE TABLESPACE "SAMPLE" TEMPORARY 和 UNDO 表空间是ORACLE 管理的特殊的表空间.只用于存放系统相关数据. 第二: LOGGING 有 NOLOGGING 和 LOGGING 两个选项, NOLOGGING: 创建表空间时,不创建重做日志. LOGGING 和NOLOGGING正好相反, 就是在创建表空间时生成重做日志. 用NOLOGGING时,好处在于创建时不用生成日志,这样表空间的创建较快,但是没能日志,数据丢失后,不能恢复,但是一般我们在创建表空间时,是没有数据的,按通常的做法,是建完表空间,并导入数据后,是要对数据做备份的,所以通常不需要表空间的创建日志,因此,在创建表空间时,选择NOLOGGING,以加快表空间的创建速度. 第三: DATAFILE 用于指定数据文件的具体位置和大小. 如: DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTAN.ora' SIZE 5M

相关文档
最新文档