ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 今天逻辑dataguard 配置成功!

今天逻辑dataguard 配置成功!

原创 Linux操作系统 作者:oracle_ren 时间:2009-02-17 15:06:55 0 删除 编辑

一:

Create a Physical Standby Database

还要在主库上检测是否有不支持的数据库对象类型。

 

includes the following main topics:

Prerequisite Conditions for Creating a Logical Standby Database

Step-by-Step Instructions for Creating a Logical Standby Database

 

 

二:Creating a Logical Standby Database

Table 4–2 Creating a Logical Standby Database

Reference Task Database

Section 4.2.1 Create a Physical Standby Database Primary

Section 4.2.2 Stop Redo Apply on the Physical Standby Database Standby

Section 4.2.3 Prepare the Primary Database to Support a Logical Standby Database Primary

Section 4.2.4 Transition to a Logical Standby Database Standby

Section 4.2.5 Open the Logical Standby Database Standby

Section 4.2.6 Verify the Logical Standby Database Is Performing Properly Standby

备库:

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Prepare the Primary Database to Support a Logical Standby Database

二:Primary端:Prepare the Primary Database for Role Transitions

1

LOG_ARCHIVE_DEST_3=

'LOCATION=/arch2/chicago/

VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE)

DB_UNIQUE_NAME=chicago'

LOG_ARCHIVE_DEST_STATE_3=ENABLE

 

2 EXECUTE DBMS_LOGSTDBY.BUILD;

Transition to a Logical Standby Database

Convert to a Logical Standby Database

Create a New Password File

Adjust Initialization Parameters for the Logical Standby Database

 

show parameter db_name;

shutdown immediate

startup mount

 此处有点不清

mount 状态

ALTER DATABASE RECOVER TO LOGICAL STANDBY cuugdg;

关于db_name(注意哟,这可不是db_unique_name,不同于物理standby,逻辑standby是一个全新的数据库,因此建议你指定一个唯一的,与primary不同的数据库名),如果当前使用spfile,则数据库会自动修改其中的相关信息,如果使用的pfile,在下次执行shutdown的时候oracle会提示你去修改db_name初始化参数的值。

 

Create a New Password File

orapwd file=$ORACLE_HOME/dbs/pwdcuugdg.ora  password=cuug entries=200

 

Adjust Initialization Parameters for the Logical Standby Database

 

Example 4–2 Modifying Initialization Parameters for a Logical Standby Database

LOG_ARCHIVE_DEST_1=

'LOCATION=/arch1/boston/

VALID_FOR=(ONLINE_LOGFILES,ALL_ROLES)

DB_UNIQUE_NAME=boston'

LOG_ARCHIVE_DEST_2=

'SERVICE=chicago LGWR ASYNC

VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)

DB_UNIQUE_NAME=chicago'

LOG_ARCHIVE_DEST_3=

'LOCATION=/arch2/boston/

VALID_FOR=(STANDBY_LOGFILES,STANDBY_ROLE)

DB_UNIQUE_NAME=boston'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

LOG_ARCHIVE_DEST_STATE_3=ENABLE

 

如果启动用的是pfile 要改数据库名!

SQL> SHUTDOWN immediate;

SQL> STARTUP MOUNT;

 

 

Mount状态下

Open the Logical Standby Database

ALTER DATABASE OPEN RESETLOGS;

创建spfile spfile启动 数据库。

ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

管理

alter database stop logical standby apply;

 

alter database start logical standby apply;
测试:

在主库上:

create user test4 identified by test4;

grant connect,resource to test4;

conn test4/test4@lsnode1;

create table test(name varchar2(20));

insert into test values('hi, Data Guard');

commit;

conn / as sysdba;

alter system switch logfile;

 

切换

http://www.ningoo.net/html/2008/oracle10gr2_logical_standby_database_switchover.html

相对物理备库的切换,逻辑备库的切换稍微复杂点,但只要按照步骤,整个操作过程也可以在很短的时间内完成。这里记录下主库正常时的switchover操作过程:

1.切换前的检查
包括主备库参数设置,主备库的TNS设置,以及应用连接数据库的TNS等,确保主备库角色转换后整个系统运行不受影响。

2.主库准备切换

alter database prepare to switchover to logical standby;

命令执行成功后,主库的状态

select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
PREPARING SWITCHOVER

3.备库准备切换

alter database prepare to switchover to primary;

命令执行成功后,备库的状态

select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
PREPARING SWITCHOVER

4.主库开始切换
执行完第3步后,现在的备库需要生成logminer所需要的数据字典信息,然后传送到现在的主库,所以要执行逻辑备库切换,必须在备库也设置到主库的归档路径,并且主备库监听都需要保持开启。否则,切换的状态就会一直停留在PREPARING SWITCHOVER

备库数据字典信息传递到主库后,主库的状态变成TO LOGICAL STANDBY,这时才能执行实际的切换。

select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO LOGICAL STANDBY

alter database commit to switchover to logical standby;

注:在PREPARING SWITCHOVER状态时,可以通过执行以下命令取消切换操作:

alter database prepare to switchover cancel;

5.从库切换
上一步成功后,备库的状态应该变成了TO PRIMARY,则可以执行切换

select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO PRIMARY

alter database commit to switchover to primary;

6.在新的备库启动日志应用进程

alter database start logical standby apply;

如果是实时应用,则

alter database start logical standby apply immediate;

 

 

当主库由于某种原因不可用时,需要考虑将备库直接拉起来,这就是failover。基本原理和操作步骤和switchover差不多只是不管主库,直接将备库切换成新的主库。

