Welcome 微信登录

首页 / 数据库 / MySQL / Oracle如何实现两个数据库的同步(用实体化视图实现)(Oracle快照实例)

一、技术实现细节
除非特别说明,下面的SQL命令都是在数据库ora_db2的SYSETM用户下运行的。
假设要复制(或同步)另一服务器上数据库ora_db1中用户db1的所有表。
1. 创建一个用于连接数据库1(ora_db1)的数据库连接(dblink)SQL> CREATE PUBLIC DATABASE LINK testLK CONNECT TO db1 identified by db1
using
"(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))

(CONNECT_DATA =
(service_name=ora_db1)

)"; **出于安全考虑,可以采用一个私有数据连接。2. 创建一个名为Snapshot_ts的表空间来存放快照,并创建一个和该表空间有关的名为db2的用户。SQL > CREATE TABLESPACE snapshot_ts DATAFILE
"d:dbsnapshot_ts.dbf" SIZE 30M
DEFAULT STORAGE (INITIAL 30 K
NEXT 15 K
MINEXTENTS 1
MAXEXTENTS 100
PCTINCREASE 0)
ONLINE
PERMANENT;  
SQL > CREATE USER db2
IDENTIFIED BY db2
DEFAULT TABLESPACE snapshot_ts;  
SQL > GRANT CONNECT, RESOURCE TO db2; 可以通过下面的SQL语句在ora_db1数据库以db1用户来粗略地估计表空间snapshot_ts的大小。SQL >SELECT SUM(bytes)
FROM USER_SEGMENTS
WHERE SEGMENT_NAME IN
(select table_name from user_tables);
3. 运行下面的脚本来生成创建ora_db1数据库上db1用户下代码表的快照脚本:注意 :在db1下运行下面select ,获得的文件create_snapshot.sql 脚本 在db2下运行。
SQL > spool d:snapcreate_snapshot.sql SQL >SELECT "CREATE SNAPSHOT db2." || TABLE_NAME || " PCTFREE 10 PCTUSED 40 TABLESPACE snapshot_ts " || " STORAGE (INITIAL " || INITIAL_EXTENT || " NEXT " || NEXT_EXTENT || " PCTINCREASE 0 )" || " AS SELECT * FROM db1." || TABLE_NAME ||"@testLK;" FROM USER_TABLES;

SQL >spool off ;

注意上面这个生成所需表快照的脚本有一定的局限性,如果所需生成快照的表中含有类型为long的列,‘select *"在这里就不会起作用,上面的这个SQL脚本就不能自动建立生成所需快照的脚本,必须通过在select列表中显式地添加long型列名来创建表的快照。下面是一个例子,假如我们要创建快照依赖的表table1中有一个列note类型为long,就需要单独写出如下的创建快照的脚本:

SQL >CREATE SNAPSHOT db2.table1 PCTFREE 10 PCTUSED 40 TABLESPACE snapcost_ts STORAGE (INITIAL 40960 NEXT 57344 PCTINCREASE 0 ) AS SELECT * FROMdb1.table1@testLK;
  • 1
  • 2
  • 3
  • 下一页
配置 Cacti 监控 MySQL 数据库状态ORA-01652:无法通过128(在表空间space中)扩展temp段相关资讯      Oracle视图  Oracle快照实例 
  • Oracle学习笔记之视图  (08/30/2015 19:05:48)
  • Oracle DBA_EXTENTS视图 与 DBA_  (05/06/2015 10:48:42)
  • oracle desc dba_data_files视图报  (05/21/2014 07:27:51)
  • Oracle通过视图和告警日志检查主库  (07/20/2015 21:11:35)
  • Oracle 数据库视图与基表的关系  (03/18/2015 20:24:41)
  • Oracle视图基础详解与实例  (02/28/2014 18:48:27)
本文评论 查看全部评论 (0)
表情: 姓名: 字数