博客
关于我
oracle 创建双向备份,Materialized View 物化视图实现 Oracle 表双向同步
阅读量:793 次
发布时间:2023-02-24

本文共 1952 字,大约阅读时间需要 6 分钟。

Oracle????Materialized View?MV??Stream?GoldenGate??

Materialized View?MV???????

1. ????

???`test`???

```sql cREATE TABLE test ( id VARCHAR2(10) NOT NULL PRIMARY KEY, name VARCHAR2(20), status VARCHAR2(1), updatedate DATE ); ```

2. ????????DBLink?

??DBLink?B????

```sql CREATE DATABASE LINK dblink_to_B connect to "userid" identified by "password" using ('(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = "ipaddress")(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = "SID") ) ); ```

??DBLink?A????

```sql CREATE DATABASE LINK dblink_to_A connect to "userid" identified by "password" using ('(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = "ipaddress")(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = "SID") ) ); ```

3. ??Materialized View?MV?????

??MV???

```sql CREATE MATERIALIZED VIEW LOG ON test WITH ROWID; ```

??MV????????

```sql CREATE MATERIALIZED VIEW mv_test REFRESH FAST ON DEMAND AS SELECT * FROM test@dblink_to_B; ```

4. ?????Materialized View?MV?????

??MV???

```sql CREATE MATERIALIZED VIEW LOG ON test WITH ROWID; ```

??MV????????

```sql CREATE MATERIALIZED VIEW mv_test REFRESH FAST ON DEMAND AS SELECT * FROM test@dblink_to_A; ```

5. ?????????

??PLSQL?????????

```sql DBMS_MVIEW.REFRESH('mv_test', 'F'); ```

??????

```sql SELECT COUNT(*) INTO v_count FROM mv_test WHERE ROWNUM < 2; ```

?????????

```sql IF v_count > 0 THEN MERGE INTO test a USING (SELECT id, name, status, updatedate FROM mv_test) b ON (a.id = b.id) WHEN MATCHED THEN UPDATE SET a.name = b.name, a.status = b.status, a.updatedate = b.updatedate WHERE a.updatedate < b.updatedate WHEN NOT MATCHED THEN INSERT (id, name, status, updatedate) VALUES (b.id, b.name, b.status, b.updatedate); COMMIT; END IF; EXCEPTION WHEN OTHERS THEN ROLLBACK; ```

6. ????????????

?????????

????????MV????????????????

转载地址:http://kxpfk.baihongyu.com/

你可能感兴趣的文章
Optional类:避免NullPointerException
查看>>
Optional讲解
查看>>
ORA-00069: cannot acquire lock
查看>>
ORA-00923: 未找到要求的 FROM 关键字
查看>>
ORA-00932: inconsistent datatypes: expected - got NCLOB【ORA-00932: 数据类型不一致: 应为 -, 但却获得 NCLOB 】【解决办法】
查看>>
ORA-00942 表或视图不存在
查看>>
ORA-01034: ORACLE not available
查看>>
ORA-01152: 文件 1 没有从过旧的备份中还原
查看>>
ORA-01207:文件比控制文件更新 - 旧的控制文件
查看>>
ORA-01795: 列表中的最大表达式数为 1000
查看>>
ORA-06575: 程序包或函数 NO_VM_DROP_PROC 处于无效状态
查看>>
ORA-08102的错误
查看>>
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor异常
查看>>
ORA-12514: TNS:listener does not currently know of service问题原因
查看>>
ora-12541:tns:no listener
查看>>
【docker知识】联合文件系统(unionFS)原理
查看>>
ORACEL学习--理解over()函数
查看>>
ORAchk-数据库健康检查
查看>>
oracle 10g crs命令,Oracle 10g CRS安装问题解决一例
查看>>
Oracle 10g ORA-01034: ORACLE not available 错误
查看>>