物理standby database 环境搭建

Arch asysnc

Oracle Dataguard

host

IP

Oracle_sid

DB_unique_name

FAL_server

FAL_client

primary

192.168.126.136

dgtest

dg_pd

dg_st

dg_pd

standy

192.168.126.128

dgtest

dg_st

dg_pd

dg_st

一. Primary 端的配置

1.  主库设置为force logging 模式

SQL> alter database force logging;

2. 主库设为归档模式

SQL> archive log list;

SQL> shutdown immediate

SQL> startup mount

SQL> alter database archivelog;

SQL> archive log list;

. 创建备库的密码文件和控制文件

SQL> alter database create standby controlfile as '/u01/control01.ctl';

-- 说明: 判断一个数据库是Primary还是Standby,就是通过控制文件来判断的。

[oracle@localhostdbs]$ orapwd file=/u01/orapwDG password=ank88ank

如果已经存在,就不用创建了。 缺省情况下,win下口令文件的格式是pwdsid.ora,unix下的格式是orapwSID(大小写敏感)

4.  修改初始化参数文件

*.DB_UNIQUE_NAME='dg_pd'

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(dg_pd,dg_st)'

*.log_archive_dest_1='location=/u01/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dg_pd'

*.LOG_ARCHIVE_DEST_2='SERVICE=dg_st ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg_st '

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.standby_file_management='AUTO'

*.FAL_SERVER='dg_st'

*.FAL_CLIENT='dg_pd'

如果主库和备库的数据文件位置不同,还需要加如下2个参数:

*.log_file_name_convert='/u02/oradata/dgtest/','/u03/oradata/dgtest/'

*.db_file_name_convert='/u02/oradata/dgtest/','/u03/oradata/dgtest/'

-- 注意:orcl_st,orcl_pd 是在tnsnames文件中配置的

用'/u01/pri.ora' 这个pfile 启动数据库,并生成spfile。

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup pfile='/u01/pri.ora';

ORACLE instance started.

Total System Global Area  167772160 bytes

Fixed Size                  1218316 bytes

Variable Size              79694068 bytes

Database Buffers           83886080 bytes

Redo Buffers                2973696 bytes

Database mounted.

Database opened.

SQL> create spfile from pfile='/u01/pri.ora';

File created.

6. 修改listener.ora 和tnsnames.ora 文件

Listener.ora 文件:

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

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

(PROGRAM = extproc)

)

(SID_DESC =

(GLOBAL_DBNAME = dg)

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

(SID_NAME = dgtest)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

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

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

)

注意:SID_LIST_LISTENER 配置的是静态注册,如果没有该参数,而且Data Guard 启动顺序又不正确,那么在主库可能会报 PING[ARC1]: Heartbeat failed to connect to standby 'orcl_st'. Error is 12514. 错误,导致归档无法完成。

Oracle Listener 动态注册 与 静态注册

http://blog.csdn.net/tianlesoftware/archive/2010/04/30/5543166.aspx

Tnsnames.ora 文件

DG_ST =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = dg)

)

)

DG_PD =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = dg)

)

)

二. Standby 端配置

1. 创建备库存放数据文件和后台跟踪目录, 这个目录可以和主库相同, 如果不同,就需要在主库的初始化文件中进行转换。

如:

*.log_file_name_convert='/u02/oradata/dgtest/','/u03/oradata/orcl/'

*.db_file_name_convert='/u02/oradata/dgtest/','/u03/oradata/orcl/'

--建相目录

mkdir -p $ORACLE_BASE/oradata/dgtest

mkdir $ORACLE_BASE/admin/dgtest

mkdir -p $ORACLE_BASE/admin/dgtest/adump

mkdir $ORACLE_BASE/admin/dgtest/bdump

mkdir $ORACLE_BASE/admin/dgtest/cdump

mkdir $ORACLE_BASE/admin/dgtest/dpdump

mkdir $ORACLE_BASE/admin/dgtest/pfile

mkdir $ORACLE_BASE/admin/dgtest/udump

mkdir $ORACLE_BASE/admin/dgtest/

2. 将主库的密码文件,控制文件,数据文件,参数文件,日志文件copy到备库。

