ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle Data Gurad Physical Standby 相关说明

Oracle Data Gurad Physical Standby 相关说明

原创 Linux操作系统 作者:season0891 时间:2010-07-03 22:47:49 0 删除 编辑

Oracle Data Guard, 分逻辑Standby和物理Standby。 下面讲的是物理Standby 环境的搭建步骤。 有关Data Guard的一些概念性的理论知识,请参考我的blog, 这里不做过多的说明。

 

Oracle Data Gurad 理论知识

http://blog.csdn.net/tianlesoftware/archive/2010/04/22/5514082.aspx

 

 

一. 启用Force Logging

将Primary数据库置为Force Logging模式。通过下列语句:

 

查看状 态:

SQL> SELECT DATABASE_ROLE,FORCE_LOGGING FROM V$DATABASE;

DATABASE_ROLE    FORCE_LOGGING

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

PRIMARY           NO

 

修改模 式

SQL> alter database force logging;

Database altered.

 

取消Force logging 模式:

SQL> alter database no force logging;

Database altered.

 

说明: 为什么要改成Force Logging

有 一些DDL语句可以通过指定NOLOGGING子句的方式避免写REDO(目的是提高速度,某些时候确实有效)。指定数据库为Force Logging模式后,数据库将会记录除 临时表空间或临时回滚段外所有的操作,而忽略类似NOLOGGING之类的指定参数。如果在执行Force Logging时有NOLOGGING之类的语句在执行,那么Force Logging会等 待,直到这类语句全部执行。

Force Logging是作为固定参数保存在控制文件中,因此其不受重启之类操作的影响(只执行一次即可),如果想取消,可以通过ALTER DATABASE NO FORCE LOGGING语句关闭强制记录。

 

 

 

二. 创建密钥文件 (如果不存在的话)

同 一个Data Guard配置中所有数据库必须都拥有独立的密钥文件,并且必须保证同一个Data Guard配置中,所有数据库服务器的SYS用户拥有相同密码,以保证REDO数据的顺利传输,因为REDO传输服务是通过认证的网络 会话来传输REDO数据,而会话使用包含在密钥文件中的SYS用户密码来认证。

如 果使用DBCA建库则Oracle会自动创建密钥文件,该文件默认路径在%ORACLE_HOME%\database目录下,如果在该目录没能找到对应的密钥文件也没关系,Oracle提供了一个创建密钥文件的命令:orapwd,位于%ORACLE_HOME%\bin目录下,该命令有两种调用方式:带参调用和不带参调用。

不带参调用时,会返回该命令 的调用方式和参数形式,例如:

[oracle@localhost ~]$ orapwd

Usage: orapwd file= password= entries= force=

  where

    file - name of password file (mand),

    password - password for SYS (mand),

    entries - maximum number of distinct DBA and     force - whether to overwrite existing file (opt),

OPERs (opt),

  There are no spaces around the equal-to (=) character.

其中:

file:指定密钥文件名称和路径。

password:SYS用户密码。

entries:指定该数据库能够拥有SYSDBA权限的用户最大数。

force:如果文件存在是否覆盖。

orapwd命令使用非常简单,file和password为必填参数。

 

需要注意Windows平台和Linux/UNIX平台密钥文件的命名规则并不相同:

Windows平台命名规则:PWD[sid].ora  

Linux/UNIX平台命令规则:orapw[sid]  -- 注意:没有文件名,(大小写敏感)

 

示例如下:

[oracle@localhost dbs]$ orapwd file=/u01/app/oracle/product/10.2.0/db_1/dbs/orapworcl password=admin entries=30

 

Oracle OS认证 口令文件 密码丢失处理

http://blog.csdn.net/tianlesoftware/archive/2009/10/20/4698293.aspx

 

 

三.  配置Standby Redologs

对 于最大保护和最高可用性模式,建议为Standby数据库配置Standby Redologs(不配置也可 以,Oracle将在Standby数据库端自动创建归档文件,并虚拟为一组Standby Redologs),并使用LGWR SYNC模式传输REDO数据。

 

1.关于Standby Redologs

Oracle建议DBA在创建Standby数据库时,就考虑Standby Redologs配置的问题。Standby Redologs与Online Redologs非常类似,应该说两者只 是服务对象不同,其他参数属性,甚至操作的命令格式几乎都一样,DBA在设计Standby Redologs的时候完全可以借鉴创建Online Redologs的 思路,如创建几个文件组,每组多个文件冗余之类的。除些之外呢,Oracle提供了一些标准的建议,如下所示:

(1)确保Standby Redologs的文件大小与Primary数据库Online Redologs文件大小相同。这个很好理解,就是为了接收和应用方便嘛。

