备份恢复10——逻辑备份与恢复(emp/imp)

1、exp和imp简

导出(exp):使用exp将数据库部分或全部对象的结构及其 数据 导出并存储到os文件中的过程。

导入(imp):使用imp将os文件中的对象结构及其 数据装载到数据库中的过程。


导入和导出的作用:

可以重新组织表,例如可以使用emp,imp删除行迁移。

可以在用户之间移动对象。

可以在数据库之间移动对象。

可以升级数据库到其他平台。

可以升级数据库到更高版本,例如,使用emp,imp可以讲8i版本的数据库对象升级到9i数据库中。

可以实现逻辑备份和恢复。

在磁盘空间允许的情况下,尽量先备份到本地服务器,然后在拷贝到磁带上,处于速度方面的考虑,尽量不要直接把数据往磁带上面备份。


2、使用exp/imp

使用数据泵导出包括:导出表,导出方案,导出表空间,导出数据库。

exp工具可以带有多个命令行选项,下面详细介绍exp工具的所有命令选项。


1) BUFFER : 于用指定在提取行数据室的缓冲区尺寸,通过设置该选项,可以确定导出导入时的数组提取尺寸。可以按照公式(rows_in_array * maximum_row_size)确定buffer选项的设置,注意,buffer选项只适用于常规导出。示例:

exp scott /tiger TABLES=dept,emp FILE= a.dmp BUFFER=81920

imp  scott /tiger TABLES=emp  FILE= a.dmp BUFFER=10240

——测试结果:

1、表导出的名字必须和导入的名字一致,不能在导入的时候改名字。

2、可以一次性导出多个表,导入的时候只导入一个表。

3、导入的用户必须有dba权限,否则报错,可以先登录系统为用户赋权,操作完成之后拿回权限。但是导出的用户不用dba权限,可以直接导出。

4、如果一个表有外键参考,导出时没有问题,导入时会发出警告信息。但是能导入数据。。


2.1)COMPRESS:用于指定要导出导入管理初始区(initial)的方法,其默认值y,当设置为y时,oracle会将initial设置为表段的当前尺寸;当设置为n时,oracle仍然会使用表段原有存储参数(initial和 next) 示例如下:

exp scott/tiger  tables=dept,emp FILE = a.dmp  COMPRESS=n


2.2)COMMIT: (只imp)该选项用指定在再每次数组插入完成之后是够提交数据,默认值为n。当设置为y时,每次数据插入完成之后会提交数据;当设置该选项为n时,在装载了表的所有数据之后才会提交。示例如下:

imp  scott/tiger tables=emp  file=a.dmp  buffer= 10240  commit = y


2.3)COMPILE: (只imp)该选项用于指定在导入包,过程,和函数时是否进行编译,默认值为y。当设置该选项为y时,会立即编译被导入的包、过程、函数。当设置该选项为n时,不会编译被导入的包、过程和函数。示例如下:

imp scott/tiger  file=a.dmp  compile = n


3) CONSISTENT :(只exp)该选项用于指定是否使用SET TRANSACTION READ ONLY 语句确保取得一致时间点的数据,默认值为n,当设置为y时,所有被导出表会在同一个事物内完成导出。从而确保取得一致时间点的数据,当设置该选项为n时,每个被导出表会使用独立事物导出。注意,当多出数据库时,为了避免snapshot too old 错误,不要讲选项consistent设置为y。(以为如果设置y时,就只有一个很长的事务)

exp scott/tiger tables=dept,emp  file=a.dmp   consistent=y


4)CONSTRAINTS : 用于指定是否要导出导入表的约束,默认值为y。当设置选项为y时,会导出导入表的约束;当设置该选项为n时,不会导出表的约束。示例如下:

exp scott/tiger  tables = dept,emp  file=a.dmp  constranints= n

imp scott/tiger  file = a.cmp  constraint=n


