• 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

  • 相关阅读:
    Screen会话命令 Linux
    Recommender Systems中Yehuda Koren 和 Ma Hao的paper
    Matlab 程序结束后发送短信或者邮件
    Chrome浏览器在Windows 和 Linux下的键盘快捷方式
    KL距离,Kullback-Leibler Divergence
    PLSA及EM算法
    求具体矩阵的逆矩阵
    memory-based 协同过滤(CF)方法
    推荐方法总结
    SpringBoot和SpringCloud配置
  • 原文地址:https://www.cnblogs.com/landexia/p/2656949.html
Copyright © 2020-2023  润新知