1. 源与目标数据库初始化参数设置
注意:要复制的表空间中对象所属schema在目标端也必须存在,因此这里,目标端也需要创建(例如:member)这个用户。
2. 创建相关的操作目录
首先在源端创建数据泵文件中转目录:
JSSWEB> conn strmadmin/strmadmin
JSSWEB> create directory mydt _source as 'c:\learnoracle\jssweb';
另外,源端还需要创建一个directory对象,指向到要复制的表空间对应数据文件所在路径:
JSSWEB> create directory dfpath as 'c:\oradata\jssweb';
提示:如果表空间对应的数据文件在多个不同路径下,那就得创建多个directory,这个非常重要,maintain_tts在执行时需要读取这部分信息复制数据文件。
目标端创建创建数据文件目录:
JSSSTR> conn strmadmin/strmadmin
已连接。
JSSSTR> create directory mydt _dest as 'C:\oradata\jssstr';
目录已创建。
注意,要确认c:\learnoracle\jssweb和C:\oradata\jssstr目录在各自操作系统中确实存在,不然后面执行expdp/impdp时会报错。
3. 设置归档路径(源数据库操作) - 如果采用下游捕获的方式
sql> alter system set log_archive_dest_2=¨service=auxi.jss.cn lgwr async noregister¨;
4. 检查是否包含表空间
sql> set serveroutput on
sql> exec sys.dbms_tts.transport_set_check('scott',true,true);
sql> select * from sys.transport_set_violations;
返回为空,说明没有问题。
5. 执行脚本
ORCL> declare
2 t_names dbms_streams_tablespace_adm.tablespace_set; 3 begin 4 t_names(1):='users'; 5 dbms_streams_adm.maintain_tts( 6 tablespace_names=>t_names, 7 source_directory_object=>'orcldump', 8 destination_directory_object=>'auxidump', 9 source_database=>'orcl.jss.cn', 10 destination_database=>'auxi.jss.cn', 11 perform_actions=>true, 12 bi_directional=>false, 13 include_ddl=>true); 14 end; 15 /