您的位置:首页 > 移动开发

Data Guard详解---Physical Standby Database搭建

2012-07-18 16:19 141 查看

Preparing the Primary Database for Standby Database Creattion

在创建备库之前,你必须首先确保你的主库是正确配置了的。主要从以下几个方面去检查是否配置正确:

1、Enable Forced Logging

通过使用SQL>ALTER DATABASE FORCE LOGGING语句来使主库运行于FORCE LOGGING模式

(这个语句可能会花费相当大的时间,因为你会等待所有的没有写日志的I/O操作完成)

2、Create a Password File

每一个在DG配置中的数据库都必须使用一个password file。而且给SYS用户的password file必须在



每一个系统中相对于日志数据传送来说是唯一的。

3、Configure a Standby Redo Log

在最大保护模式与最大可用模式下,standby redo log是必须的。而LGWR同步传输模式是被推荐用于



所有的数据库中的。DG能够从一个standby redo log中recover和应用更多的redo记录,这个比单纯从



archived redo log file 恢复还要多。

我们必须要好好的规划standby redo log的配置,在创建standby database时创建所有需要的日志



组和日志组成员。现在主要从以下几个方面去配置我们的standby redo log。

1)Ensure log file size are identical on the primary and standby database。也就



是说我们的standby redo log file的大小必须要去当前的主库的online redo log file大小相匹配。

2)Determine the appropriate number of standby redo log file groups。换句话说,



我们的standby redo log file组的数目一定要比online redo log file组的数目多一个。但是,



standby redo log file组的推荐数目是要根据主库上的线程数决定的。通过用下面的公式来确定



standby redo log file groups的最适合数目:

(每一个线程最大处理日志文件数+1)*最大的线程数

通过应用这个公式,我们可以减少主库实例的LGWR(日志写进程)因为standby redo log



file不能被分配给standby database而引起的锁问题。比如说,如果主库有2个线程,而且每个线程处理



2个log files。那些6个standby redo log file groups就是standby database最适合的数目了

3)Verify related database parameters and setting。要核查在创建数据库时,我们设定



的MAXLOGFILES和MAXLOGMEMBERS的属性大小。如果想要修改这两个参数,唯一的方法就是重建数据库和



控制文件。

4)Create standby redo log file groups。通过用下面的语句进行创建和添加:

SQL>ALTER DATABASE ADD STANDBY LOGFILE THREAD 5



('/ORACLE/DBS/log1c.rdo','/oracle/dbs/log2c.rdo') size 500M;(为一个线程添加)

SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 10



('/oracle/dbs/log1c.rdo','/oracle/dbs/log2c.rdo') size 500M;(为一个日志组添加)

5)Verify the standby redo log file groups were created

SQL>SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;

4、Set Primary Database Initialization Parameters

在主库上,你定义了初始化参数来控制redo传输服务(作为主库角色)。还有其他一些参数需要添加来控



制redo数据和日志应用服务(作为备库角色)。



主库的参数文件:

DB_NAME=chicago

DB_UNIQUE_NAME=chicago

LOG_ARCHIVE_CONFIG='DB_CONFIG=(chicago,boston)'

CONTROL_FILES='/arch1/chicago/control01/ctl','/arch2/chicago/control02.ctl'

LOG_ARCHIVE_DEST_1=‘LOCATION=、arch1、chicago/ valid_for=(all_logfiles,all_roles)



db_unique_name=chicago'

LOG_ARCHIVE_DEST_2=‘SERVICE=boston LGWR ASYNC valid_for(online_logging,primary_role)

db_unique_name=boston'

LOG_ARCHIVE_DEST_STATE_1=ENABLE

LOG_ARCHIVE_DEST_STATE_2=ENABLE

REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE

LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

LOG_ARCHIVE_MAX_PROCESSES=30

//Standby Role Initialization Parameters

FAL_SERVER=boston

FAL_CLIENT=chicago

DB_FILE_NAME_CONVERT='arch1/boston/','/arch1/chicago/','/arch2/boston','/arch3/chicago/'

STANDBY_FILE_MANGEMENT=auto



5、Enable Archiving

通过以下的SQL语句来实现数据库的归档功能

SQL>shutdown immediate;

SQL>startup mount;

SQL>alter database archivelog;

SQL>alter database open;









以下就一步一来介绍如何创建一个物理的standby database

1、Create a Backup Copy of the Primary Database Datafiles(进行主库的备份)

可以使用用户的备份(backup)或者RMAN来进行对主库文件的备份。



2、Create a Control File for the Standby Database(为standby database创建控制文件)

SQL>startup mount;

接着为我们的standby database创建一个control file。并且打开主库为可以用户访问的

SQL>alter database create standby controlfile as '/tmp/boston.ctl';

SQL>alter database open;



3、Prepare an Initialization Parameter File for the Standby Database(为standby database



创建参数文件)

按照以下步骤来创建我们的Standby database的参数文件

1)Copy the primary database parameter file to the standby database

SQL>create pfile='/tmp/initboston.ora'from spfile;