5.1)DIRECT: 用于指定是否使用直接导出方式,默认值为n,当设置该选项为y时,会采用直接导出方式;当设置该选项为n时,会采用常规导出方式。注意,直接导出速度要优于常规导出,但要求客户端和服务器端的字符集必须完全一致。示例如下:

exp scott/tiger  tables = demp,emp  file=a,dmp  direct = y


5.2)DATAFILES :(只imp) 当设置TRANSPORT_TABLESPACE为Y时,该选项用于指定要搬移到目标数据库的数据文件列表。 示例如下:

imp  ‘sys/admin as  sysdba’  TRANSPORT_TABLESPACE= Y DATAFILES= 'g:\test\tools01.dbf'  TTS_OWNERS = RMAN   FROMUSER = RMAN  TOUSSER= SYSTEM


5.3)DESTROY : (只imp)该选项用于指定在导入时是否要覆盖已经存在的数据文件,默认值为n。当设置该选项为y时,导入时会覆盖已经存在的数据文件;当设置该选项为n时,如果存在同名文件,则导入失败并显示错误信息。示例如下:

imp system / manager  full= y   file = a.dmp  destroy = y


6) FEEDBACK :(只exp)  该选项用于指定根据导出行数显示导出进度框,默认值为0.如果设置为10,那么没倒出10行就显示一个圆点 “.” 示例:

exp scott/tiger  TABLES=dept ,emp  FILR= a.dmp  FEEDBACK=10 


7)FILE:  指定导出文件名(导入操作需要使用的转储文件名),默认名称为expdat.dmp。示例如下:

exp  scott/tiger  TABLES=dept ,emp FILE= a.dmp

imp  scott/tiger   file=a.dmp  tables= emp


8)FILESIZE : 用于指定导出文件的最大尺寸,如果不指定filesize选项,则所有对象和数据会被存放到一个导出文件中。通过指定filesize 选项,可以讲数据库对象分布到多个导出文件中,(如果数据库对象数据被分不到多个导出文件中,那么在导入时必须制定filesize选项)示例如下:

exp scott/tiger  TABLES= dept,emp   FILE=a1.emp , a2.dmp  FILESIZE = 10240

imp scott/tiger  file=a1.dmp ,a2.dmp  tables=dept,emp  filesize = 10240


9) FLASHBACK_SCN :用于指定导出导入特定scn时刻的表数据,注意FLASHBACK_SNC 和 FLASHBACK_TIME 不能同时使用,示例:

exp   system/manager  TABLES= scott.dept ,scott.emp  FILE = a.dmp  FLASHBACK_SCN = 385823;

impdp scott/tiger directory = dump flashback_scn = scn_number network=db_link


10)FLASHBACK_TIME :用于指定导出导入特征时间点的表数据。注意,FLASHBACK_TIME 和 FLASHBACK_SCN 不能同时使用。 示例:

exp system/manager tables= scott.dept, scott.emp  FILE = a.dmp  FLASHBACK_TIME = "to_timestamp('2012-05-12 14:35:24 ' , ' yyyy-mm-dd hh24:mi:ss')"

impdp scott/tiger directory = dump  FLASHBACK_TIME = "to_timestamp('2012-05-12 14:35:24 ' , ' yyyy-mm-dd hh24:mi:ss')"


10)FROMUSER: (只imp)该选项用于指定从导出文件中摘取并导入特定用户的对象。注意,当使用fromuser选项导入其他方案对象时,要求用户必须具有IMP_FULL_DATABASE角色或者dba角色。示例如下:

imp  system/manager  file=full.dmp  fromuser= scott  tables=dept,emp


11) FULL :用于指定数据库模式导出,其默认值为N,当设置该选项为y时,会导出除了sys外所有其他方案的对象。注意,当执行数据库导出时,要求数据库用户必须有exp_full_database 角色或dba角色 ;那么导入该文件时,用于指定导入转储文件的所有内同,默认值为y,当设置该选项为y时,会将导出文件的所有内同导入到数据库中。示例如下:

exp  scott/tiger  DIRECTORY= dump  FILE= full.dmp  FULL = y

