控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

数据库基础:Oracle 复制方法3

作者:佚名 出处:互联网 2010年04月06日 阅读:

(接上文)

  本文由控件中国网转载自互联网
  5.建立复制管理员mvadmin的数据库连接:


  create database link ORACLSH connect to proxy_bjOracle
  identified by proxy_bjoralce
  Connect to ... Identified by ...子句指明用什么用户连接远程数据库


  6.建立复制调度数据库连接作业:


  begin
  dbms_defer_sys.schedule_push(
  destination => ’ora92zjk’,interval => ’/*1:hr*/ sysdate + 1’,
  next_date => sysdate,stop_on_error => false,
  delay_seconds => 0,parallelism => 0);
  end;
  /


  7.授予SHORACL用户(对应SHORACL方案)相应的权限建立实体化视图:


  disconnect;
  connect system/passwd@BJ;
  grant alter session to crm;
  grant create cluster to crm;
  grant create database link to crm;
  grant create sequence to crm;
  grant create session to crm;
  grant create synonym to crm;
  grant create table to crm;
  grant create view to crm;
  grant create procedure to crm;
  grant create trigger to crm;
  grant unlimited tablespace to crm;
  grant create type to crm;
  grant create any snapshot to crm;
  grant alter any snapshot to crm;


  8.建立复制方案的数据库连接:


  disconnect;
  connect SHORACL/SHORACL@BJ;
  create database link ORACLSH connect to ORACL identified
  by ORACL;

复制方案的数据库连接和复制管理员的数据库连接要和system用户间里的对应公共数据库连接使用相同的名字,在调度连接时将使用公共数据库连接中指定的数据库全局名或者连接字符串。

  9.建立实体化视图:


  disconnect;
  connect mvadmin/mvadmin@BJ;
  create materialized view SHORACL.CREDIT_CARD refresh fast
  wit h pr imar y key as sele ct * from ORA CL.
  CREDIT_CARD@ORACLSH;


  @后面是数据库连接名。如果该表没有主键则使用rowid来刷新。


  create materialized view SHORACL. CREDIT_CARD refresh
  fast with rowid as select * from ORACL. CREDIT_CARD@ORACLSH;


  10.为多个视图建立刷新组:


  begin
  dbms_refresh.make (
  name => ’mvadmin.sh_refresh’,list => ’’,
  next_date => sysdate,interval => ’sysdate + 1’,
  implicit_destroy => false,rollback_seg => ’’,
  push_deferred_rpc => true,refresh_after_errors => false);
  end;


  11.向刷新组中添加复制对象:


  begin
  dbms_refresh.add (name => ’mvadmin.sh_refresh’,
  list => ’SHORACL.CREDIT_CARD ’,lax => true);
  end;
  /


  三.检查复制进程:

  1.查看sys.dba_jobs视图是否生成了足够的作业。

  经过以上的步骤应该有三个作业分别是清除作业、调度作业和刷新作业,查看视图的what字段是否有下面的内容:


  a) declare rc binary_integer; begin rc := sys.dbms_defer_sys.
  purge( delay_seconds=>0); end;
  b) declare rc binary_integer; begin rc := sys.dbms_defer_sys.
  push(destination=>’ORACLSH’, stop_on_error=>FALSE,
  delay_seconds=>0, parallelism=>0); end;
  c) dbms_refresh.refresh(’"MVADMIN"."SH_REFRESH"’);

如果排除其它系统作业本例中杭州和武汉的数据库复制建立之后将会有7个作业(如果为每个复制分别建立刷新组的话),清除作业始终只有一个。每个复制对应一个调度作业,每个刷新组对应一个刷新作业。

  2.查看job_queue_processes参数,确保该参数不为零(数据库的默认值是零),如果该参数为零,除非每次手工执行刷新,否则系统不会自动刷新复制数据。

  3.确保复制执行之后,观察sys.dba_jobs视图的failures字段。如果复制在刷新过程中除错,Oracle会自动在1分钟之后再次尝试刷新,失败之后再在2分钟、4分钟、8分钟..之后尝试刷新,直到失败次数达到16次或者间隔时间超过作业设置的间隔时间,该作业将被标记为中断,Oracle不再执行该作业。要重新执行改作业使用dbms_job包的run过程:


  begin
  dbms_job.run(job_no); 数据库基础:Oracle 复制方法3
  end;
  /


  job_no 是sys.dba_jobs 的Job字段的值,作业号。在重新执行因出错而中断的作业前,需要手工找到出错点,并更正。

  总结

  本文只是使用了Oracle高级复制中最简单的功能,Oracle的高级复制还提供可更新视图和复杂的只读实体化视图复制,当然并不是我们都要去用高级复杂强大的功能,在具体应用的时候,还要根据系统功能和性能需求,选择适当的复制技术。


本文由控件中国网转载自互联网(全文完)

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统