1.逻辑备用数据库介绍
逻辑备用数据库使用主数据库的拷贝创建出来,但是创建出来以后,该备用数据库的物理结构就与主数据库不同了。逻辑备用数据库通过应用SQL语句进行更新。这样就允许用户在任何时候都可以在备用数据库上运行查询和报表了。
因为逻辑备用数据库使用SQL语句进行与主数据库的同步,所以逻辑备用数据库必须打开。而且,在逻辑备用数据库上,还可以创建其他的索引和物化视图来提高效率。不过逻辑备用数据库在数据类型、表的类型和DDL以及DML上有些限制。
逻辑备用数据库的优点:
a、更加有效利用了备用数据库的硬件资源 b、减小了主数据库的负载,例如将非实时性的查询转移到备用数据库等 c、可以作为主数据库的备份 2.创建逻辑备用数据库前对主数据库的准备
在创建逻辑备用数据库的过程中,必须确保在主数据库上做配置所用的用户帐号具有以下数据库角色: a、logstdby_administrator角色,用来使用逻辑备用功能 b、select_catalog_role角色,能够访问所有数据字典视图。
下面详细说明了创建一个逻辑备用数据库前,必须在主数据库上进行的准备工作。
2.1 启用forced logging
将主数据库设置为force logging模式:
SQL>alter database force logging;
2.2 启用归档,并在本地定义一个归档路径
确保主数据库设置成归档模式,启用自动归档,并且必须有一个本地的归档路径。
SQL> alter system set log_archive_dest_1='location=D:\oradata\rmantgt\archive mandatory' scope=both;
2.3 确认log_parallelism初始化参数
在主数据库上,使用show parameter的命令显示当前log_parallelism初始化参数的值。逻辑备用数据库要求你将该初始化参数设置为1,同时这也是该参数的缺省值。如果该参数已经是1了,则跳到2.4步骤。否则,设置log_parallelism=1,如下:
SQL>alter system set log_parallelism=1 scope=spfile;
设置完以后,需要重启数据库以使设置生效。
2.4 确定所能支持的数据类型和表类型
在建立逻辑备用数据库前,确保在当前主数据库中的数据类型和表类型都是逻辑备用数据库所能支持的。
逻辑备用数据库所支持的数据类型有:char、nchar、varchar2和varchar、nvarchar2、number、date、timestamp、timestamp with time zone、timestamp with local time zone、interval year to month、interval year to second、raw、clob、blob
逻辑备用数据库不支持的数据类型有:nclob、long、long raw、bfile、rowid、urowid、user-defined types、object types refs、varrays、nested tables
逻辑备用数据库不支持的表、sequences和视图有:用户在sys schema里定义的表和sequences、那些含有不支持的数据类型的表、使用了segment compression的表、索引组织表(index-organized tables)
确定主数据库是否含有不支持的对象,查看dba_logstdby_unsupported视图,该视图列出了逻辑备用数据库所不支持的对象:
SQL> select distinct owner,table_name from dba_logstdby_unsupported order by owner,table_name;
如果主数据库含有不支持的对象,则日志应用服务在逻辑备用数据库上运用重做日志会自动剔除那些不支持的对象。
如果以下SQL语句在主数据库上运行了的话,那么传到逻辑备用数据库以后,也不会在逻辑备用数据库上运行:ALTER DATABASE、ALTER SESSION、ALTER SNAPSHOT、ALTER SNAPSHOT LOG、ALTER SYSTEM SWITCH LOG、CREATE CONTROL FILE、CREATE DATABASE、CREATE DATABASE LINK、CREATE PFILE FROM SPFILE、CREATE SCHEMA AUTHORIZATION、CREATE SNAPSHOT、CREATE SNAPSHOT LOG、CREATE SPFILE FROM PFILE、CREATE TABLE AS SELECT FROM A CLUSTER TABLE、DROP DATABASE LINK、DROP SNAPSHOT、DROP SNAPSHOT LOG、EXPLAIN、LOCK TABLE、RENAME、SET CONSTRAINTS、SET ROLE、SET TRANSACTION。
那些在主数据库上修改元数据的pl/sql存储过程也不会在逻辑备用数据库上运行。比如在主数据库上运行了dbms_mview_refresh,但是传到备用数据库后并不会被应用。唯一的例外是dbms_job包,job元数据会应用到逻辑备用数据库上,但是jobs本身不会执行。
2.5 确认主数据库里表的行都可以唯一标识
由于在逻辑备用数据库里rowid可能不等于主数据库里的rowid,所以必须采取一些机制来保证在主数据库里所更新的行能够对应到备用数据库里相应的行。
可以采用以下对应方法:主键或唯一索引。
在主数据库里,无论合适与否,每个表都添加主键或唯一索引。这样就能确保应用SQL操作时可以有效的更新逻辑备用数据库里的数据了。
复制本页网址和标题,发送给你QQ/Msn的好友一起分享
上一篇:Sql server CLR自定义类型存储对象
下一篇:Oracle DBMS_REPAIR包修复损坏数据块