最輕量的跨庫表同步:Target 端建 DB Link → Shell/PLSQL 排程跑 TRUNCATE + INSERT /*+ APPEND */。適用於全量刷新、資料量中等、可容忍短暫不可用的場景。
-- tnsnames.ora 加入 Source 連線資訊
SRC_DB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL=TCP)(HOST=10.5.1.3)(PORT=1521))
(CONNECT_DATA = (SERVICE_NAME=SRC_DB))
)
-- 建立 Public DB Link
CREATE PUBLIC DATABASE LINK src_link
CONNECT TO src_user IDENTIFIED BY src_pwd
USING 'SRC_DB';
#!/bin/bash
# sync_table.sh
sqlplus tgt_user/tgt_pwd@TGT_DB <
ALTER SESSION ENABLE PARALLEL DML; + 表設 PARALLEL 4。INSERT INTO target PARTITION (p_2024) ... 再 ALTER TABLE ... EXCHANGE PARTITION,近零停機。MATERIALIZED VIEW LOG,Target 用 MERGE 或 APPLY。SELECT * FROM v$option WHERE parameter = 'Advanced replication';
-- 必須回傳 TRUE,否則 DB Link 某些功能受限
cron:0 2 * * * /home/oracle/scripts/sync_table.sh >> /home/oracle/logs/sync_table.log 2>&1DBMS_SCHEDULER:建立 JOB 執行 PL/SQL 封裝版本,集中管理、可視化監控。DB Link 同步簡單直接,但屬「推」模式,Source 無感知。雙向、高頻、低延遲需求請改用 GoldenGate / Streams / Materialized View 架構。