imp  system/manager  file = ful.dmp   full= y 


11) GRANTS:(只exp) 该选项用于指定是否要导出导入对象权限信息,默认值为y,当设置该选项为y时,会导出导入与对象权限相关的对象权限信息;当设置为n时,不会导出导入与对象相关的对象权限信息,示例如下:

exp scott/tiger  tables=emp  file= a.dmp  grants= n

imp   scott/tiger  tables=emp  file= a.dmp  grants= n


12) HELP :用于指定是够显示exp命令行或导入选项的帮助信息,其默认值为n,当设置选项为y时,会显示emp命令行选项的帮助信息。示例如下:

exp help = y

impdp help = y


13。1)INDEXS : 用于指定是否要导出导入与表和簇相关的索引,默认值为y。当设置该选项为y时,会到处表和簇的索引;当设置该选项为n时,不会导出表和簇的索引。(当n时,主键对应的唯一键索引会被恢复,这是为了保证数据插入的完整性)示例:

exp  scott/tiger tables= emp  FILE = a.dmp  INDEXS = N

imp  scott/tiger tables= emp  FILE = a.dmp  INDEXS = N


13.2)INDEXFILE: (只imp)该选项用于指定生成存放索引键建立语句的文件名称。注意,当使用该选项时,不会导入对象数据到数据库,示例:

imp scott/tiger  file = a.dmp  tables=emp  indexfile= index.sql


14) IGNORE: (只imp)指定是否要忽略对象建立错误信息,默认值为n(即,如果有此表存在,就不执行此表的恢复插入)。

当设置该选项为y时,如果对象已经存在,那么会忽略对象建立的错误,也就是说不执行create table 操作,直接将数据插入表当中,如果出现约束冲突,出错的记录不会插入到表,但是合法的记录会插入到表;

当设置该选项为n时,如果对象已经存储在,会显示建立错误信息。不会讲数据插入到此表中,继续执行其他表的恢复。。。示例:

imp  scott/tiger FILE = a.dmp  tables= emp  ifnore=y 


15) LOG: 用于指定导出导入日志文件的名称,默认默认情况下不会生成导出日志文件。示例如下:

exp  scott/tiger  tables =emp  FILE= a.dmp  log = a.log

imp scott/tiger    tables =emp  FILE= a.dmp  log = imp.log


16) OBJECT_CONSISTENT: 用于指定是否要基于对象级设置只读事务导出,默认值为n,当设置该选项为y时,会基于每个对象设置一个只读事务,然后导出相应对象的数据,注意,该选项与consistent选项的区别。示例如下:

exp scott/tiger  file=a.dmp  ohject_consistent=y

 

17)OWNER : 用于指定用户导出模式。注意,普通用户只能导出其自身方案,如果要导出其他用户方案,则要求用户必须具有EXP_FULL_DATABASE 或则dba角色。示例如下:

exp system/manager  owner = scott  file=a.dmp


18 ) PARFLE : 用于指定导出导入工具要使用的参数文件名,当使用 emp/IMP工具导出导入数据时,可以将命令行选项放到参数文件中,然后在导出导入时调用该参数文件。参数文件(parm.txt) 示例如下:

TABLES = DEMP , EMP

INDEXES = N

CONSTRAINTS = N

GRANTS=N

FILE= a.dmp

 建立了导出导入参数文件后,为了在命令行使用该参数文件,需要制定parafile选项。示例如下:

exp  scott/tiget  PARFILE = parm.txt

imp   scott/tiget  PARFILE = parm.txt


19 ) QUERY 用于指定where条件子句,从而导出表的部分数据。注意,当使用直接导出方式时,不能使用该选项。示例:

exp scott/tiger  tables= emp query= 'where  deptno=10'


20.1) RECORDLENGTH : 该选项用于指定文件记录的长度,默认值问buffer 选项的值,当需要将导出文件传送到不同的os平台时,可能需要设置该选项。注意,该选项的值不能超过64K,示例如下:

exp scott/tiger  TABLES= emp  FILE=a.dmp  recordlength = 4096

