在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;