li
  当前位置:主页 > 性能优化 > 文章内容
li
oracle创建逻辑standby数据库
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2008-03-28   阅读:12  
本文章共5374字,分4页,当前第1页,快速翻页:
 

1  
第一步:确定主数据库中是否包含逻辑standby数据库不支持的数据类型和表


以下是逻辑standby数据库支持的类型:
CHAR
NCHAR
VARCHAR2 and VARCHAR
NVARCHAR2
NUMBER
DATE
TIMESTAMP
TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE
INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND
RAW
CLOB
BLOB
 
逻辑standby数据库不支持的类型包括:


NCLOB,LONG,LONG RAW, BFILE, ROWID和UROWID,以及用户自定义的类型,包括对象类型,REF类型,varray和嵌套表。如果存在表含有这些类型的字段,当逻辑standby数据库对这张表应用DML操作时就会报错。
 
逻辑standby数据库不支持的表和序列:
SYS用户的表和序列;
含有不支持数据类型的表;
建有函数索引的表;
建有物化视图的表;
全局临时表(Global Temporary Table)。
 
可以通过查询视图DBA_LOGSTDBY_UNSUPPORTED来确定主数据库中是否含有不支持的对象:
SQL> SELECT * FROM DBA_LOGSTDBY_UNSUPPORTED;
 
如果主数据库中含有不支持的对象,日志实施服务进程(Log Apply Service)在向standby数据库实施redo log时会自动排除这些对象。
 
1.2    第二步:确定主数据库中表的所有数据记录是否都能被唯一定位
 
为了维护standby数据库,SQL实施操作进程必须能够为一定位到主数据库上更新的每一条记录。为了能使主数据库上的变化数据能高效和正确的实施到standby数据库上,Oracle建议对每张表都建立主键。
大多数表都必须有了主键或者没有空值的唯一约束,否则,补充日志(supplemental logging 在第四步会激活)会自动收集定位在主数据库上更新的记录的信息。通过补充日志,那些能够唯一定位记录的信息会加到归档redo日志中的每一个更新事务中,这样,日志实施服务进程就能维护standby数据库了。
可以通过以下步骤来确保SQL实施操作进程能唯一定位表的记录:
1、  查询视图DBA_LOGSTDBY_NOT_UNIQUE来定位哪些表没有主键货无空值的唯一约束:
SQL> SELECT OWNER, TABLE_NAME, BAD_COLUMN FROM DBA_LOGSTDBY_NOT_UNIQUE;
 
以上查询会返回用户名、表名以及通过Y和N来标识的字段BAD_COLUMN:
·         如果BAD_COLUMN的值为Y,表示这张表的字段使用一个极大的数据类型,如LONG。如果有两条这样的记录存在表中(除LOB字段外),这张表就无法被正确维护。
·         值为N表示表含有足够的信息来维护standby数据库上的表(但是却没有主键或无空值约束)。然而,如果你增加了主键,日志传输服务进程(Log Transport Service)和SQL实施操作进程将会更高效。
2、  在必要的情况下增加主键以提高效率
为了维护standby数据库上的表,补充日志功能会自动为redo日志中的每一个更新表操作增加字段数据,具体如下:
·         如果表已经有主键或者无空值的唯一索引,向redo日志中添加的信息将最少。
·         如果表没有主键或无空值的唯一索引,补充日志功能会通过向redo日志中的所有行都添加相应的值为它增加唯一健值。然而,这个自动增加的键值会增加写入到redo日志中的信息。
3、  在必要的情况下,在表上创建非激活依赖的约束。
如果表在视图DBA_LOGSTDBY_NOT_UNIQUE中可以查到,它又是一张会被频繁更新的表。可以通过创建一个非激活依赖的约束在表上来避免通过主键维护表,以提高redo日志的性能。一个非激活依赖的约束可以为SQL实施操作进程提供更多的信息,而不会增加在主数据库上的索引成本。



阅读更多内容1 · 2 · 3 · 4 · 下一页>>


  上一篇: oracle ORA-01555错误完全解析   下一篇: 根据statspack来获取生成环境中t...
li
 §相关评论  
 热点文章

·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 编辑推荐
·Resize datafile导致ASM Crash
·在Oracle10g RAC下新增ASM磁盘
·ORACLE SQL性能优化系列 (一)
·oracle性能调优:管理oracle日志
·oracle RAC环境中系统时钟的调
·why:Rac的心跳线不支持交叉线?
·RAC的VIP及实例依赖关系:版本O
·如何启动DataGuard的备用数据库
·系统表空间IO错误 数据损坏处理
·不幸中的万幸:遭遇ORA-00600 [
·用ORACLE的高级复制实现内外网
li
 相关篇章
·oracle ORA-01555错误完全解析
·高级复制下如何强制删除废弃复制...
·Oracle数据库中高级复制的功能介...
·高级复制下如何强制删除复制组
·Oracle9i与Oracle10g之间的高级复...
·oracle高级复制需要注意的几点问...
·ORACLE的高级复制实现内外网数据...
·物化视图高级复制中ORA-23313错误...
·Oracle高级复制配置文档
·ORA-07445: exception encounter...
·根据statspack来获取生成环境中t...
·oracle ORA-01555错误完全解析之...
·oracle 高级复制中ORA-25207错误...
·高级复制的整体规划策略
·如何将高级复制队列表移出系统(S...
·Oracle中的Hash Join详解
·oracle中各种sql语句的多种写法
·ORA-600 [qmxiUnpPacked2]错误的...
·ORA-01599与max_rollback_segmen...
·ORA-01650:unable to extend rol...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接