说明一点,这个控制文件是我们自己创建的standby 控制文件。将copy过来的控制文件再复制三份就可以了。  主备的控制文件是不一样的。  这里除了采用直接copy 文件之外,还可以采用Rman 恢复来做。 直接copy 需要停数据库,如果采用RMAN 的话,就不需要停机了。

--数据文件,redo文件

scp *.dbf 192.168.32.144:/u01/app/oracle/oradata/dgtest

scp *.log 192.168.32.144:/u01/app/oracle/oradata/dgtest

--密码文件,参数文件

scp pri.ora 192.168.32.144:/u01

scp orapwdgtest 192.168.32.144:/u01/app/oracle/product/10.2.0/db/dbs

--listener tnsnames

scp listener.ora 192.168.32.144:/u01/app/oracle/product/10.2.0/db/network/admin

scp tnsnames.ora 192.168.32.144:/u01/app/oracle/product/10.2.0/db/network/admin

--standby 控制文件

scp *.ctl 192.168.32.144:/u01/app/oracle/oradata/dgtest/

cp control01.ctl control02.ctl

cp control01.ctl  control03.ctl

3. 修改初始化参数文件

*.DB_UNIQUE_NAME='dg_st'

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(dg_pd,dg_st)'

*.log_archive_dest_1='location=/u01/archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dg_st'

*.LOG_ARCHIVE_DEST_2='SERVICE=dg_pd ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg_pd'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.standby_file_management='AUTO'

*.FAL_SERVER='dg_pd'

*.FAL_CLIENT='dg_sd'

--

保存为std.ora

4. 修改listener.ora 和 tnsnames.ora 文件,如果不存在,就从主库上copy 过去。

至此,Data Guard 的操作已经完成,下面来开始验证。

补充:

启动备库

SQL>startup nomount pfile='/u01/std.ora'

SQL>create spfile from pfile='/u01/std.ora'

------------------------------------环境 End-----------------------------------

-----------start------------

--注意Data Guard 启动顺序:

启动顺序:先standby ,后primary;
关闭顺序:先primary 后standby;

在备库将实例启动到mount 状态:

SQL> startup nomount;

SQL>alter database mount standby database ;

SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

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

在备库启动监听:

$lsnrctl start

在主库启动实例:

SQL> startup;

在主库启动监听:

$lsnrctl start

--------------------DataGuard Acitve OK------------

Now

Primary:open

Standby:mount

--Standby只读模式打开

--停止redo应用

SQL>alter database recover managed standby database cancel

SQL>alter database open;

SQL>select open_mode from v$database;

OPEN_MODE

----------

READ ONLY

--Standby重新回到redo apply状态

SQL>shutdown immediate

SQL>startup nomount

SQL>alter database mount standby database disconnect

SQL>alter database recover managed standby database disconnect

--验证是否传输到了Standby database

--Primary database

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

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

SEQUENCE# FIRST_TIM NEXT_TIME

7 23-FEB-11 23-FEB-11

7 23-FEB-11 23-FEB-11

8 23-FEB-11 23-FEB-11

8 23-FEB-11 23-FEB-11

9 23-FEB-11 23-FEB-11

9 23-FEB-11 23-FEB-11

SQL> alter system switch logfile;

System altered.

--Standby database

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

SEQUENCE# FIRST_TIM NEXT_TIME

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

7 23-FEB-11 23-FEB-11

8 23-FEB-11 23-FEB-11

9 23-FEB-11 23-FEB-11

10 23-FEB-11 23-FEB-11

--验证Standby redo 是否应用

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

SEQUENCE# APP

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

3 YES

4 YES

5 YES

6 YES

7 YES

8 YES

9 YES

10 YES

8 rows selected.

--如果出错

在主库验证归档目录是否有效:

SQL> SELECT STATUS,DESTINATION, ERROR FROM V$ARCHIVE_DEST;

如果有错误,要排查原因。

SQL>  SELECT STATUS ,ERROR FROM V$ARCHIVE_DEST;

STATUS    ERROR

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

VALID

VALID

INACTIVE

INACTIVE

