一、配置Oracle
 要從 Oracle 數據庫獲取更改,需要多種數據庫配置。主要是下面的步驟:
需要進行以下配置:
存檔日志
重做日志
補充日志記錄
CDB 和 PDB 中的用戶和表空間/模式
連接設置日志歸檔
1)切換到oralce用戶,su - oracle;
2)創建數據需要的目錄,需要提前創建,否則啟用日志歸檔會報錯目錄不存在;
 mkdir /home/oracle/oracle-data
3)以DBA身份連接到數據庫,后續操作都是終端操作;
 sqlplus /nolog
 conn /as sysdba
4)啟用日志歸檔,(這里的db_recovery_file_dest歸檔文件夾必須存在);
 alter system set db_recovery_file_dest_size = 50G;
 alter system set db_recovery_file_dest = '/home/oracle/oracle-data' scope=spfile;
 shutdown immediate;
 startup mount;
 alter database archivelog;
 alter database open;
5)檢查日志歸檔是否開啟,"Database log mode: Archive Mode" ;
 archive log list;
6)設置數據庫啟用補充日志記錄;
 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
 
二、配置 Oracle:重做日志
  Oracle 的事務日志稱為重做日志。這些日志至關重要,因為它們在數據庫崩潰或介質故障時用于恢復到檢查點。不幸的是,Oracle 容器鏡像通常使用對 Debezium 沒有用的重做日志配置。
Debezium 的 Oracle 連接器有兩種日志挖掘策略。該策略控制連接器如何與 Oracle LogMiner 交互以及連接器如何接收架構和表更改。
重做日志目錄:數據字典將定期寫入重做日志,從而隨著時間的推移生成更高的歸檔日志。此設置可以跟蹤 DDL 更改,因此如果表的架構發生更改,這將是實現該目的的理想策略。
  當使用 redo_log_catalog 模式(默認)時,重做日志大小對于降低日志切換頻率至關重要。當發生日志切換時,LogMiner 會話將重新啟動,并在重做日志中重建數據字典。該字典由 LogMiner 讀回,并用于在會話重新啟動時跟蹤 DDL 更改,這可能會導致在填充字典表時出現輕微的初始會話延遲。總體而言,當重做日志足夠大以將數據字典寫入單個日志文件時,您將獲得更好的性能。
  Oracle 容器注冊表映像配置有 200MB 的重做日志大小。使用默認挖掘策略時,此默認大小太小,因此我們將對此進行調整,使日志使用 400MB 的大小。
當使用沒有多租戶安裝的 Oracle 時,使用 400MB 可能仍然稍小,因為在啟用多租戶時,根數據庫中存在大量基表,但可插拔數據庫中不存在這些基表。如果您要從至少沒有多租戶的 Oracle 環境中提取更改,請改用 500MB。
無論多租戶如何,這些值在您的生產環境中都應該更加重要。您的 DBA 將能夠使用 Oracle 的規模調整指南根據日志切換頻率和系統負載確定最佳值。
在運行 SQL*Plus 的終端中,執行以下命令:
ALTER DATABASE CLEAR LOGFILE GROUP 1;
ALTER DATABASE DROP LOGFILE GROUP 1;
ALTER DATABASE ADD LOGFILE GROUP 1 ('/opt/oracle/oradata/ORCLCDB/redo01.log') size 400M REUSE;
ALTER SYSTEM SWITCH LOGFILE;
三、配置 Oracle:補充日志記錄
Oracle 重做日志主要用于實例和介質恢復,因為這些操作所需的數據會自動記錄。默認情況下無法使用 LogMiner,因為 Oracle 不提供任何開箱即用的補充日志數據。由于 Debezium 依賴 LogMiner,因此必須至少啟用補充日志記錄,Debezium 才能為 Oracle 執行任何更改數據捕獲。
可以使用兩種不同的策略來設置補充日志記錄:
數據庫補充日志記錄
表補充日志記錄
為了讓 Debezium 與 LogMiner 交互并使用鏈接行和各種存儲安排,必須在最低級別啟用數據庫補充日志記錄。要啟用此級別,請在當前 SQL*Plus 終端中執行以下 SQL:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
四、配置 Oracle:用戶設置
1)創建表空間;
CREATE TABLESPACE logminer_tbs DATAFILE '/home/oracle/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
2)創建用戶$UserName(這里是用戶名)綁定表空間LOGMINER_TBS,$PassWord(這里是用戶名的密碼);
PS:接下來要對需要日志歸檔所有的用戶重復8-10的指令操作,$UserName為用戶變量名稱,設置時需要替換其真實用戶名稱。權限設置的時候需要一條條的執行,查看是否權限設置成功。
CREATE USER $UserName IDENTIFIED BY $PassWord DEFAULT TABLESPACE LOGMINER_TBS QUOTA UNLIMITED ON LOGMINER_TBS;
3)授予$UserName用戶dba的權限;
GRANT CONNECT,RESOURCE,DBA TO $UserName;
10)授予其他相關權限;
 GRANT CREATE SESSION TO $UserName;
 GRANT SELECT ON V_$DATABASE to $UserName;
 GRANT FLASHBACK ANY TABLE TO $UserName;
 GRANT SELECT ANY TABLE TO $UserName;
 GRANT SELECT_CATALOG_ROLE TO $UserName;
 GRANT EXECUTE_CATALOG_ROLE TO $UserName;
 GRANT SELECT ANY TRANSACTION TO $UserName;
 GRANT EXECUTE ON SYS.DBMS_LOGMNR TO $UserName;
 GRANT SELECT ON V_$LOGMNR_CONTENTS TO $UserName;
 GRANT CREATE TABLE TO $UserName;
 GRANT LOCK ANY TABLE TO $UserName;
 GRANT ALTER ANY TABLE TO $UserName;
 GRANT CREATE SEQUENCE TO $UserName;
 GRANT EXECUTE ON DBMS_LOGMNR TO $UserName;
 GRANT EXECUTE ON DBMS_LOGMNR_D TO $UserName;
 GRANT SELECT ON V_$LOG TO $UserName;
 GRANT SELECT ON V_$LOG_HISTORY TO $UserName;
 GRANT SELECT ON V_$LOGMNR_LOGS TO $UserName;
 GRANT SELECT ON V_$LOGMNR_CONTENTS TO $UserName;
 GRANT SELECT ON V_$LOGMNR_PARAMETERS TO $UserName;
 GRANT SELECT ON V_$LOGFILE TO $UserName;
 GRANT SELECT ON V_$ARCHIVED_LOG TO $UserName;
 GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO $UserName;