2) Set initialization parameters on the physical standby database.

DB_NAME=chicago

DB_UNIQUE_NAME=boston

LOG_ARCHIVE_CONFIG='DG_CONFIG=(chicago,boston)'

CONTROL_FILES='/arch1/boston/control01.ctl','/arch2/boston/control02.ctl'

DB_FILE_NAME_CONVERT='chicago','boston'

LOG_FILE_NAME_CONVERT='/arhc1/chicago/','/arch1/boston/','/arch2/cicago/','/arch2/boston



/'

LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc

LOG_ARCHIVE_DEST_1=’location=/arch1/boston/ valid_for=(all_logfiles,all_role)



db_unqiue_name=boston'

log_archive_dest_2='service=chicago lgwr async valid_for=



(online_logfiles,primary_role) db_unique_name=chicago'

log_archive_dest_state_1=enable

log_archive_dest_state_2=enable

remote_login_passwordfile=exclusive

standby_file_management=auto

fal_server=chicago

fal_client=boston



4、Copy Files from the primary System to the Standby System(将主库的文件拷贝到备库的系统



中)

将以上几个文件(数据文件的备份,standby控制文件,参数文件)通过系统copy命令copy到standby



system中。



5、Set up the Environment to Support the Standby Database(设置备库的环境)

通过以下的步骤来创建一个基于窗口的服务,创建一个密码文件,开启oracle net 环境,还有就是



创建一个spfile文件。

1)Create a Windows-based service

如果这个standby是跑在window系统下的话,可以使用oradim命令来创建一个服务与密码文件(这



个是window环境所特有的)

windows>oradim -NEW -SID boston -INTPWD password -STARTMODE manual

2)Create a password file

如果不是windows平台,在standby database上创建一个和主库一样的应用于SYS用户的密码文件



。而且在DG中,每一个数据库的密码文件都必须是唯一的,这样才能使得redo传输能够正常。

3)Configure listeners for the primary and standby databases

分别在主库和备库上,用Oracle Net Manager来配置监听来监听相关的数据库。

通过以下命令来启动和关闭监听

%lsnrctl stop

%lsnrctl start

4)Create Oracle Net service names

分别在主库和备库,用Oracle Net Manager来为主库和备库创建一个网络服务名。这个网络服务



名将被用于redo传输服务中。

5)Create a server parameter file for standby database

在一个空白的standby database中,用SQL语句来为standby databse创建一个服务器参数文件

SQL>create spfile from pfile='initboston.ora';



6、Start the Physical Standby database

通过下面的步骤来开始物理的standby 和 redo 应用

1)Start the physical standby database

在standby database下,运行下面的SQL语句来启动数据库

SQL>startup mount;

2)Start Redo Apply

在standby database下,运行下面的命令来启动Redo Apply

SQL>alter database recover managed standby database disconnect from session;

这一条命令包括了DISCONNECT FROM SESSION选项,所以Redo Apply将会运行在后台的会话中。

3)Test archival operations to the physical standby database

在这个例子中,redo data传输到远程的standby只发现在日志切换的时候。通常的,当一个



online redo log file满了以后,就会发生日志的切换。为了能够强制进行日志切换,来使得redo data



能够马上传输,我们要在primary database中用到这么一个语句:

SQL>alter system switch logfile;



7、Verify the PhyscialStandby database is performingProperly

一旦创建了物理的standby数据库和启动了redo传输服务,你就可以来检查数据库改变时,是否我们



的standby数据库就会跟着变化。

为了看到redo data是否被standby数据库接收到,首先要看一下我们当前standby数据库中现有的



archived redo log files。然后再primary database中进行一次日志切换,然后再次检查我们的



standby数据库,看看日志组的变化。

1)Identify the existin archived redo log files

在standby database中,查询V$ARCHIVED_LOG这个视图来查看现有的归档日志文件。

SQL>SELECT SEQUENCE#,FIRST_TIME,NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY



SEQUENCE#;

2)Force a log switch to archive the current online redo log file

切换到primary database下,执行下面的SQL语句来切换日志,进行归档

SQL>alter system switch logfile;

3)Verify the new redo data was archived on the standby database.

在standby database中,再次查询视图V$ARCHIVED_LOG,查看我们的日志情况。

SQL>SELECT SEQUENCE#,FIRST_TIME,NEXT_TIME FROM V$ARCHIVED_LOG ORDER BY



SEQUENCE#;

4)Verify new archived redo log files were applied

在standby database中,查询V$ARCHIVED_LOG视图来检查归档日志文件是否被应用了

SQL>SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;





后续创建步骤

到了这个时候,物理的Standby databse能够运行且能够提供一个最大性能的数据保护模式。我们还可以



在我们的物理的Standby database配置一下的功能:

1、更改数据库的保护模式

默认情况下,我们的DG是在一个最大性能模式下的。根据实际的生产要求还可以设置其他两种工



作模式,即最大保护模式 和 最大可用模式。这个内容我们之后再来讲解。

2、开始闪回数据库的功能。

下次将介绍Logical Standby Database的创建....





























































































































内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息