Basileus1999

18 08, 2006

oracle10.2.0 on redHat linux as4的data guard配置

high availability — 作者 Basileus1999 @ 15:29

1)在主从两机都设置好操作系统参数,建立oracle 安装用户及相关目录
vi /etc/sysctl.conf

2)主从两机设置oracle环境变量
vi .bash_profile

3)在主机上装oracle
4)打包$ORACLE_HOME,$ORACLE_BASE下面的所有文件到并cp到从库上相应位置
5)在主库建库
6)备份数据文件及临时文件(可用rman),把下面的所有文件传到从库并在从库建立相应目录
select file_name from dba_data_files
union
select name from v$tempfile;
7)在主库上设计归档模式为强迫归档模式,并且设置自动归档及归档路径
8)在主库上制作控制文件并传到从库
alter database create standby controlfile as '/u01/app/sby.ctl';
9)在主从库配置相应的listener.ora和tnsnames.ora
并且最后启动listener
lsnrctl
lsnrctl>stop
lsnrctl>start
lsnrctl>status


并查看状态
tnsping自己及对方,如果可以连通,那么配置成功
[oracle@ORACLE0 dbs]$ tnsping primary

TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 18-AUG-2006 13:58:50

Copyright (c) 1997, 2005, Oracle. All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.6.6)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = vnv1)))
OK (10 msec)

10)在主库创建pfile,并传到从库相应位置,命令如下
create pfile='/u01/app/initvnv.ora' from spfile;
11)修改这个pfile参数文件
主要以下几部分:
control_file,standby_archive_dest,fal_server,fal_client,standby_file_management几个参数。
如果发生切换得要修改这几个参数
当然,传文件时记得要确认在从库有admin目录及下面的子目录,还有standby_archive_dest这个参数
的目录等
12)这时可以启动从库,并mount
startup nomount;
alter database mount standby database;
设计为备份恢复模式
alter database recover managed standby database disconnect from session;
13)设置主库到从库的归档
alter system set log_archive_dest_2='SREVICE=standby MANDATORY REOPEN=60';
14)在主库上切换日志,到从库alert.log下查看是否应用了日志或者正确接受到归档日志
tail -f alert.log
如下所示:
[oracle@ORACLE0 bdump]$ tail -f alert_vnv1.log
RFS[1]: No standby redo logfiles created
RFS[1]: Archived Log: '/u01/app/oracle/oradata/vnv1/standbyarchive/1_19_598203109.dbf'
Fri Aug 18 14:48:22 2006
Media Recovery Log /u01/app/oracle/oradata/vnv1/standbyarchive/1_19_598203109.dbf
Media Recovery Waiting for thread 1 sequence 20
Fri Aug 18 15:00:15 2006
db_recovery_file_dest_size of 2048 MB is 0.00% used. This is a
user-specified limit on the amount of space that will be used by this
database for recovery-related files, and does not reflect the amount of
space available in the underlying filesystem or ASM diskgroup.

以下是一些常见操作:

[oracle@ORACLE0 dbs]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Fri Aug 18 13:58:55 2006

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> startup nomount;

SQL>
SQL> show user
USER is ""
SQL> conn sys/sys123 as sysdba
Connected.
SQL> startup nomount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> shutdown immediate;
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
SQL> startup nomount;
ORA-32004: obsolete and/or deprecated parameter(s) specified
ORACLE instance started.

Total System Global Area 2063597568 bytes
Fixed Size 1220312 bytes
Variable Size 788529448 bytes
Database Buffers 1258291200 bytes
Redo Buffers 15556608 bytes
SQL> alter database mount standby database;

Database altered.

在主库
SQL> alter system set log_archive_dest_2='SERVICE=standby MANDATORY REOPEN=60';

系统已更改。

在从库
SQL> alter database recover managed standby database disconnect from session;

Database altered.
在主库撤换日志
SQL> select *from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIV STATUS
---------- ---------- ---------- ---------- ---------- ------ -------------
4 1 14 104857600 2 YES INACTIVE
5 1 15 104857600 2 YES INACTIVE
6 1 16 104857600 2 NO CURRENT

SQL> alter system switch logfile;

系统已更改。

SQL> select *from v$log;

GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARCHIV STATUS
---------- ---------- ---------- ---------- ---------- ------ -------------
4 1 17 104857600 2 NO CURRENT
5 1 15 104857600 2 YES INACTIVE
6 1 16 104857600 2 YES ACTIVE
在从库查看日志情况得到

