亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    實(shí)例詳解通過LogMiner實(shí)現(xiàn)Oracle數(shù)據(jù)同步遷移

    本篇文章給大家?guī)砹岁P(guān)于Oracle的相關(guān)知識(shí),其中主要介紹了關(guān)于通過LogMiner實(shí)現(xiàn)Oracle數(shù)據(jù)同步遷移的相關(guān)問題,下面就來介紹一下怎么實(shí)現(xiàn)oracle的數(shù)據(jù)同步,希望對(duì)大家有幫助。

    實(shí)例詳解通過LogMiner實(shí)現(xiàn)Oracle數(shù)據(jù)同步遷移

    推薦教程:《Oracle教程》

    寫在前面

    最近在研究如何實(shí)現(xiàn)Oracle數(shù)據(jù)庫之間的數(shù)據(jù)同步,網(wǎng)上的資料確實(shí)比較少。最好用的Oracle數(shù)據(jù)庫同步工具是:GoldenGate ,而GoldenGate是要收費(fèi)的。那么還有什么好的辦法來同步Oracle的數(shù)據(jù)嗎?沒錯(cuò),就是使用LogMiner來實(shí)現(xiàn)Oracle數(shù)據(jù)同步遷移。

    實(shí)現(xiàn)過程

    1.創(chuàng)建目錄

    在服務(wù)器上創(chuàng)建/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR目錄來存儲(chǔ)數(shù)據(jù)庫的字典信息,如下所示。

    mkdir -p /home/oracle/tools/oracle11g/oradata/orcl/LOGMNR

    2.配置LogMiner

    以oracle用戶身份登錄服務(wù)器,并以DBA身份登錄Oracle數(shù)據(jù)庫,如下所示。

    sqlplus /nolog conn  / as sysdba

    接下來,創(chuàng)建字典文件夾配置,如下所示。

    CREATE DIRECTORY utlfile AS '/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR';alter system set utl_file_dir='/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR' scope=spfile;

    注意:由于utl_file_dir只存在于文件當(dāng)中,所以scope是以文件方式"spfile"寫入,而不是both。

    3.開啟日志追加模式

    alter database add supplemental log data;

    只有開啟后才能看到DML操作記錄,否則只能看見DML

    4.重啟數(shù)據(jù)庫

    SHUTDOWN IMMEDIATE;  STARTUP;

    5.創(chuàng)建數(shù)據(jù)同步用戶

    創(chuàng)建數(shù)據(jù)同步用戶,如果已經(jīng)有可以跳過,直接賦予權(quán)限。

    create user SYNC identified by SYNC;  #如果存在用戶,則不需要再次創(chuàng)建,直接授權(quán)即可GRANT CONNECT,RESOURCE,DBA,EXECUTE_CATALOG_ROLE TO SYNC;

    6.創(chuàng)建數(shù)據(jù)字典

    切換到要同步數(shù)據(jù)的用戶,以DBA身份登錄,創(chuàng)建數(shù)據(jù)字典文件,如下所示。

    conn SYNC/SYNC@orcl as sysdba;  EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR');

    創(chuàng)建數(shù)據(jù)字典的命令也可以通過Java代碼來實(shí)現(xiàn),如果使用Java代碼實(shí)現(xiàn)的話,首先可以通過JDBC連接到Oracle數(shù)據(jù)庫,然后執(zhí)行如下命令。

    BEGIN dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR');  END;

    7.加入需要分析的日志文件

    此步驟可以在Oracle命令行執(zhí)行,也可以使用Java代碼實(shí)現(xiàn)。

    使用SQL語句實(shí)現(xiàn)如下所示。

    EXECUTE dbms_logmnr.add_logfile(logfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/REDO01.LOG',options=>dbms_logmnr.NEW);  EXECUTE dbms_logmnr.add_logfile(logfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/REDO02.LOG',options=>dbms_logmnr.ADDFILE);  EXECUTE dbms_logmnr.add_logfile(logfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/REDO03.LOG',options=>dbms_logmnr.ADDFILE);

    使用Java代碼分析時(shí),使用的SQL語句如下所示。

    BEGIN   dbms_logmnr.add_logfile(logfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/REDO01.LOG',options=>dbms_logmnr.NEW);  dbms_logmnr.add_logfile(logfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/REDO02.LOG',options=>dbms_logmnr.ADDFILE);  dbms_logmnr.add_logfile(logfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/REDO03.LOG',options=>dbms_logmnr.ADDFILE);  END;

    8.查看正在使用的日志文件

    SELECT group#, sequence#, status, first_change#, first_time FROM V$log ORDER BY first_change#;

    status為CURRENT的為當(dāng)前正在使用的日志文件

    9.使用Lominer分析日志

    EXECUTE dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR/dictionary.ora');

    使用Java代碼分析時(shí),使用的SQL語句如下所示。

    BEGIN dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR/dictionary.ora'); END;

    10.查看分析結(jié)果

    SELECT sql_redo, sql_undo, seg_owner FROM v$logmnr_contents WHERE seg_name='EMP' AND seg_owner='SYNC';

    注意:視圖v$logmnr_contents中的分析結(jié)果僅在我們運(yùn)行過程’dbms_logmrn.start_logmnr’這個(gè)會(huì)話的生命期中存在,如果要查看新的日志,需要再重新加入分析日志文件、使用LogMiner分析。

    11.常見問題

    (1)如果出現(xiàn)“必須聲明標(biāo)識(shí)符 ‘SYS.DBMS_LOGMNR’”異常,則需要在創(chuàng)建用戶后,為用戶賦予EXECUTE_CATALOG_ROLE權(quán)限,如下所示。

    GRANT CONNECT,RESOURCE,DBA,EXECUTE_CATALOG_ROLE TO SYNC;

    (2)此時(shí)在查詢語句中需要為seg_owner指定相應(yīng)的用戶,例如,我這里使用SYNC用戶通過LogMiner進(jìn)行分析,則需要將seg_owner指定為SYNC用戶,如下所示。

    SELECT sql_redo, sql_undo, seg_owner FROM v$logmnr_contents WHERE seg_name='EMP' AND seg_owner='SYNC';

    推薦教程:《Oracle視頻教程》

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)