INACTIVE

INACTIVE

INACTIVE

INACTIVE

INACTIVE

INACTIVE

注意:如果在主库执行 alter database clear unarchived logfile或alter database open resetlogs , 则dataguard要重建。

补充:

--监控日志应用服务

SQL>select database_role,db_unique_name,open_mode,protection_mode,protection_level,switchover_status from v$database;

--设置新的数据保护模式并重启数据库

当保护模式更改顺序:

maximize protection --->  maximize availability ----> maximize performance

当在把dataguard的保护级别按这上面的顺序减低的时候, 不需要primary库在mount状态,否则primary 必须在mount 状态。

如:
SQL>  alter database set standby database to maximize availability;

alter database set standby database to maximize availability

*

ERROR at line 1:

ORA-01126: database must be mounted in this instance and not open in any

instance

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.

Total System Global Area  167772160 bytes

Fixed Size                  1218316 bytes

Variable Size              79694068 bytes

Database Buffers           83886080 bytes

Redo Buffers                2973696 bytes

Database mounted.

SQL> alter database set standby database to maximize availability;

Database altered.

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-03113: end-of-file on communication channel

报错了,这是因为最大可用性需要先修改日志传送方式为lgwr同步方式,否则,数据库是无法open.

SQL> alter system set log_archive_dest_2='service=orcl_st lgwr sync AFFIRM';

System altered.

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.

Total System Global Area  167772160 bytes

Fixed Size                  1218316 bytes

Variable Size              79694068 bytes

Database Buffers           83886080 bytes

Redo Buffers                2973696 bytes

Database mounted.

SQL> alter database set standby database to maximize availability;

Database altered.

SQL> alter database open;

Database altered.

SQL> select protection_mode,protection_level from v$database;

PROTECTION_MODE      PROTECTION_LEVEL

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

MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY

alter database set standby database to maximize performance;

提示:maximize后可跟{PROTECTION | AVAILABILITY | PERFORMANCE},分别对应最大保护,最高可用性及最高性能。

在最大保护模式下,直接关闭备库是不行的,如果在备库上关闭数据库,会有如下提示:
SQL> shutdown immediate
ORA-01154: database busy. Open, close, mount, and dismount not allowed now
SQL>
在最大保护模式下,备库是不允许关闭的,此时首先关闭主库,然后备库就可以顺利关闭了

注意: 主库的保护模式修改之后,备库的模式也会改变,和主库保持一致。

3. 查看日志归档情况

主库进行日志切换:

SQL>Alter system switch logfile;