(2)创建适当数目的日志组。一般而言,Standby Redologs日志组要比Primary数据库的Online Redologs日志文件组数至少多一 个。建议Standby Redologs日志组数量基于Primary数据库的线程数来确定(这里的线 程数可以理解为RAC环境中的节点数)。

有 一个推荐的公式可供参考:(每线程的日志组数+1)×最大线程数。

例 如Primary数据库有两个线程,每个线程分配两组日志,则Standby日志组数建议为6组,使用这个公式可以降低Primary数据库实例LGWR进程锁住的可能性。

 

提 示: 逻辑Standby数据库有可能需要视工作量,增加更多的Standby Redologs组(或增加归档进程),因为逻辑Standby数据库有可能需要 同时写Online Redologs文件。

 

2.管理Standby Redologs

Standby Redologs的操作方式与Online Redologs几乎一模一样, 只不过在创建或删除时需要多指定一个Standby关键字。

 

查看redo log:

SQL> SELECT GROUP#,TYPE,MEMBER FROM V$LOGFILE;

 

    GROUP# TYPE    MEMBER

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

         3 ONLINE  /u01/app/oracle/oradata/orcl/redo03.log

         2 ONLINE  /u01/app/oracle/oradata/orcl/redo02.log

         1 ONLINE  /u01/app/oracle/oradata/orcl/redo01.log

 

 

添加一个新的Standby Redologs组(注意组号不要与当前存在的Online Redologs组 重复),并为该组指定一个成员:

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 ('/u01/app/oracle/oradata/orcl/redo04.log') size 50M; 

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 ('/u01/app/oracle/oradata/orcl/redo05.log') size 50M; 

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 ('/u01/app/oracle/oradata/orcl/redo06.log') size 50M; 

SQL> ALTER DATABASE ADD STANDBY LOGFILE GROUP 7 ('/u01/app/oracle/oradata/orcl/redo07.log') size 50M; 

 

 

删除Standby Redologs组也同样简单:

SQL> ALTER DATABASE DROP STANDBY LOGFILE GROUP 4;

 

可以通过动态性能视图V$LOGFILE查看当前数据库中创建的Standby Redologs, 例如:

SQL> SELECT GROUP#,TYPE,MEMBER FROM V$LOGFILE;

    GROUP# TYPE    MEMBER

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

         3 ONLINE  /u01/app/oracle/oradata/orcl/redo03.log

         2 ONLINE  /u01/app/oracle/oradata/orcl/redo02.log

         1 ONLINE  /u01/app/oracle/oradata/orcl/redo01.log

         4 STANDBY /u01/app/oracle/oradata/orcl/redo04.log

         5 STANDBY /u01/app/oracle/oradata/orcl/redo05.log

         6 STANDBY /u01/app/oracle/oradata/orcl/redo06.log

         7 STANDBY /u01/app/oracle/oradata/orcl/redo07.log

 

提示:通过该视图中的TYPE列区分该条记录是Online Redologs或是Standby Redologs。

通过查看Standby Redologs的专用视图V$STANDBY_LOG来查看当前数据库中创建的Standby Redologs,如:

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

    GROUP#    THREAD#  SEQUENCE# ARC STATUS

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

         4          0          0 YES UNASSIGNED

         5          0          0 YES UNASSIGNED

         6          0          0 YES UNASSIGNED

         7          0          0 YES UNASSIGNED

 

从可靠性方面考虑,DG的设计初衷就是当发生故障时快速切换Primary和Standby的角色,以达到快速恢复应用访问的目的。 一旦发生切换,原Primary数据库就变成了Standby数据库,就得需要Standby Redologs,为了减少真正切换时应做的工作,建议在Primary数据库也创建Standby Redologs,这样即使发 生切换,也不会影响Primary作为Standby身份的正常运行。

 

四  设置初始化参 数

对 于Primary数据库,有几个与角色相关的初始化参数需要进行设置,这些参数初始时有些用来控制REDO传输服务(即Primary数据库生成的REDO数据传给谁以及怎么传),有些用来指定角色,还有几个与Standby角色相关的初始化参数,也建议进行配置,以便switchover/failover操作后,Primary/Standby数据库仍能正常工作,建 议不管是Primary数据库,还是Standby数据库,对于角色相关的初始化参 数都进行配置。

 

五.将Primary数据库置于归档模式

要创建一个Data Guard环境,Primary数据库必须处于归档模式。

 

对于非归档模式的数据库该为 归档模式,步骤如下: 

1. SQL> alter system set log_archive_dest_1='location=/oracle/oracle10g/log/archive_log'; 

2.关闭数据库 

SQL> shutdown immediate 

3.启动数据mount状态: 

SQL> startup mount; 