.切换前的检查

确保所有能应用的归档都已经应用。确保监听设置正确。确保切换后应用能连接到新的主库等。

.停止SQL Apply

如果原来是停止的,那么可能还有部分最新的日志没有应用,则最好先应用一下日志,减少最终切换需要的时间:

alter database start logical standby apply finish;

alter database stop logical standby apply;

.激活备库

以下命令会终止RFS,然后应用还未应用的日志,最后将数据库转换成primary角色。

alter database activate logical standby database finish apply;

至此,逻辑备库已经转换成主库,非常的简单。由于数据库本身是open的,转换后无须再作任何操作

select database_role from v$database;

DATABASE_ROLE
----------------
PRIMARY

.处理其他备库

如果原来的DataGuard中还有不止一个逻辑备库,则其中一个逻辑备库failover成主库以后,其他的备库需要重新指向新的主库。首先在其他备库创建一个到新主库的database link

alter session disable guard;
create database link newprimary connect to user identified by password using 'newprimary';       
alter session enable guard;

然后重新指向新的备库

alter database start logical standby apply new primary newprimary;

如果执行时出现ORA-16109: failed to apply log data from previous primary,则备库只有重做了。

 

 

Verify the Logical Standby Database Is Performing Properly

 

Monitoring Log File Archival Information

 

SELECT THREAD#, SEQUENCE#, ARCHIVED, STATUS FROM V$LOG;

 

SQL> SELECT MAX(SEQUENCE#), THREAD# FROM V$ARCHIVED_LOG GROUP BY THREAD#;

Step 3 Determine the most recent archived redo log file at each destination.

Enter the following query on the primary database to determine which archived redo

log file was most recently transmitted to each of the archiving destinations:

 

SQL> SELECT DESTINATION, STATUS, ARCHIVED_THREAD#, ARCHIVED_SEQ#

2> FROM V$ARCHIVE_DEST_STATUS

3> WHERE STATUS <> 'DEFERRED' AND STATUS <> 'INACTIVE';

 

 

 

 

 

 

下一篇:开始使用FireFox 3 Beta 2

Oracle10gR2 Logical Standby(二)配置前需要考虑的问题

作者:NinGoo | 【转载须以超链接形式标明文章原始出处和作者信息】

逻辑备库只是对于主库的一个逻辑意义上的数据冗余,不像物理备库能够在block级别上和主库保持一致。所以有其优点,也有其缺点。比如主库的一个datafile损坏,可以从物理备库拷贝对应的文件过来然后recover datafile就可以恢复,逻辑备库则无法实现这样保护了。由于是SQL APPLY,对于一些数据类型也是有限制的。

不支持的数据类型

Oracle10gR2logical standby已经能支持大多数的数据类型了,包括CLOB/BLOB/LONG等,但还是有几种类型是不支持的。如果主库中有使用到这些数据类型,则需要使用其他方式进行处理。

BFILE
Collections (including VARRAYS and nested tables)
Encrypted columns
Multimedia data types (including Spatial, Image, and Context)
ROWID, UROWID
User-defined types
XMLType

可以通过查询DBA_LOGSTDBY_UNSUPPORTED视图来查看当前库中是否有table包含了这些不支持的数据类型

NING@ning>select distinct owner,table_name from DBA_LOGSTDBY_UNSUPPORTED;

no rows selected

如果发现有不支持的table,则可以进一步查询得到不支持的是哪些列和列的类型。

此外,压缩段存储是不支持的。需要修改系统元数据的PL/SQL过程如DBMS_JAVA, DBMS_REGISTRY, DBMS_ALERT, DBMS_SPACE_ADMIN, DBMS_REFRESH, DBMS_REDEFINITION, DBMS_SCHEDULER, and DBMS_AQ也是不支持的,也就是说,这些包在主库可以执行,但是不会将相应的改变传递到备库去。但有一个例外,就是DBMS_JOB。使用DBMS_JOB提交的Job会复制到备库,但是在备库的job是不会调度运行的,只有在切换后,原来的备库变成新的主库,这些Job会根据原来主库执行的情况自动启动。这个我在测试的时候碰到在主库提交一个Job,在备库看不到,直到在主库remove后,在备库的dba_jobs中才能查到该Job的记录,比较奇怪。先记录下来,以后再详细测试。

默认不复制的schema

对于一些系统schema,逻辑备库默认是忽略其实际变更的。逻辑备库和主库只是逻辑意义上也就是用户数据保持一致,元数据自然是不应该复制的,否则就乱套了。

SYS@ning>select owner,name from DBA_LOGSTDBY_SKIP;

OWNER                          NAME
------------------------------ ------------------------------
SYSTEM                         %
SYS                            %
DIP                            %
OUTLN                          %
WMSYS                          %
DBSNMP                         %

不支持的语句

以下语句在主库执行时不会应用到备库。基本上,只影响元数据的东西都是不会在备库应用的。

ALTER DATABASE
ALTER MATERIALIZED VIEW
ALTER MATERIALIZED VIEW LOG
ALTER SESSION
ALTER SYSTEM
CREATE CONTROL FILE
CREATE DATABASE
CREATE DATABASE LINK
CREATE PFILE FRO

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17069315/viewspace-553553/,如需转载,请注明出处,否则将追究法律责任。

下一篇: hp下安装oracle10g
请登录后发表评论 登录
全部评论

注册时间:2008-12-26

  • 博文量
    20
  • 访问量
    64797