select max(sequence#) from v$archived_log;

select max(sequence#) from v$log_history;

select group#,sequence#,archived,status from v$log;

select name,sequence#,applied from v$archived_log;

select sequence#,applied from v$archived_log;

若不同步,

1>看log日志, archive是否有丢失

2>可以在备库坐如下操作:

--停止redo apply

alter database recover managed standby database cancel;

--开始redo apply

alter database recover managed standby database disconnect from session;

Oracle DataGuard 物理Standby 搭建(上)的更多相关文章

  1. Oracle DataGuard 物理Standby 搭建(下)

    主备库切换 Switchover 一般SWITCHOVER切换都是计划中的切换,特点是在切换后,不会丢失任何的数据,而且这个过程是可逆的,整个DATA GUARD环境不会被破坏,原来DATA GUAR ...

  2. (摘)DataGuard物理standby管理 - 主备切换

    DataGuard物理standby管理 - 主备切换 Dataguard的切换分为两种,switchover和failover. switchover一般用于数据库或硬件升级,这时只需要较短时间中断 ...

  3. ORACLE11g Dataguard物理Standby 日常巡检操作手册

    ORACLE11g Dataguard物理Standby日常巡检操作手册 编写:_____________校对:_____________日期:_____________ 目录1.DG环境的日常巡检 ...

  4. Oracle 12C 物理Standby 主备切换switchover

    Oracle 12C 物理Standby 主备切换switchover Oracle 12C 物理Standby 主备切换switchover Table of Contents 1. 简述 2. 切 ...

  5. DataGuard相同SID物理Standby搭建

    Oracle Data Guard 是针对企业数据库的最有效和最全面的数据可用性.数据保护和灾难恢复解决方案.它提供管理.监视和自动化软件基础架构来创建和维护一个或多个同步备用数据库,从而保护数据不受 ...

  6. [Oracle][DATAGUARD] PHYSICAL STANDBY环境里,11.2.0.4 , 也可以使用Pfile来运行Primary和Standby(虽然很少有人用)

    ####Primary#### [oracle@primary ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on 金 ...

  7. [Oracle][DATAGUARD] PHYSICAL STANDBY环境里,使用CATALOG管理Primary和Standby

    1.先使用控制文件构筑好PHYSICAL STANDBY环境(Primary:Single 11.2.0.4,Standby Single 11.2.0.4) 2.构筑好Catalog用的服务器(Ca ...

  8. [Oracle][DATAGUARD] LOGICAL STANDBY环境里,有些SEQUENCE无法应用,导致Primary和Standby无法同期

    今天遇到了一个客户,问题是这样的,客户构筑了一个RACtoRAC的 LOGICAL STANDBY环境.并用EM在监视同期情况,发现EM页面上55115和55116这两个SEQUENCE一直在应用. ...

  9. Oracle Dataguard之物理standby的基本配置

    尽管网上有很多Oracle Dataguard的配置教程,但不难发现,很多采用的是rman duplicate这种方法,尽管此种方法较为简便.但在某种程度上,却也误导了初学者,虽说也能配置成功,但只知 ...

随机推荐

  1. <摘录>PS和TS流的区别

    在 MPEG-2系统中,信息复合/分离的过程称为系统复接/分接,由视频,音频的ES流和辅助数据复接生成的用于实际传输的标准信息流称为MPEG-2传送 流(TS:TransportStream).据传输 ...

  2. h264检测是I帧还是P帧,解决录像第一帧有马赛克问题

    最近使用h264码流数据进行录像,但是录出来的第一帧有马赛克,究其原因是录像的第一帧不是关键帧,所以需要录像是需要判断第一帧是否是关键帧,方法有两种,第一种是原码流的基础上查找,第二种是将原码流传递给 ...

  3. B树索引和位图索引的区别!

    B树索引主键和唯一性约束字段的B树索引,效率几乎和海量数据没有关系. 键值重复率低的字段比较适合使用B树索引. 位图索引键值重复率高的字段比较适合使用位图索引.count.and.or.in这些特定的 ...

  4. 字符集编码Unicode ,gb2312 cp936

    这是一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整理这篇文章的动机是两个问题: 问题一:使用Windows记事本的“另存为” ...

  5. hdu 3948(后缀数组+RMQ)

    题意:求一个串中有多少不同的回文串. 分析:这一题的关键是如何去重,我表示我现在还没理解为什么这样去重,先放这里过两天再看!! //不同回文子串数目 #include <iostream> ...

  6. esd-ESD试题

    ylbtech-doc:esd-ESD试题 ESD试题 1.A,ESD试题返回顶部 不定项选择题(下列选择题ABCD四项中至少有一项是正确的,共20小题): 1.{ESD题目}储备阶段的几个主要岗位是 ...

  7. 【转】OFBiz安全组

    安全组标识 描述 用户系统级别BIZADMIN 全部商业应用程序权限组,具有全部商业应用程序管理权限,不是技术人员权限. bizadmin FLEXADMIN 缓存管理组,具有全部颗粒的权限. fle ...

  8. T-SQL 数据库笔试题

    1.说明:创建数据库 Create DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建备份数 ...

  9. Oracle中错误代码ORA-02292 违反了完整性约束条件解决

    百度处理: A表被B表引用,删除A表的时候提示ORA-02292,A表的主键被引用了,虽然已经把B表的数据全部删除掉,但仍然删除不了A表的数据.解决办法: 用禁用约束语句把A表的主键约束给禁用掉.1. ...

  10. IOS-day01_OC中类的创建以及使用

    OC中定义类 // 设计一个车类 @implementation Car : NSObject // 这个大括号里面写所有的属性 { @public int wheels ;//轮子个数 double ...