li
  当前位置:主页 > 配置管理 > 文章内容
li
逻辑standby数据库的创建过程
来源: www.ixdba.net  作者: Oracle+Linux专业技术门户    时间:2008-07-10   阅读:52  
本文章共5362字,分4页,当前第1页,快速翻页:
 

1   

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

以下是逻辑standby数据库支持的类型:

CHAR

NCHAR

VARCHAR2 and VARCHAR

NVARCHAR2

NUMBER

DATE

TIMESTAMP

www.ixdba.net


TIMESTAMP WITH TIME ZONE

TIMESTAMP WITH LOCAL TIME ZONE

INTERVAL YEAR TO MONTH

INTERVAL DAY TO SECOND

RAW

CLOB

BLOB

 

逻辑standby据库不支持的类型包括:

NCLOBLONGLONG RAW BFILE ROWIDUROWID,以及用户自定义的类型,包括对象类型,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;
 

以上查询会返回用户名、表名以及通过YN来标识的字段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 · 下一页>>


  上一篇: Oracle9i中flashback闪回数据   下一篇: ORA-03113:end-of-file on comm...
li
 §相关评论  
 热点文章

·oracle Logfile的不同状态说明
·Oracle数据库的一些常用操作经
·Oracle10g(10.2) 在Redhat AS4
·oracle工具:浅谈LogMiner的使用
·RHAD AS4 上安装 Oracle 数据库
·oracle基础知识(物理结构)
·oracle基础:Oracle中null的使用
·Oracle常用基本语法操作集锦
·oracle数据库查询前台正在发出
·AIX+ORACLE10G安装手册
·oracle数据库9i升级到oracle10
li
 编辑推荐
·oracle Logfile的不同状态说明
·Oracle数据库的一些常用操作经
·Oracle10g(10.2) 在Redhat AS4
·oracle工具:浅谈LogMiner的使用
·RHAD AS4 上安装 Oracle 数据库
·oracle基础知识(物理结构)
·oracle基础:Oracle中null的使用
·Oracle常用基本语法操作集锦
·oracle数据库查询前台正在发出
·AIX+ORACLE10G安装手册
·oracle数据库9i升级到oracle10
li
 相关篇章
·Oracle9i中flashback闪回数据
·oracle SMON_SCN_TIME
·oracle9i 的flashback 一些问题
·oracle如何查看已经打过的补丁
·怎么样计算REDO BLOCK的大小
·控制文件包含哪些基本内容
·如果发现表中有坏块,如何检索其...
·怎么知道那些表没有建立主键
·我创建了数据库的所有用户,我可...
·ORACLE的有那些数据类型
·ORA-03113:end-of-file on comm...
·ORA-01688:unable to extend tab...
·如何查询一个表中某字段重复记录...
·ORACLE表间关系详述
·ORA-02449: unique/primary keys...
·oracle日常操作汇总:日志篇
·oracle日常操作汇总:表空间篇
·利用ORADEBUG命令DUMP控制文件
·oracle基础知识--常用SQL*Plus语...
·ORACLE 常用的SQL语法和数据对象...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接