imp scott/tiger  TABLES= emp  FILE=a.dmp  recordlength = 4096


20.2)RESUMABLE: 该选项用于指定是否需要激活“空间继续分配” 特征,默认值为n。为了使用该选项resumable_name和 resumable_timeout,必须将该选项设置为y,示例如下:

exp system/manager  tables=scott.emp  file=a.dmp  resumable=y

imp  system/manager  tables=emp  fromuser= scott  touser = scott    file=a.dmp  resumable=y



20.3)RESUMABLE_NAME :该选项用于指定“空间继续分配”语句所对应的标示符,只有在将选项resumable设置为y之后,该选项才起作用。示例:

exp system/manager tables= scott.emp  file=a.dmp  resumable = y  resumable_name = wh1

imp  system/manager tables= emp  fromuser= scott  touser = scott   file=a.dmp  resumable = y  resumable_name = wh1


20.4)RESUMABLE_TIMEOUT:  该选项用于指定错误被修正的最大时间周期(单位:秒) 默认值为7200。如果在该时间范围内没有修正错误,则语句会被终止。注意,只有在将选项resumable设置为y之后,该选项设置才起作用。示例:

exp system/manager tables=scott.emp  file=a.dmp  resumable = y  resumable_tameout=600

imp  system/manager tables= emp  fromuser= scott  touser = scott   file=a.dmp  resumable = y  resumable_tameout=600


21.1)ROWS:该选项用于指定是否需要导出导入表行数据,默认值为y。当设置该选项为y时,会导出导入表行数据;当设置该选项为n时,只会导出导入表结构。而不会导出导入表数据。示例如下:

exp  scott/tiger full=y  tables=emp  file=a.dmp  rows=n

imp  scott/tiger full=y  tables=emp  file=a.dmp  rows=n


21.2)SHOW : (只imp)用于指定显示导出文件内容,默认值为n,当设置该选项为y时,会显示导出文件的内容。示例如下:

imp scott/tiger full=y  tables=emp  file=a.dmp  show=y


22.1) SKIP_UNUSABLE_INDEXS :(只适用于imp)用于指定在导入时是否需要跳过不可使用的索引,其默认值为n。

当选项为y时,会跳过不可用的索引。当设置该选项为n时,会导入不可用的索引。示例:

imp  scott/tiger full=y  tables=emp  file=a.dmp SKIP_UNUSABLE_INDEXES=Y


22.2) STATISTICS:  (在exp)该选项用于指定到过那个导入导出文件是生成优化统计信息的类型,默认情况下值为ESTIMATE,当设置该选项为estimate时,导入时会使用analyze  table estimate 语句生成统计信息;当设置该选项为compute时,导入时会使用analyze table compute语句生成统计信息;当设置选项为none时,导入时不会生成统计信息。示例如下:

exp  scott/tiger  tables=emp  file=a.dump  statistics=none

(在imp)用于指定在导入时数据库优化器需要执行的操作,默认值为always,当设置该选项为always时,总是导入优化统计信息;当设置该选项为none时,不会导入优化统计;当设置该选项为safe时,如果优化统计不存在问题,则导入优化统计,否则重新计算优化统计;当设置该选项为recalculate时,不会导入优化统计,而是在导入时,重新计算优化统计。示例如下:

imp  scott/tiger  file = a.dmp  tables=emp  statistics=none


22.1) STREAMS_CONFIGURATION:(只imp)该选项用于指定是否要导入流元数据(strean metadata) 默认值为y

当设置选项为y时,会导入流元数据;当设置选项为n时,不会导入流元数据。示例如下:

imp system/manager   file = full.dmp  full=y streams_configureation=y


23.2) TABLES :用于指定表模式导出导入,语法:

TABLES=[schema_name.] table_name [:partition_name] [ , ....] 

schema_name用于指定方案名,table_name用于指定要导出导入的表名,partition_name用于指定要导出导入的分区名。注意,用户可以直接导出其自身方案的表,单如果要导出其他方案的表,则要就用户必须具有exp_full_database角色或者dba角色 ,示例:

