读书人

转载熟思哥的ORACLE RAC数据库配置Dat

发布时间: 2012-08-25 10:06:20 作者: rapoo

转载三思哥的ORACLE RAC数据库配置Dataguard环境

ORACLE 中的RAC特性保护的是实例,RMAN特性保持的是数据,而Dataguard特性则是连实例带数据一块"保"了,三个特性相互配合能够在一定程度上构建一个安全可靠高可用的ORACLE数据库平台。

  之前三思笔记系列文章分别描述过RAC的创建、RMAN管理以及Dataguard特性应用等方面的内容,本文将通过实践,演示如何为RAC数据库创—ataguard配置。

一、做足准备工作

  Dataguard 环境的配置就跟谈恋爱似的,不是一个人说了算,必须要两个人(Primary?db+Standby?db)相互配合。不过在这两个真正搭上线之前,临出门拾掇拾掇还是非常有必要的,最起码得照照镜子,看看眼神够不够犀利,腰肢够不够芙蓉,做好往前推三百年,往后推三百年,总共六百年无人超越的思想准备。

  我个人认为,DBA是个很严谨的岗位,因此同样要求从事这项工作的人也尽可能严谨,准备这个事儿呢,是为了让后续的操作更稳妥。对于Dataguard环境的创建,这个准备并不复杂,就当是环境初始化吧,如果看过之前的三思笔记--一步一步学Dataguard,那么本步准备工作就可以直接跳过了。

  设定环境如下:

JSSDB>?show?parameter?log_archive_dest

NAME?????????????????????????????????TYPE????????VALUE

------------------------------------?-----------?------------------------------

log_archive_dest?????????????????????string

log_archive_dest_1???????????????????string??????location=/data/oradata/jssdbn1

?????????????????????????????????????????????????/archivelog

log_archive_dest_10??????????????????string

log_archive_dest_2???????????????????string??????service=jssstd?lgwr?async?vali

?????????????????????????????????????????????????d_for=(online_logfiles,primary

?????????????????????????????????????????????????_role)?db_unique_name=jssstd

log_archive_dest_3???????????????????string

log_archive_dest_4???????????????????string

log_archive_dest_5???????????????????string

log_archive_dest_6???????????????????string

log_archive_dest_7???????????????????string

log_archive_dest_8???????????????????string

log_archive_dest_9???????????????????string

log_archive_dest_state_1?????????????string??????enable

log_archive_dest_state_10????????????string??????enable

log_archive_dest_state_2?????????????string??????enable

log_archive_dest_state_3?????????????string??????enable

log_archive_dest_state_4?????????????string??????enable

log_archive_dest_state_5?????????????string??????enable

log_archive_dest_state_6?????????????string??????enable

log_archive_dest_state_7?????????????string??????enable

log_archive_dest_state_8?????????????string??????enable

log_archive_dest_state_9?????????????string??????enable

JSSDB>?show?parameter?fal;

NAME?????????????????????????????????TYPE????????VALUE

------------------------------------?-----------?------------------------------

fal_client???????????????????????????string

fal_server???????????????????????????string

JSSDB>?show?parameter?file_name_convert;

NAME?????????????????????????????????TYPE????????VALUE

------------------------------------?-----------?------------------------------

db_file_name_convert?????????????????string

log_file_name_convert????????????????string

JSSDB>?show?parameter?standby_file_management;

NAME?????????????????????????????????TYPE????????VALUE

------------------------------------?-----------?------------------------------

standby_file_management??????????????string??????MANUAL

  再来看看Standby:

JSSSTD>?show?parameter?log_archive_dest

NAME?????????????????????????????????TYPE????????VALUE

------------------------------------?-----------?------------------------------

log_archive_dest?????????????????????string

log_archive_dest_1???????????????????string??????location=/data1/jssstd/arclog

?????????????????????????????????????????????????valid_for=(all_logfiles,all_ro

?????????????????????????????????????????????????les)?db_unique_name=jssstd

log_archive_dest_10??????????????????string

log_archive_dest_2???????????????????string

log_archive_dest_3???????????????????string

log_archive_dest_4???????????????????string

log_archive_dest_5???????????????????string

log_archive_dest_6???????????????????string

log_archive_dest_7???????????????????string

log_archive_dest_8???????????????????string

log_archive_dest_9???????????????????string

log_archive_dest_state_1?????????????string??????enable

log_archive_dest_state_10????????????string??????enable

log_archive_dest_state_2?????????????string??????enable

log_archive_dest_state_3?????????????string??????enable

log_archive_dest_state_4?????????????string??????enable

log_archive_dest_state_5?????????????string??????enable

log_archive_dest_state_6?????????????string??????enable

log_archive_dest_state_7?????????????string??????enable

log_archive_dest_state_8?????????????string??????enable

log_archive_dest_state_9?????????????string??????enable

JSSSTD>?show?parameter?fal?

NAME?????????????????????????????????TYPE????????VALUE

------------------------------------?-----------?------------------------------

fal_client???????????????????????????string??????JSSSTD