oracle@ORACLE0 bdump]$ tail -f alert_vnv1.log
ORA-00312: online log 4 thread 1: '/u01/app/oracle/oradata/vnv1/redo04.log'
Clearing online redo logfile 4 complete
Media Recovery Log /u01/app/oracle/oradata/vnv1/standbyarchive/1_10_598203109.dbf
Fri Aug 18 14:05:36 2006
Completed: alter database recover managed standby database disconnect from session
Fri Aug 18 14:05:38 2006
Media Recovery Log /u01/app/oracle/oradata/vnv1/standbyarchive/1_11_598203109.dbf
Media Recovery Log /u01/app/oracle/oradata/vnv1/standbyarchive/1_12_598203109.dbf
WARNING: File being created with same name as in Primary
Existing file may be overwritten
Fri Aug 18 14:06:18 2006
Recovery created file /u01/app/oracle/oradata/vnv1/vnv01.dbf
Successfully added datafile 5 to media recovery
Datafile #5: '/u01/app/oracle/oradata/vnv1/vnv01.dbf'
Media Recovery Log /u01/app/oracle/oradata/vnv1/standbyarchive/1_13_598203109.dbf
Fri Aug 18 14:06:37 2006
Media Recovery Log /u01/app/oracle/oradata/vnv1/standbyarchive/1_14_598203109.dbf
Media Recovery Log /u01/app/oracle/oradata/vnv1/standbyarchive/1_15_598203109.dbf
Media Recovery Log /u01/app/oracle/oradata/vnv1/standbyarchive/1_16_598203109.dbf
Fri Aug 18 14:06:48 2006
Media Recovery Waiting for thread 1 sequence 17

可知已经应用了日志1_10----1_16,在等待日志17号的归档
这是在主库再切换一次日志,可发现应用了17号日志,等待18号日志的到来。。。
RFS[1]: Archived Log: '/u01/app/oracle/oradata/vnv1/standbyarchive/1_17_598203109.dbf'
Fri Aug 18 14:08:38 2006
Media Recovery Log /u01/app/oracle/oradata/vnv1/standbyarchive/1_17_598203109.dbf
Media Recovery Waiting for thread 1 sequence 18

常见操作命令:
置standby db为恢复管理模式
startup nomount;
alter database mount standby database;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
DISCONNECT FROM SESSION;

To start real-time apply, issue the following statement:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
USING CURRENT LOGFILE;

关闭standby db
SQL> SELECT PROCESS, STATUS FROM V$MANAGED_STANDBY;

If Redo Apply is running, cancel it as shown in the following example:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Shut down the standby database.
SQL> SHUTDOWN IMMEDIATE;

置为read only 模式
To open a standby database for read-only access when it is currently shut down:
Start, mount, and open the database for read-only access using the following statement:

SQL> STARTUP;

To open a standby database for read-only access when it is currently performing Redo Apply:
Cancel Redo Apply:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Open the database for read-only access:
SQL> ALTER DATABASE OPEN;

To change the standby database from being open for read-only access to performing Redo Apply:
Terminate all active user sessions on the standby database.
Restart Redo Apply. To start Redo Apply, issue the following statement:

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

To enable real-time apply, include the USING CURRENT LOGFILE clause:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE;

Switchover
1) 在当前服务器
sql>SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO STANDBY
1 row selected

2)转换当前服务器为备份服务器角色
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY;

3)关闭然后启动到mount
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;

4)查看standby db的状态
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-----------------
TO_PRIMARY
1 row selected

5)转换角色为primary
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;


6)打开新的primary db
如果开始不是read_only状态,则
SQL> ALTER DATABASE OPEN;
如果为read_only状态,则
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;

7)apply services 在新的standby db
8)切换日志
SQL> ALTER SYSTEM SWITCH LOGFILE;


Failover 步骤
1 验证日志差距
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;
THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- --------------
1 90 92

2 应用这些差距
SQL> ALTER DATABASE REGISTER PHYSICAL LOGFILE 'filespec1';

3 Initiate a failover on the target physical standby database.
Issue the following statement to initiate the failover:
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE;

4)转换角色
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

5)打开数据库
alter database open;

--如果处于read only状态
shutdown immediate;
startup

6) backup 新的primary db
7) restore 失败的primary db


最新回复


发表评论







Powered by pLog