在Oracle中,類似于MySQL的binlog的機制是歸檔日志(Archive Log)和重做日志(Redo Log)
查詢歸檔日志狀態
SELECT log_mode FROM v$database;
– 輸出示例:
– LOG_MODE
– ARCHIVELOG (表示已開啟)
– NOARCHIVELOG (表示未開啟)
開啟歸檔日志
-
關閉數據庫并啟動到mount狀態
SHUTDOWN IMMEDIATE;
STARTUP MOUNT; -
啟用ARCHIVELOG模式
ALTER DATABASE ARCHIVELOG; -
打開數據庫
ALTER DATABASE OPEN; -
配置歸檔日志路徑和參數(確保目錄存在且有寫入權限)
ALTER SYSTEM SET log_archive_dest_1=‘LOCATION=/u01/archive_logs’ SCOPE=spfile; -
驗證歸檔路徑
SHOW PARAMETER log_archive_dest_1;
啟用補充日志(Supplemental Logging)
-
開啟主鍵補充日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS; -
啟用全補充日志
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
調整重做日志(Redo Log)配置
- 增加重做日志組和大小
ALTER DATABASE ADD LOGFILE GROUP 4 (‘/u01/redo04.log’) SIZE 200M;
ALTER DATABASE ADD LOGFILE GROUP 5 (‘/u01/redo05.log’) SIZE 200M;
授權用戶權限
配置Oracle用戶權限,確保Flink CDC使用的Oracle用戶具有以下權限:
GRANT CONNECT, RESOURCE TO username;
GRANT SELECT ANY TABLE TO username;
GRANT EXECUTE ON DBMS_LOGMNR TO username;
// 獲取歸檔日志的元信息
GRANT SELECT ON V_$ARCHIVED_LOG TO username;
// 查看當前數據庫的重做日志組狀態
GRANT SELECT ON V_$LOG TO username;
// 獲取所有重做日志文件的具體路徑和狀態
GRANT SELECT ON V_$LOGFILE TO username;
// 獲取數據庫級別的關鍵信息,用于日志解析的上下文管理
GRANT SELECT ON V_$DATABASE TO username;
重啟數據庫
SHUTDOWN IMMEDIATE;
STARTUP;