在Debian系统与Oracle数据库之间实现数据同步,需根据场景(实时/定期、同构/异构)选择合适工具,以下是具体策略及操作指南:
Oracle GoldenGate是Oracle官方推荐的实时数据复制工具,支持跨平台、跨版本的增量数据同步,适用于需要低延迟的生产环境。
sudo apt-get update
sudo apt-get install oracle-goldengate
GLOBALS
文件(指定GoldenGate安装目录、日志路径等);extract
进程(提取源数据库变更数据)的extract.prm
参数文件,例如:EXTRACT ext1
USERID username/password, ROLE SYSDBA
EXTTRAIL /u01/goldengate/dirdat/lt
TABLE schema_name.*;
replicat
进程(将变更应用到目标数据库)的replicat.prm
参数文件,例如:REPLICAT rep1
USERID target_user/target_password, ROLE SYSDBA
ASSUMETARGETDEFS
DISCARDFILE /u01/goldengate/dirrpt/rep1.dsc, APPEND
TABLE schema_name.*;
extract
进程,目标端启动replicat
进程:ggsci <<EOF
start extract ext1
start replicat rep1
EOF
ggsci
命令监控进程状态(info all
)、查看日志(view report ext1
),定期备份GoldenGate配置文件。Oracle Data Pump(expdp
/impdp
)是Oracle自带的高效数据迁移工具,适用于定期全量/增量同步(如每日备份)。
expdp
/impdp
工具):sudo apt-get update
sudo apt-get install oracle-instantclient-basic oracle-instantclient-sqlplus
~/.bashrc
中添加):export ORACLE_HOME=/usr/lib/oracle/21/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$ORACLE_HOME/bin:$PATH
CREATE DIRECTORY dump_dir AS '/path/to/dump_dir';
GRANT READ, WRITE ON DIRECTORY dump_dir TO your_user;
expdp
导出数据(示例为导出schema_name
模式):expdp your_user/your_password@source_db directory=dump_dir dumpfile=export_$(date +%F).dmp logfile=export.log
.dmp
文件复制到Debian目标服务器(可使用scp
或rsync
):scp your_user@source_server:/path/to/dump_dir/export_$(date +%F).dmp /local/path/
impdp
导入数据(示例为导入到target_schema
模式):impdp target_user/target_password@target_db directory=dump_dir dumpfile=export_$(date +%F).dmp logfile=import.log remap_schema=source_schema:target_schema
SELECT COUNT(*) FROM table_name
);ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY (id)
);EXEC DBMS_STATS.GATHER_TABLE_STATS('target_schema', 'table_name');
)。冷备是数据库关闭时的全量备份,适用于测试环境或对数据一致性要求极高的场景(如系统升级前的备份)。
SHUTDOWN IMMEDIATE;
$ORACLE_HOME/dbs
)、控制文件($ORACLE_HOME/dbs
)、重做日志文件($ORACLE_HOME/flash_recovery_area
)复制到Debian目标服务器的对应目录。STARTUP;
SQL*Plus
连接目标数据库,检查表数据、架构是否与源数据库一致。EXP_FULL_DATABASE
(导出)权限,目标数据库用户需具备IMP_FULL_DATABASE
(导入)权限;ORA-31693
),需检查日志文件(export.log
/import.log
),修复问题后重新执行。