同步Oracle數據庫表到另一個Oracle數據庫


同步A數據庫表test_user到B數據庫

1.創建A/B數據庫用戶

A數據庫
IP:192.168.1.20
test/123456
B數據庫
IP:192.168.1.21
test/123456

1.1.創建用戶(SYSTEM用戶)

創建用戶
 CREATE USER TEST IDENTIFIED BY 123456;
修改用戶密碼
ALTER USER TEST IDENTIFIED BY 123456 

1.2.授予角色權限

-- ROLES
GRANT "CONNECT" TO "TEST" ;

1.3.授予系統權限

授予權限
-- SYSTEM PRIVILEGES
GRANT CREATE ANY PROCEDURE TO "TEST" ;
GRANT CREATE ANY SEQUENCE TO "TEST" ;
GRANT CREATE ANY TRIGGER TO "TEST" ;
GRANT CREATE ANY TABLE TO "TEST" ;
GRANT UNLIMITED TABLESPACE TO "TEST" ;
GRANT CREATE DATABASE LINK TO "TEST" ;
移除權限
REVOKE SELECT ANY PROCEDURE FROM "TEST";

2.創建建A/B數據庫測試表test_user(TEST用戶)

創建表
CREATE TABLE TEST_USER(
	ID number(15) NOT NULL PRIMARY KEY,
	USER_NAME VARCHAR2(255) default '' NOT NULL,
	USER_PASS VARCHAR2(255) default '' NOT NULL,
  CREATE_TIME DATE NOT NULL
);
comment on column TEST_USER.ID is '主鍵';
comment on column TEST_USER.USER_NAME is '用戶名';
comment on column TEST_USER.USER_PASS is '密碼';
comment on column TEST_USER.CREATE_TIME is '創建時間';

3.創建DBLINK(A數據庫)

create database link DBLINK_TEST connect to TEST identified  by "123456" using '192.168.1.21:1521/XE';
drop database link DBLINK_TEST;
測試DBLINK是否成功
select * from TEST_USER@DBLINK_TEST;

4.創建觸發器(A數據庫)

create or replace TRIGGER TRIGGER_SYN_TEST
AFTER INSERT OR UPDATE OR DELETE ON TEST_USER
for each row
BEGIN
IF INSERTING THEN
--INSERT觸發
insert into TEST_USER@DBLINK_TEST values(:new.ID,:new.USER_NAME,:new.USER_PASS,:new.CREATE_TIME);
ELSIF UPDATING THEN
--UPDATE觸發
UPDATE TEST_USER@DBLINK_TEST SET USER_NAME = :new.USER_NAME , USER_PASS = :new.USER_PASS WHERE ID = :new.ID;
ELSIF DELETING THEN
--DELETE觸發
DELETE FROM TEST_USER@DBLINK_TEST WHERE ID = :old.ID;
END IF;
END;

5.INSERT測試(A數據庫)

insert into TEST_USER values(1,'test','123456',sysdate);
insert into TEST_USER values(2,'test','123456',sysdate);
commit;
select * from TEST_USER@DBLINK_TEST;

或者登錄查看B數據庫看是否數據插入

6.UPDATE測試(A數據庫)

UPDATE TEST_USER SET USER_NAME = 'UPDATE_TEST' , USER_PASS = 'UPDATE_TEST' WHERE ID = 1;
commit;
select * from TEST_USER@DBLINK_TEST;

7.DELETE測試(A數據庫)

DELETE FROM TEST_USER WHERE ID = 1;
commit;
TEST_USER@DBLINK_TEST;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM