• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 實現Oracle數據庫復制

    發表于:2007-07-13來源:作者:點擊數: 標簽:
    我們經常希望把各地的數據入庫后進行統一的應用?,F在可以用復制技術來解決這個問題。但實現數據庫復制也是要有一些條件的。 首先,數據庫要具備高級復制功能(用system身份登錄數據庫,查看voption視圖,如果其中Advanced replication為TRUE,則支持高級復

    我們經常希望把各地的數據入庫后進行統一的應用?,F在可以用復制技術來解決這個問題。但實現數據庫復制也是要有一些條件的。

    首先,數據庫要具備高級復制功能(用system身份登錄數據庫,查看v$option視圖,如果其中Advanced replication為TRUE,則支持高級復制功能;否則不支持)。

    如果具備高級復制功能,數據庫要進行一些參數初始化。

    db_domain = test.com.cn 指明數據庫的域名(默認的是WORLD),這里可以用您公司的域名;global_names = true 它要求數據庫鏈接(database link)和被連接的數據庫名稱一致,現在全局數據庫名:db_name+”.”+db_domain ;

    跟數據庫job執行有關的參數:

    job_queue_processes = 1;

    job_queue_interval = 60;

    distributed_transactions = 10;

    open_links = 4

    第一行定義SNP進程的啟動個數為n。系統缺省值為0,正常定義范圍為0~36,根據任務的多少,可以配置不同的數值。第二行定義系統每隔N秒喚醒該進程一次。系統缺省值為60秒,正常范圍為1~3600秒。事實上,該進程執行完當前任務后,就進入睡眠狀態,睡眠一段時間后,由系統的總控負責將其喚醒。如果修改了以上這幾個參數,需要重新啟動數據庫以使參數生效。

    做完了初步的準備,我們來實現數據庫同步復制。

    假設在Inte.net上有兩個數據庫:一個叫中國(China),一個叫日本(Japan)。

    具體配置如下:

    數據庫名:China、Japan

    數據庫域名 test.com.cn

    數據庫sid號 China、Japan

    Listener端口號 1521

    服務器ip地址 10.1.0.100 10.1.0.200

    確認兩個數據庫之間可以互相訪問,在tnsnames.ora里設置數據庫連接字符串。

    中國這邊的數據庫連接字符串是以下的格式:

    Japan =

    (DESCRIPTION =

    (ADDRESS_LIST =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.200)(PORT = 1521))

    )

    (CONNECT_DATA =

    (SERVICE_NAME = Japan)

    )

    )

    運行$tnsping Japan,出現以下提示符:

    Attempting to contact (ADDRESS=(PROTOCOL=TCP)(HOST=10.1.1.200)(PORT=1521))

    OK(n毫秒)

    表明中國數據庫可以訪問日本數據庫。在日本那邊也同樣配置,確認$tnsping China 是通的。

    改數據庫全局名稱,建公共的數據庫鏈接。

    用system身份登錄China數據庫

    SQL>alter database rename global_name to China.test.com.cn;

    用system身份登錄Japan數據庫:

    SQL>alter database rename global_name to Japan.test.com.cn;

    用system身份登錄China數據庫。

    SQL>create public database link Japan.test.com.cn using 'Japan';

    測試數據庫全局名稱和公共的數據庫鏈接。

    SQL>select * from global_name@Japan.test.com.cn;

    返回結果為Japan.test.com.cn就對了。

    用system身份登錄Japan數據庫:

    SQL>create public database link China.test.com.cn using 'China';

    測試數據庫全局名稱和公共的數據庫鏈接。

    SQL>select * from global_name@China.test.com.cn;

    返回結果為China.test.com.cn就對了。

    建立管理數據庫復制的用戶repadmin,并賦權。

    用system身份登錄China數據庫:

    SQL>create user repadmin identified by repadmin default tablespace users temporary tablespace temp;

    SQL>execute dbms_defer_sys.register_propagator('repadmin');

    SQL>grant execute any procedure to repadmin;

    SQL>execute dbms_repcat_admin.grant_admin_any_repgroup('repadmin');

    SQL>grant comment any table to repadmin;

    SQL>grant lock any table to repadmin;

    同樣用system身份登錄Japan數據庫,運行以上的命令,管理數據庫復制的用戶repadmin,并賦權。

    在數據庫復制的用戶repadmin下創建私有的數據庫鏈接。

    用repadmin身份登錄China數據庫。

    SQL>create database link Japan.test.com.cn connect to repadmin identified

    在Japan數據庫那邊同樣運行以上①,②,③。

    在Japan數據庫scott用戶下創建主關鍵字的序列號,范圍避免和China的沖突。

    SQL> create sequence dept_no increment by 1 start with 45 maxvalue 99 cycle nocache;

    在Japan數據庫scott用戶下插入初始化數據。

    SQL>insert into dept values (dept_no.nextval,'sales','chicago');

    SQL>insert into dept values (dept_no.nextval,'operations','boston');

    SQL>commit;

    創建要復制的組scott_mg,加入數據庫對象,產生對象的復制支持。

    用repadmin身份登錄China數據庫,創建主復制組scott_mg:

    SQL> execute dbms_repcat.create_master_repgroup('scott_mg');

    在復制組scott_mg里加入數據庫對象:

    SQL>execute dbms_repcat.create_master_repobject(sname=>'scott',oname=>'dept', type=>'table',use_existing_object=>true,gname=>'scott_mg');

    參數說明:

    sname 實現數據庫復制的用戶名稱;

    oname 實現數據庫復制的數據庫對象名稱;

    type 實現數據庫復制的數據庫對象類別;

    use_existing_object true表示用主復制節點已經存在的數據庫對象;

    gname 主復制組名;

    對數據庫對象產生復制支持:

    SQL>execute dbms_repcat.generate_replication_support('scott','dept','table');

    確認復制的組和對象已經加入數據庫的數據字典:

    SQL>select gname, master, status from dba_repgroup;

    SQL>select * from dba_repobject;

    創建主復制節點:

    用repadmin身份登錄China數據庫,創建主復制節點:

    SQL>execute dbms_repcat.add_master_database

    (gname=>'scott_mg',master=>'Japan.test.com.cn', use_existing_objects=>true, copy_rows=>false, propagation_mode => 'asynchronous');

    參數說明:

    gname 主復制組名;

    master 加入主復制節點的另一個數據庫;

    use_existing_object true表示用主復制節點已經存在的數據庫對象;

    copy_rows false表示第一次開始復制時不用和主復制節點保持一致;

    propagation_mode 異步地執行;

    確認復制的任務隊列已經加入數據庫的數據字典:

    SQL>select * from user_jobs;

    使同步組的狀態由停頓(quiesced )改為正常(normal):

    用repa



      

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>