一、思路
- 在源数据库中建立一个远程数据库链
- 通过远程数据库链操作数据库数据表:先删除原始数据,插入最新数据
- 建立一个定时任务,定时调用任务:登录sqlplus 执行第二步操作
说明:此处以windows计划任务为例,linux中使用crontab定时任务;
当然此处思路为Oracle数据库自动同步,mysql数据库也可以参考同样思路
二、建立数据库链
-- 1、进入PDB(SS_SYSRIGHT)中:
alter session set container=SS_SYSRIGHT;
-- 2、赋予建立数据库链接的权限
grant create public database link to ss_sysright;
-- 3、建立数据库链接
create public database link LinkSafe
connect to ss_safe identified by "ss_safe@123"
using '(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.6.45)(PORT=1521))
)
(CONNECT_DATA=(SERVER=DEDICATED)
(SERVICE_NAME=ss_safe))
)';
此处使用数据库是Orcle12C,存在CDB\PDB模式,如不清楚请查阅资料。
非CDB\PDB模式,不需要切换模式。
三、sql操作语句 syncss_safe.sql
begin
--1 事故管理 伤亡情况
delete from T_ACC_CASUALTY@LinkEqu;
insert into T_ACC_CASUALTY@LinkEqu
select * from "SS_SAFE"."T_ACC_CASUALTY";
--2 隐患排查 隐患类别
delete from T_HIDDAN_TYPE@LinkEqu;
insert into T_HIDDAN_TYPE@LinkEqu
select * from "SS_SAFE"."T_HIDDAN_TYPE";
end;
/
quit;
四、Windows计划任务
1、建立一个任务文件 oracleBackUp.bat
@echo off & setlocal ENABLEEXTENSIONS
:: ---------- 配置项 ----------
:: 数据库服务器IP地址
set ServerAddress=192.168.6.45:1521/
:: 要备份的数据库名称,多个用空格分隔
set DATABASES=ss_safe
:: MySQL 用户名
set USERNAME=SYS
:: MySQL 密码
set PASSWORD=swai1234
:: 创建oracle逻辑目录sql文件地址
set CreateDirSql=C:\Users\test005\Desktop\OASync\sync
:: ---------- 以下请勿修改 ----------
:: backup
echo Start dump databases...
for %%D in (%DATABASES%) do (
sqlplus %USERNAME%/%PASSWORD%@%ServerAddress%%%D as sysdba @%CreateDirSql%%%D
pause
)
echo Done
2、将任务加入windows计划中 cron_backup_add.bat
@echo off
:: ------- 配置项 -------
:: 要执行的文件名(全路径)
set FILE=D:\bakDB\autoBak\oracle_winserver\oracleBackUp.bat
:: 计划频率类型
set FREQUENCY=DAILY
:: 频率,与上面的计划频率类型对应
set MODIFIER=1
:: 该计划执行的时间(24 小时制)
set DATETIME=17:00:00
:: 计划的名字
set NAME="Backup OracleDB Job"
:: 计划执行用户,不建议修改
set USER="System"
:: ------- 以下请勿修改 -------
schtasks /Create /RU %USER% /SC %FREQUENCY% /MO %MODIFIER% /ST %DATETIME% /TN %NAME% /TR %FILE%
pause
:: 计划频率类型,可选项:
:: MINUTE 分钟
:: DAILY 天
:: HOURLY 小时
:: WEEKLY 周
:: MONTHLY 月
:: 频率,与上面的计划频率类型对应
:: MINUTE: 1 到 1439 分钟
:: HOURLY: 1 - 23 小时
:: DAILY: 1 到 365 天
:: WEEKLY: 1 到 52 周
:: MONTHLY: 1 到 12,或 FIRST, SECOND, THIRD, FOURTH, LAST, LASTDAY