fal_server???????????????????????????string??????jssdbn1,?jssdbn2

JSSSTD>?show?parameter?file_name_convert

NAME?????????????????????????????????TYPE????????VALUE

------------------------------------?-----------?------------------------------

db_file_name_convert?????????????????string??????+ASMDISK1/jssdb/datafile,?/dat

?????????????????????????????????????????????????a1/jssstd,?+ASMDISK1/jssdb/tem

?????????????????????????????????????????????????pfile,?/data1/jssstd

log_file_name_convert????????????????string??????+ASMDISK1/jssdb/onlinelog,?/da

?????????????????????????????????????????????????ta1/jssstd

JSSSTD>?show?parameter?standby_file_management

NAME?????????????????????????????????TYPE????????VALUE

------------------------------------?-----------?------------------------------

standby_file_management??????????????string??????AUTO

  其实根本不用看,肯定不合格,因为前面就没配过,从上述返回信息可以看出,Standby没有任何向Primary发送归档的设置,Primary端也没有fal相关的设置,像*_file_name_convert这类参数也未设置,另外standby?redo等也不用看了,前面也根本未创建(不过对于测试环境,这个问题倒也不影响),接下来就是要改这些初始化参数,操作如下:

JSSDB>?alter?system?set?fal_server=jssstd;

System?altered.

JSSDB>?alter?system?set?fal_client=jssdb;

System?altered.

JSSDB>?alter?system?set?db_file_name_convert=¨/data1/jssstd¨,¨+ASMDISK1/jssdb¨?scope=spfile;

System?altered.

JSSDB>?alter?system?set?log_file_name_convert=¨/data1/jssstd¨,¨+ASMDISK1/jssdb¨?scope=spfile;

System?altered.

JSSSTD>?alter?system?set?log_archive_dest_2=¨service=jssdb?lgwr?async?valid_for=(online_logfiles,primary_role)?db_unique_name=jssdb¨;

System?altered.

  参数修改完毕,接下来开始进行角色转换。就本例而言,需要先到Primary端关闭其它实例仅保留一台实例,然后执行下列语句:

JSSDB>?alter?database?commit?to?switchover?to?physical?standby?with?session?shutdown;

Database?altered.

  with?session?shutdown 子句专门用来处理,执行转换操作时仍有用户在连接的情况,如果附加了该子句,Primary数据库执行switchover,就会自动断开仍在连接该实例的无关会话。

  重启原Primary,重启过后原Primary就是在以Standby身份运行了:

JSSDB>?shutdown?immediate

ORA-01507:?database?not?mounted

ORACLE?instance?shut?down.

JSSDB>?startup?mount

ORACLE?instance?started.

Total?System?Global?Area??285212672?bytes

Fixed?Size??????????????????2083368?bytes

Variable?Size?????????????176162264?bytes

Database?Buffers??????????100663296?bytes

Redo?Buffers????????????????6303744?bytes

Database?mounted.

JSSDB>?select?DATABASE_ROLE,open_mode?from?v$database;

DATABASE_ROLE????OPEN_MODE

----------------?----------

PHYSICAL?STANDBY?MOUNTED

  转到原Standby端操作:

JSSSTD>?alter?database?commit?to?switchover?to?primary;

Database?altered.

  注意,此时Standby要确保已启动REDO应用,否则转换时有可能失败。

  重新启动原Standby:

JSSSTD>?shutdown?immediate

ORA-01507:?database?not?mounted

ORACLE?instance?shut?down.

JSSSTD>?startup

ORACLE?instance?started.

Total?System?Global?Area??285212672?bytes

Fixed?Size??????????????????2083368?bytes

Variable?Size??????????????88081880?bytes

Database?Buffers??????????188743680?bytes

Redo?Buffers????????????????6303744?bytes

Database?mounted.

Database?opened.

JSSSTD>?select?DATABASE_ROLE,open_mode?from?v$database;

DATABASE_ROLE????OPEN_MODE

----------------?----------

PRIMARY??????????READ?WRITE

  新的Primary诞生了,切换下日志,看看Standby端的接收是否正常:

JSSSTD>?select?thread#,max(sequence#)?from?v$archived_log?group?by?thread#;

???THREAD#?MAX(SEQUENCE#)

----------?--------------

?????????1????????????311

?????????2????????????144

JSSSTD>?alter?system?switch?logfile;

System?altered.

JSSSTD>?select?thread#,max(sequence#)?from?v$archived_log?group?by?thread#;

???THREAD#?MAX(SEQUENCE#)

----------?--------------

?????????1????????????312

?????????2????????????144

  由于新的Primary只有一个实例,因此其实我们只需要关注thread#1生成的日志即可,转到新的Standby看看:

JSSDB>?select?thread#,max(sequence#)?from?v$archived_log?group?by?thread#;

???THREAD#?MAX(SEQUENCE#)

----------?--------------

?????????1????????????312

?????????2????????????144

  成功接收,角色转换基本成功鸟!

读书人网 >其他数据库

热点推荐