exp  system/manager  tables= scott  FILE= a.dmp 

imp  scott/tiger   tables= dept,emp  file=a.dmp


24) TABLESPACES  :指定要导出导入的表空间列表,语法如下:TABLESPACES= tablespace_name[ ,...]

当指定了该选项后,会到处该表空间上所有的表,使用tablespaces选项时,用户必须具有exp/imp_full_database角色或者dba角色,当导入时记得将full选项设为y。 示例:

exp system/manager   TABLESPACES= user01 FILE= a.dmp

imp  scott/tiger  FILE= a.dmp TABLESPACES= user01 full = y


25)TOID_NOVALIDATE:该选项用于指定当导入对象表时要排除校验的对象类型。默认情况下,当导入对象表时,会比较已存在的对象类型标示符(toid)与导出文件的对象类型标示符是否匹配,如果toid不匹配,则不会导入表,在某些情况下,你可能不希望校验特定对象类型,(例如使用cartrige建立的类型),此时可以使用该选项。示例如下:

imp scott/tiger  table=jobs toid_novalidate=typ1

26) TRANSPORT_TABLESPACES 用于指定是否要导出导入表空间的元数据,默认值为n,当设置该选项为y时,会导出特定表空间的元数据;当设置该选项为n时,不会导出表空间的元数据。注意,当使用teansport_tablespace选项时,要求用户必须具有sysdba特权,并且表空间必须处于read only 状态。示例如下:

exp   USERID=' sys/admin as sysdba'  TABLESPACE= user01  FILE = a.dmp  TRANSPORT_TABLESPACE =y


imp   USERID=' sys/admin as sysdba'    TRANSPORT_TABLESPACE =y  DATAFILES='g:\test\tools01.dbf'   TTS_OWNER= TMAN FROMUSER= RMAN TOUSERE= SYSTEM


27) VERSION : 用于指定被导出对象的数据库版本,其默认值为COMPARIBLE 语法如下:

VERSION = {COMPATIBLE |LATEST | version_string }   当设置该数据项为COMPATIBLE时,会根据初始化参数COMPATIBLE生成对象元数据; 当设置该参数为LATEST 时,会根据数据库的实际版本生成对象元数据;version_string 用于指定数据库版本字符串,示例如下:

expdp scott/tiger  DIRECTORY = dump  DUMPFILE = c.dmp   VERSION = latest

impdp scott/tiger  DIRECTORY = dump  DUMPFILE = c.dmp   VERSION = latest


25.1)TRIGGERS : 用于指定是否要导出触发器,默认值为y,当设置该选项为y时,会到处触发器;当设置选项为n时,不会导出触发器。示例如下:

exp  scott/tiger tbales= emp tile = a.dmp  triggers=n


25.2)TTS_FULL_CHECK: 用于指定是否检查被搬移表空间集合的关联关系,默认值为n,当设置该选项为y时,导出工具会检查表空间之间的完整关联关系,如果表所在的表空间或其索引所在的表空间只有一个表空间被搬移,则将会显示错误信息;当设置该选项为n时,导出工具只会检查单独依赖,如果要搬移索引所在的表空间,当未搬移表所在的表空间,则会系那是错误信息,而如故要搬移表所在的表空间,未搬移索引所在的表空间,则不会显示错误信息。示例如下:

exp USERID= 'sys/admin as sysdba' tbalespaces=user02 transport_tablespace=y TTL_FULL_CHECK=Y;


25.3)TTS_OWNERS: 当设置transport_tablespace=y 时,该选项用于列出拥有被搬移表空间数据的数据库用户。


25.4) USERID. 该选项用于指定执行导出导入操作的用户名,口令和连接字符串。注意,当以特权用户身份导出导入时,必须用单引号引住:(如:userid=‘sys/admin as sysdba’);另外,如果userid是exp之后的第一个选项,则可以省略userid字符串,示例如下:

