当前位置:  数据库>oracle

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

    来源: 互联网  发布时间:2017-05-20

    本文导语: 一、技术实现细节 除非特别说明,下面的SQL命令都是在数据库ora_db2的SYSETM用户下运行的。假设要复制(或同步)另一服务器上数据库ora_db1中用户db1的所有表。 1. 创建一个用于连接数据库1(ora_db1)的数据库连接(dblink) SQL> CREATE ...

一、技术实现细节
除非特别说明,下面的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;


    
 
 

您可能感兴趣的文章:

  • 不想装oracle却还要在redhat8.0下用jdbc连接oracle如何实现?
  • 那位高手知道怎样实现用JSP跟ORACLE连上?
  • oracle定时备份压缩的实现步骤
  • oracle增加表空间大小两种实现方法
  • MySQL实现类似Oracle中的decode()函数的功能
  • 请问在 Linux 下如何用代码实现连接oracle数据库 并 执行 SQL 语句?
  • 老大们,虚拟机上系统os是linux,我想在它安装oracle,怎么实现?
  • 用oracle pl/sql 从A unix机器,去读取B unix机器上的一个文件,怎么实现?
  • linux上安装oracle 数据库后,是否能写shell程序实现数据库的自动启动。
  • 通过Oracle发送Email的实现方法
  • 如何实现将客户机上的word文件,以B/S方式最终存入oracle数据库?
  • oracle列合并的实现方法
  • 用java怎样实现oracle数据库表和excel数据表的转换
  • Oracle中字符串连接的实现方法
  • linux下用什么办法连接oracle数据库并且读取数据呢?(用c++代码实现时)
  • 成功实现应用程序和Oracle客户端一起打包
  • Oracle与SQLServer的实现互连
  • 实现Oracle数据库的逐渐自增
  • 读一个10M的txt文件到Oracle数据库中,用C实现,请问有什么好的方法吗?即不怎么占内存,又不怎么占Cpu!
  • 利用windows任务计划实现oracle的定期备份
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • oracle 10g 快照操作方法
  • Oracle数据库快照的使用
  • 关于Oracle数据库中快照的使用方法介绍
  • 成功实现应用程序和Oracle客户端一起打包 iis7站长之家
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,