網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
兩臺(tái)Oracle之間進(jìn)行數(shù)據(jù)同步,可以借助Oracle的dblink完成,如果是Oracle與其他數(shù)據(jù)庫(kù)之間,則可以使用Oracle提供的Database Gateways+dblink實(shí)現(xiàn),當(dāng)然,也可以使用開(kāi)源ETL工具如kettle完成。
這里提供兩種在Oracle之間同步數(shù)據(jù)的簡(jiǎn)單解決方案。
0 需求
A(192.168.68.129)、B(192.168.68.143)兩個(gè)數(shù)據(jù)庫(kù),當(dāng) A 中的表 T_TEST 數(shù)據(jù)發(fā)生改變時(shí),B 數(shù)據(jù)庫(kù)中的 表 T_TEST 自動(dòng)更新,實(shí)現(xiàn)數(shù)據(jù)主動(dòng)推送或者主動(dòng)拉取
1 dblink + 觸發(fā)器
1.1 源庫(kù) A 創(chuàng)建dblink
在 源數(shù)據(jù)庫(kù) A 中創(chuàng)建 dblink,指向 目標(biāo)庫(kù) B
CREATE database link DBLINK_TEST CONNECT TO SCOTT IDENTIFIED BY "123456" using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.68.143)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SID = ORCL) ) )';
查詢是否創(chuàng)建成功
SELECT * FROM T_TEST @DBLINK_TEST;
1.2 源庫(kù) A 創(chuàng)建觸發(fā)器
在 源數(shù)據(jù)庫(kù) A 中創(chuàng)建觸發(fā)器,更新 目標(biāo)庫(kù) B
CREATE OR REPLACE TRIGGER TRIGGER_SYN_TEST
AFTER INSERT OR UPDATE OR DELETE ON T_TEST FOR each ROW
BEGIN
IF INSERTING THEN
INSERT INTO T_TEST @DBLINK_TEST
VALUES
( : new.ID,: new.ROLE_NAME,: new.NOTE );
ELSIF UPDATING THEN
UPDATE T_TEST @DBLINK_TEST
SET ROLE_NAME = : new.ROLE_NAME,NOTE = : new.NOTE
WHERE
ID = : new.ID;
ELSIF DELETING THEN
DELETE
FROM
T_TEST @DBLINK_TEST
WHERE
ID = : old.ID;
END IF;
END;
測(cè)試是否生效
INSERT INTO T_TEST VALUES(2, '測(cè)試角色','測(cè)試角色');
UPDATE T_TEST SET ROLE_NAME = '測(cè)試角色更新' WHERE ID = 2;
DELETE FROM T_TEST WHERE ID = 2;
2 dblink + 物化視圖
2.1 源庫(kù) A 創(chuàng)建物化視圖日志表
在源庫(kù)中創(chuàng)建物化視圖日志表
CREATE MATERIALIZED VIEW LOG ON "T_TEST" WITH ROWID;
2.2 目標(biāo)庫(kù) B 創(chuàng)建dblink
在 目標(biāo)庫(kù) B 中創(chuàng)建指向 源庫(kù) A 的dblink
CREATE PUBLIC database link DBLINK_TEST CONNECT TO SCOTT IDENTIFIED BY "123456" using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.68.129)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SID = ORCL) ) )';
2.3 目標(biāo)庫(kù) B 創(chuàng)建物化視圖
# 創(chuàng)建,不會(huì)自動(dòng)刷新
CREATE MATERIALIZED VIEW MV_TEST refresh fast ON demand WITH ROWID AS
SELECT * FROM T_TEST @DBLINK_TEST;
# 每分鐘刷新一次
CREATE MATERIALIZED VIEW MV_TEST refresh fast ON demand WITH ROWID NEXT to_date( to_char( SYSDATE + 1/1440, 'dd-mm-yyyy hh24:mi:ss' ), 'dd-mm-yyyy hh24:mi:ss' ) AS
SELECT * FROM T_TEST @DBLINK_TEST;
# 刪除
DROP MATERIALIZED VIEW mv_name
一天為24個(gè)小時(shí) 1440分鐘 86400秒
故:
一個(gè)小時(shí)后時(shí)間為 sysdate+1/24select sysdate + 1/24 from dual
一分鐘后時(shí)間為 sysdate+1/1440
select sysdate + 1/1440 from dual
一秒鐘后時(shí)間為 sysdate+1/86400
select sysdate + 1/86400 from dual
2.4 手動(dòng)同步數(shù)據(jù)
call dbms_mview.refresh ( 'MV_TEST' );
原文鏈接:https://blog.csdn.net/Vampire_1122/article/details/125092229
相關(guān)推薦
- 2022-06-24 Go單體服務(wù)開(kāi)發(fā)最佳實(shí)踐總結(jié)_Golang
- 2022-04-25 ASP.NET?Core?MVC中過(guò)濾器工作原理介紹_實(shí)用技巧
- 2022-07-06 C#中的反射(System.Reflection)_C#教程
- 2023-04-22 Python中DataFrame與內(nèi)置數(shù)據(jù)結(jié)構(gòu)相互轉(zhuǎn)換的實(shí)現(xiàn)_python
- 2022-08-10 pandas數(shù)據(jù)清洗實(shí)現(xiàn)刪除的項(xiàng)目實(shí)踐_python
- 2022-07-16 ssh遠(yuǎn)程連接docker
- 2022-05-17 基于Pytorch的神經(jīng)網(wǎng)絡(luò)之Regression的實(shí)現(xiàn)_python
- 2022-07-30 基于docker安裝zabbix的詳細(xì)教程_zabbix
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支