好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Oracle通過LogMiner實現數據同步遷移

Oracle通過LogMiner實現數據同步遷移

熱門標簽:汽車4s店百度地圖標注店 安陽企業電銷機器人供應商 電銷套路機器人 網貸外呼系統合法嗎 杭州網絡外呼系統運營商 地圖標注效果的制作 手機地圖標注門店 鶴壁電話機器人價格 地圖標注坐標圖標

寫在前面

最近在研究如何實現Oracle數據庫之間的數據同步,網上的資料確實比較少。最好用的Oracle數據庫同步工具是:GoldenGate ,而GoldenGate是要收費的。那么還有什么好的辦法來同步Oracle的數據嗎?沒錯,就是使用LogMiner來實現Oracle數據同步遷移。

實現過程

1.創建目錄

在服務器上創建/home/oracle/tools/oracle11g/oradata/orcl/LOGMNR目錄來存儲數據庫的字典信息,如下所示。

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

2.配置LogMiner

以oracle用戶身份登錄服務器,并以DBA身份登錄Oracle數據庫,如下所示。

sqlplus /nolog
conn / as sysdba

接下來,創建字典文件夾配置,如下所示。

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只存在于文件當中,所以scope是以文件方式"spfile"寫入,而不是both。

3.開啟日志追加模式

alter database add supplemental log data; 

4.重啟數據庫

SHUTDOWN IMMEDIATE; 
STARTUP; 

5.創建數據同步用戶

創建數據同步用戶,如果已經有可以跳過,直接賦予權限。

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

6.創建數據字典

切換到要同步數據的用戶,以DBA身份登錄,創建數據字典文件,如下所示。

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

創建數據字典的命令也可以通過Java代碼來實現,如果使用Java代碼實現的話,首先可以通過JDBC連接到Oracle數據庫,然后執行如下命令。

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

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

此步驟可以在Oracle命令行執行,也可以使用Java代碼實現。

使用SQL語句實現如下所示。

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代碼分析時,使用的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的為當前正在使用的日志文件

9.使用Lominer分析日志

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

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

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

10.查看分析結果

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

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

11.常見問題

(1)如果出現“必須聲明標識符 'SYS.DBMS_LOGMNR'”異常,則需要在創建用戶后,為用戶賦予EXECUTE_CATALOG_ROLE權限,如下所示。

GRANT CONNECT,RESOURCE,DBA,EXECUTE_CATALOG_ROLE TO SYNC; 

(2)當在查詢v$logmnr_logs時提示“表或視圖不存在”,是因為沒有查詢v$logmnr_logs的權限。此時在查詢語句中需要為seg_owner指定相應的用戶,例如,我這里使用SYNC用戶通過LogMiner進行分析,則需要將seg_owner指定為SYNC用戶,如下所示。

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

以上就是Oracle通過LogMiner實現數據同步遷移的詳細內容,更多關于Oracle數據同步遷移的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • Oracle 日志挖掘(LogMiner)使用詳解
  • Oracle LogMiner的使用實例代碼
  • 理解和使用Oracle 8i分析工具LogMiner
  • 通過LogMiner實現Oracle數據庫同步遷移

標簽:南陽 柳州 河源 泰安 酒泉 銀川 焦作 梧州

巨人網絡通訊聲明:本文標題《Oracle通過LogMiner實現數據同步遷移》,本文關鍵詞  Oracle,通過,LogMiner,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle通過LogMiner實現數據同步遷移》相關的同類信息!
  • 本頁收集關于Oracle通過LogMiner實現數據同步遷移的相關信息資訊供網民參考!
  • 推薦文章