exp  scott/tiger TABLES=emp FILE= a.dmp 

imp scott/tiger tables=emp  file=a.dmp


3、调用 exp/imp

1.1、导出表:导出表是指将一个或者多个表的数据结构和数据存储到os文件中,导出表是通过使用tables选项来完成的。普通用户只能导出自身方案表,如果要导出其他方案表,则要求用户必须具有exp_full_database 角色或 dba角色。另外,当导出表时,默认情况下会导出相应的表上所有索引、触发器、约束。下面以system用户和scot用户分别导出scott.dept和scott.emp 表为例。说明导出表的方法。

exp  system/manager@demo   tables=scott.dept , scott.emp  file=tab1.dmp

exp  scott/tiger  TABLES= dept,emp file=tab2.cmp  


1.2、导入表:当导入表时,既可以将表导入到源方案中,也可以将表导入到其他方案中,注意如果要将表导入到其他方案,则要求用户必须j具有imp_full_database角色dba角色。如果将表导入到其他用户中,则需要制定fromuer,和touser选项:

imp   scott/tiger@demo  file=tab2.dmp  tables=dept,emp

imp  system/manager@demo  file=tab2.dmp tables=dept , emp  fromuser= scott  touser =  system


2.1、导出方案:是指将一个或多个方案的所有对象结构及数据  存储到os文件中,导出方案是通过owner 选项来完成的。普通用户只能导出自身方案。如果要导出其他方案,则要求用户必须有dba角色,或EXP_FULL_DATABASE角色,当用户要导出其自身方案的所有对象时,可以不指定owner选项,下面以system用户和scott用户导出scott方案的所有对象为例,说明导出方案的方法。示例如下:

exp system/manager@demo owner = scott  file = schema1.dmp 

exp scott/tiger@demo  file=schema2.dmp


2.2、导入方案:普通用户只能导入自身方案,并且在导入时只需要提供userid和file选项即可。如果要将一个方案的所有对象导入其他方案,则要求用户必须有dba角色,或IMP_FULL_DATABASE角色。并且提供fromuer,和touser选项:

imp scott/tiger directory@demo   file=schema2.dmp

imp  system/manager directory@demo  file=schema2.dmp  fromuser = scott    touser= scott


4.1、导出数据库:导出数据库是指将数据库的所有对象及数据存储到os文件中,导出数据库是通过full选项来完成的,导出数据库要求用户必须具有dba角色或exp_full_database角色,注意当导出数据库时,不会导出sys方案的任何对象,下面以导出demo数据库的所有对象为例,说明导出数据库的方法。示例如下:

exp  system/manager@demo   full = y file = full.dmp 


4.2、导入数据库:要求用户必须具有imp_full_database 角色或者dba角色。注意,因为在导出文件中没有包含sys方案的对象,所以在导入时也不会包含sys方案的对象。示例如下:

imp  system/manager@demo  file = full.dmp      full=y.


4、搬移表空间

同过查询动态性能视图v$transportable_platform可以显示在哪些os平台之间可以搬移表空间。

SQL> select platform_name from v$transportable_platform;

搬移表空间可以使用emp/imp工具,还可以使用expdp/impdp更快。但是搬移表空间有以下限制:

1)要求源数据库和目标数据库必须具有相同的数据库字符集和民族字符集,通过查询数据字典视图NLS_DATABASE_PARAMETERS,dba用户可以取得数据库字符集(NLS_CHARACTERSET)和民族字符集(NLS_NCHAR_CHARARCTERSET)

2)不能将表空间搬移到具有同名 表空间的目标数据库中,在10g之前,如果在目标数据库中存在同名表空间。那么表空间将无法搬移。但从10g开始,通过使用alter tablespace rename 命令可以修改元数据库表空间或目标数据库表空间的名称。

3)不能搬移system表空间和sys用户对象所在的表空间。

4)如果要将表空间搬移到其他os平台上,则必须将初始化参数compatible设置为10.0以上。