4、修改数据库为归档模式: 

SQL> alter database archivelog; 

5、打开数据库,查询: 

SQL> alter database open; 

 

更多内容参考我的Blog: Oracle 归档与非归档的切换:

http://blog.csdn.net/tianlesoftware/archive/2009/10/19/4693470.aspx

 

 

----------

10.2.2  物理Standby创建时的操作步骤

 

一. 创建备份

物 理Standby数据库相当于Primary数据库在某个时间点的镜像复制, 因此在创建物理Standby数据库之前,至少要有一份Primary数据库的完整备份。

Oracle建议使用RMAN创建备份集,不过如果数据库规模不是太大,我个 人更倾向于通过用户管理的方式创建备份集。

 

创建备份有三种方式:

1. RMAN 备份与恢复 -- 不需要shutdown 数据库

备份:

$ rman target /

RMAN> backup full format 'D:/FULL_%d_%T_%s.bak' database include current controlfile for standby;

RMAN> sql 'alter system archive log current';

RMAN> Backup ArchiveLog all format='D:/arch_%d_%T_%s.bak'; 

传送:

备 份完后将备份文件拷到standby上同样的目录,强调:同样的目录,在standby进行rman 恢复即可

 

恢复:

$rman targetsys/admin@primaryauxiliary /

RMAN> duplicate target database for standby dorecover nofilenamecheck;

 

2. 用户管理方式  -- 不需要shutdown 数据库

用 用户管理方式创建热备份就是备份表空间,可以分成三个步骤:

1). 通过ALTER TABLESPACE BEGIN BACKUP命令标记指定表空间进入备份状态。

2). 通过操作系统命令复制锁定表空间的数据文件。

3). 通过ALTER TABLESPACE END BACKUP命令标记指定表空间结束备份。

 

例 如,对USERS表空间进行备份:

SQL> select tablespace_name, file_name from dba_data_files;

TABLESPACE_NAME                FILE_NAME

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

USERS                          /u01/app/oracle/oradata/orcl/users01.dbf

SYSAUX                         /u01/app/oracle/oradata/orcl/sysaux01.dbf

UNDOTBS1                       /u01/app/oracle/oradata/orcl/undotbs01.dbf

SYSTEM                         /u01/app/oracle/oradata/orcl/system01.dbf

 

SQL> ALTER TABLESPACE USERS BEGIN BACKUP;

Tablespace altered.

SQL> !cp /u01/app/oracle/oradata/orcl/users01.dbf /u01/users01.dbf

SQL> ALTER TABLESPACE USERS END BACKUP;

Tablespace altered.

 

3. 直接copy 文件 -- shutdown 进行

实例关闭后,拷贝数据文件到备库上即可。

 

二.创建Standby数据库控制文件

 

在Primary 库上执行如下语句,为Standby数据库创建控制文 件:

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/u01/backup/control01.ctl'; 

 

注 意:控制文件通常需要有多份,你 要么手工将上述文件复制几份,要么用命令多创建几个出来。需要注意,如果选择多次执行上述命令创建出多份,务必确保执行创建时数据库处于MOUNT状态,否则几个控制文件的SCN有可能并不匹配,从而导致Standby数据库无法正常启动到MOUNT状态。

另外,创建完控制文件之后到Standby数据库创建完成这段时间内,要保证Primary数据库不再有结构上的变化(如增加表空间等),不然Primary和Standby同步时会有问题。

Data Guard 也是根据控制文件来判断哪个是standby的

 

 

三.  配置Standby数据库的初始化参数文件

可按照下列步骤操作:

(1)创建PFILE客户端初始化参数文件。

由于SPFILE服务器端初始化参数文件为二进制格式,无法直接编辑,因此建议首先通过SPFILE创建PFILE,操作如下:

SQL> CREATE PFILE FROM SPFILE; 

(2)修改初始化参数文件中的参数。

注意Primary和Standby不同角色对应初始化参数的配置。

注意保持各初始化参数中的路 径准确有效。

 

四.  复制文件到Standby服务器

复制文件到Standby服务器主要包括三部分:备份的数据文件、创建的Standby数据库控制文件和修改过的初始化参数文件。

 

五.  配置Standby数据库

 

如果是Windows 环境下, 还需要创建新的OracleService。

oradim.exe -new -sid orcl -startmode m 

oradim.exe -edit -sid orcl -startmode a 

 

创建密钥文件,注意保持密码 与Primary数据库一致。

配置监听并启动。

修改Primary数据库所在服务器和Standby数据库所在服务器的tnsnames.ora,各自增加对应的Net Service Name。

创建服务器端的初始化文件。

 

六.  启动物理Standby数据库REDO应用

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

请登录后发表评论 登录
全部评论