Streams实践之多表复制

1. 源与目标数据库初始化参数设置  

   Streams那些事之初始化参数设置

2. 在源和目标数据库创建目录

在源数据库orcl上(必须先手工创建c:\learnoracle\backup\orcl\目录)
SQL>conn strmadmin/strmadmin;
SQL>create directory orcldump as 'c:\learnoracle\backup\orcl\';

SQL>conn /as sysdba
SQL>grant read,write on directory  orcldump to strmadmin,system;
在目标数据库auxi上(必须先手工创建c:\learnoracle\backup\auxi\目录)
SQL>conn strmadmin/strmadmin;
SQL>create directory auxidump as 'c:\learnoracle\backup\auxi\';

SQL>conn /as sysdba
SQL>grant read,write on directory auxidump to strmadmin,system;

3. 执行DBMS_STREAMS_ADM.MAINTAIN_TABLES 过程

ORCL> declare
  2  tbls dbms_utility.uncl_array;
  3  begin
  4  tbls(1):='scott.emp';
  5  tbls(2):='scott.dept';
  6  dbms_streams_adm.maintain_tables(
  7  table_names=>tbls,
  8  source_directory_object=>'orcldump',
  9  destination_directory_object=>'auxidump',
 10  source_database=>'orcl.jss.cn',
 11  destination_database=>'auxi.jss.cn',
 12  perform_actions=>true,
 13  dump_file_name=>'export_tbls.dmp',
 14  log_file=>'export_tbls.log',
 15  bi_directional=>false,
 16  include_ddl=>true,
 17  instantiation=>dbms_streams_adm.instantiation_table);
 18  end;
 19  /

参数说明:
DBMS_UTILITY.UNCL_ARRAY:数组变量,执行MAINTAIN_TABLES时指定的table_names所对应的表名。
Table_names :没啥好说的,就是上面数组变量中所对应的表名
source_database : 源数据库上创建的目录(directory)
destination_database :  目标数据库上创建的目录(directory)
source_datebase :连接到源端数据库的数据库链 。
destination_database :连接到目标端数据库的数据库链 。
perform_actions :如果为true,则过程直接执行。如果为false,则过程并不直接生成复制环境,而是创建复制环境的配置脚本,由dba手动执行(或修改编辑后执 行),因此必须同时设置script_name和script_directory_object两参数,指定脚本输出路径和脚本文件名,不然过程执行将 直接报错。
bi_directional :true时表示启用双向复制。false表示源库向目录库单向复制。
include_ddl :是否同步ddl语句 。
instantiation:该参数用来指定是否执行实例化,有如下几种值:
DBMS_STREAMS_ADM.INSTANTIATION_TABLE :通过expdp/impdp初始化数据,并在目标端导入数据时执行实例化,默认情况下即是该值。
DBMS_STREAMS_ADM.INSTANTIATION_TABLE_NETWORK :impdp直接通过网络传输数据而不生成dmp文件。在导入数据时执行实例化。
DBMS_STREAMS_ADM.INSTANTIATION_NONE :不执行实例化,该属性值仅当perform_actions参数设置为false时有效。

 

这样便完成了多表单向复制(本地捕获)的操作了,执行的这个过程主要包括以下几步
1、源数据上2个表的导出
2、将导出的表传到目标数据库并导入
3、源和目标数据库流队列的创建
4、源数据上的捕获进程与传播进程的创建与启动
5、目标数据库上的应用进程创建与启动
6、目标数据库上设置应用进程开始执行的SCN

原文地址:https://www.cnblogs.com/landexia/p/2656949.html