下面以在windows平台上将demo数据库的user02表空间搬移到orcl数据库中为例,说明搬移表空间的方法,具体操作步骤如下:

1、确定自包含表空间集合,自包含表空间集合是指具有关联关系的表空间集合。当搬移表空间是,如果两个表空间之间存在关联关系,则必须同时搬移这两个表空间。(就像一个表空间a含有表,另个一表空间b含有a表空间表的索引)。发生以下情况时,我们说违反了自包含表空间集合的规则,也就是不能搬移:

表空间集合含有sys方案对象。

表空间集合包含了索引所在的表空间,但是没有包含索引基表所在的表空间。

表空间集合没有包含分区表的所有分区。

表空间集合包含了表所在的表空间,但是没有包含其lob列所在的表空间。

在搬移之前,为了确保特定的表空间集合可以被搬移,必须先检查表空间集合是否为自包含的,通过执行包:DBMS_TTS的过程TRANSPORT_SET_CHECK可以完成这项任务,当执行 了该过程之后,系统会将违反自包含表空间集合规则的信息写入到临时表transport_set_violations 。当查询该临时表时,如果没有返回任何信息,则说明表空间集合是自包含的,否则会返回违反自包含表空间集合规则的详细信息。注意,执行DBMS_TTS包要求用户必须具有EXECUTE_CATALOG_ROLE角色,示例:

SQL> conn  system/manager 

SQL> execute sys.dbms_tts.tranport_set_check('user02' , true)

SQL > select * from sys.transport_set_violations  ——此时会显示一些违反自包含规则的信息。

为了确保成功执行搬移,可以删除其中的索引,或者将索引移动到其他表空间。

SQL > drop  index scott.dept_emp_idx; ——将产生冲突的索引删除。


2、生成要搬移的表空间集合。

首先将所有要搬移的表空间转变为只读状态,以确保其内容不会发生改变,示例:

SQL> alter tablespace user02  read only;

这时就可以使用数据泵导出工具搬移表空间集合了。注意,当生成要搬移的表空间集合时,要求用户必须具有emp_full_database角色或者dba角色。示例如下:

SQL > HOST exp ' sys/oracle@demo as sysdba' tranport_tablespaces=y  tablespaces= user02 file = a.dmp 


3、传送转储文件和数据库文件到目标数据库。在生车了转储文件之后,可以使用任何拷贝工具(如cp命令等)将转储文件和自包含表空间集合的数据文件传送到目标数据库所在的机器的合适位置。本例假定demo数据库和orcl数据库在同一台机器上,所以在这里只是拷贝数据文件到相应的目录。示例:

SQL> host copy d:\demo\user02.dbf

 d:\oracle\oradata\orcl\user02.dbf


4、插入表空间到目标数据库:

在将这两个文件传送到目标数据库之后,就可以使用数据泵导入工具将表空间user02插入到目标数据库了。注意,插入表空间到数据库要求用户必须具有imp_full_database角色或者dba角色;另外,如果目标数据库有同名表空间,则需要执行alter tablespace rename命令修改表空间名称,因为demo数据库的标准块尺寸为4K,orcl数据库的标准块支持为8K,所以需要在orcl数据中分配非标准数据库高速缓存DB_4K_CACHE_SIZE,然后才能将表空间user02插入到orcl数据库,具体示例如下:

SQL> alter system set db_cache_size=20M;

SQL> alter system set db_4k_cache_size= 4M;

SQL.> HOST Imp ' sys/oracle@orcl as sysdba '  transport_tablespace=y file=a.dmp   datafiles=d:\oracle\oradata\orcl\user02.dbf  remap_schema= scott: hr

 在执行了以上命令之后,就将user02表空间插入到目标数据库orcl中 了,应为user02表空间处于只读状态,所以为了在该表空间上执行dml和ddl操作,还应该将表空间转变为可续写状态:

SQL> alter tablespace user02 read  write;

上一篇:做大数据领域的“福尔摩斯”,挖掘数据关系的真正价


下一篇:java匿名类和匿名对象及this的其他用法