您的位置:首页 > 数据库 > Oracle

oracle 10g dataguard物理standby配置 (数据文件以文件系统存储)

2015-09-07 10:11 651 查看
最近客户想给生产库搭建dataguard,oracle版本主要是10gR2版本,可能小版本有所不同。

数据库文件有的采用aix 的文件系统存储,有的则是使用的裸设备,所以分别在文件系统和裸设备上测试了一番,搭建起来差不多,裸设备的情况就是需要事先在备库上建好对应的裸设备文件。

下面记录了我在文件系统上搭建dataguard的过程,跟操作系统关系不大,aix,linux都通用

1.主库上 database force logging

alter database force logging;

2.如果主库是非归档模式,需要开启归档

3.创建主库口令文件

orapwd file='/oracle/dg_backup/orapwdevdb' password=oracle entries=5

4.修改主库参数:

alter system set log_archive_config='dg_config=(devdb,devdb_dg)'  scope=both;

alter system set log_archive_dest_1='LOCATION=/oracle/oradata/devdb/archive 

valid_for=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=devdb' scope=both;

alter system set LOG_ARCHIVE_DEST_2='SERVICE=devdb_dg LGWR ASYNC 

valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=devdb_dg' 

scope=both;

alter system set LOG_ARCHIVE_DEST_STATE_1=enable scope=both;

alter system set log_archive_dest_state_2=enable scope=both;

--alter system set remote_login_passwordfile=EXCLUSIVE scope=both;

alter system set fal_server='devdb_dg' scope=both;

alter system set fal_client='devdb' scope=both;

alter system set standby_file_management='auto' scope=both;

5.给主库添加standby log,如果使用裸设备的话,需要先创建裸设备文件,大小要和redo日志一样

SQL> alter database add standby logfile group 4 '/oracle/oradata/devdb/standby_redo04.log' size 50m;

SQL> alter database add standby logfile group 5 '/oracle/oradata/devdb/standby_redo05.log' size 50m;

SQL> alter database add standby logfile group 6 '/oracle/oradata/devdb/standby_redo06.log' size 50m;

SQL> alter database add standby logfile group 7 '/oracle/oradata/devdb/standby_redo07.log' size 50m;

6.创建主库pfile文件,放到/u01/oracle/dg_backup目录下,该目录用来存放备份文件,统一传输到备库上

create pfile='/oracle/dg_backup/initdevdb.ora' from spfile;

7.配置监听文件和tnsnames文件

[oracle@Redhat admin]$ cat listener.ora

测试通过的:

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = devdb)

      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)

      (SID_NAME = orcl)

    )

   )

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))

    )

  )

[oracle@Redhat admin]$ cat tnsnames.ora

devdb =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.95.250)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = devdb)

    )

  )

devdb_dg=

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.95.251)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = devdb)

    )

  )

8.生成数据库备份 

 RMAN> backup database format='/oracle/dg_backup/%d_%s.dbf' plus archivelog;   

建立备用库的控制文件  

SQL> alter database create standby controlfile as '/oracle/dg_backup/standby_ctl01.ctl'; 

9.将dg_backup目录下的备份文件传送到备库上的dg_backup目录下

 Cd  /oracle/dg_backup

Scp * 192.168.95.251:/oracle/dg_backup/

10.修改备库参数文件

*.DB_UNIQUE_NAME='devdb_dg'

*.log_archive_config='DG_CONFIG=(devdb,devdb_dg)'

*.log_archive_dest_1='location=/oracle/oradata/devdb/archive/ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=devdb_dg'

*.log_archive_dest_2='SERVICE=devdb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=devdb'

*.STANDBY_FILE_MANAGEMENT=AUTO

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.FAL_SERVER='devdb'

*.FAL_CLIENT='devdb_dg'

11.配置监听和tnsnames文件,启动监听,验证主备库间的连通性,tnsping

将主库的listener.ora和tnsnames.ora拷贝过来即可

12.将oracle 口令文件放到dbs下面

13. 恢复数据库

使用修改过的pfile,创建spfile 启动数据库到nomount状态,使用rman进行恢复数据库

Create spfile from pfile='/oracle/dg_backup/initdevdb.ora';

Startup nomount

alter database mount standby database ;

rman target /

restore database;

--恢复数据库  ----sqlplus 

recover managed standby database disconnect from session;

alter database recover managed standby database cancel;

alter database recover managed standby database disconnect from session; 

在主库上执行次日志切换,查看备库上归档日志是否接收到,一切正常的话,环境就搭建成功了,细节问题需要自己慢慢推敲了。

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

---停掉redo应用

alter database recover managed standby database cancel;

----更改到最大可用模式

alter system set LOG_ARCHIVE_DEST_2='SERVICE=devdb_dg LGWR SYNC AFFIRM

valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=devdb_dg' 

scope=both;

alter database set standby database to maximize availability;  ---最大保护:protection   最大性能:PERFORMANCE

alter database set standby database to maximize performance;

alter database set standby database to maximize protection;

---查看保护模式(主库执行)

select protection_mode ,protection_level from v$database;

---查看是否存在缺失的日志文件,做fail over的时候,可以将缺失的文件拷贝到备库上,

select * from v$archive_gap

alter database register physical standby '/u01/oracle/oradata/devdb/archive/xxx.dbf';

alter database recover managed standby database cancel ;

alter database recover managed standby database finish (force);

----查看日志传送方式是归档进程arch,还是日志读写进程lgwr

SQL> select dest_name,archiver from v$archive_dest;

---在备库上查看是否应用日志进行恢复

select process,status from v$managed_standby;

---查看switchoverzhuangt

select open_mode,database_role,switchover_status from v$database;

---打开到实时应用状态

alter database recover managed standby database using current logfile disconnect; --开启实时应用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: