一,准备
 
Database DB_UNIQUE_NAME Oracle Net Service Name
Primary PROD PROD
Physical standby PRODDG PRODDG
 
二,主库设置
 
1.启用force logging
alter database force logging;
2.确认主库处于归档模式
archive log list;
3.在primary库创建standby数据库控制文件
alter database create standby controlfile as '/dsg/oracle11/back/prordg.ctl';
4.创建primary库客户端初始化参数文件
1).创建主库中的pfile
create pfile from spfile;
2).备份到backup目录用于创建备库的pfile
cp $ORACLE_HOME/dbs/initPROD.ora $ORACLE_HOME/dbs/initPRODDG.ora

3).修改后主库pfile中内容如下:

*.db_domain=''
*.db_name='PROD'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=PRODXDB)'
*.open_cursors=
*.pga_aggregate_target=
*.processes=
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=
*.undo_tablespace='UNDOTBS1' #################################################################
#Parameters for Primary Database.
#################################################################
*.DB_NAME='PROD'
*.DB_UNIQUE_NAME=PROD
*.LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(PROD,PRODDG)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/dsg/oracle11/PROD/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PROD'
*.LOG_ARCHIVE_DEST_2='SERVICE=PRODDG LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PRODDG'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE #################################################################
#Parameters which using for switch over from Primary to Standby.
#################################################################
*.FAL_SERVER=PRODDG
*.FAL_CLIENT=PROD
*.DB_FILE_NAME_CONVERT='/dsg/oracle11/PRODDG','/dsg/oracle11/PROD'
*.LOG_FILE_NAME_CONVERT='/dsg/oracle11/PRODDG','/dsg/oracle11/PROD'
*.STANDBY_FILE_MANAGEMENT=AUTO
4)通过pfile创建spfile
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> create spfile from pfile; File created.
4.配置tnsnames.ora文件和listener.ora 文件(由于是一个服务器上的两个数据库,所以standby数据库不需要再配置)
 
如果在不同的服务器上那么两个服务器上都要配置
 cat listener.ora 

LISTENER =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.70)(PORT=))
(ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY))) SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=db11)
(SERVICE_NAME = DB11)
(SID_NAME=db111)
(ORACLE_HOME=/u01/app/oracle/product/11.2.)
(PRESPAWN_MAX=)
(PRESPAWN_LIST=
(PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=)(TIMEOUT=))
)
)
(SID_DESC=
(GLOBAL_DBNAME=PROD)
(SERVICE_NAME = PROD)
(SID_NAME=PROD)
(ORACLE_HOME=/u01/app/oracle/product/11.2.)
(PRESPAWN_MAX=)
(PRESPAWN_LIST=
(PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=)(TIMEOUT=))
)
)
(SID_DESC=
(GLOBAL_DBNAME=PRODDG)
(SERVICE_NAME = PRODDG)
(SID_NAME=PRODDG)
(ORACLE_HOME=/u01/app/oracle/product/11.2.)
(PRESPAWN_MAX=)
(PRESPAWN_LIST=
(PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=)(TIMEOUT=))
)
)
) cd $ORACLE_HOME/network/admin PROD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.70)(PORT = ))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PROD)
)
) PRODDG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.70)(PORT = ))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PRODDG)
)
) EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
) PROD@dbrac1 /u01/app/oracle/product/11.2./network/admin$ tnsping prod TNS Ping Utility for Linux: Version 11.2.0.1. - Production on -APR- :: Copyright (c) , , Oracle. All rights reserved. Used parameter files:
/u01/app/oracle/product/11.2./network/admin/sqlnet.ora Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.70)(PORT = )) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PROD)))
OK ( msec)
PROD@dbrac1 /u01/app/oracle/product/11.2./network/admin$ tnsping proddg TNS Ping Utility for Linux: Version 11.2.0.1. - Production on -APR- :: Copyright (c) , , Oracle. All rights reserved. Used parameter files:
/u01/app/oracle/product/11.2./network/admin/sqlnet.ora Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.70)(PORT = )) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PRODDG)))
OK ( msec)
三,Standby 数据库配置设置
 
 
1.创建密码文件,注意sys的密码和主库的密码一致(说明:这里不要这样创建standby的密码文件) 报错信息见最后
cd $ORACLE_HOME/dbs
orapwd file=orapwPRODDG force=y password=oracle entries=
推荐直接拷贝primary数据的密码文件:
cd $ORACLE_HOME/dbs
cp orapwPROD orapwPROD
2.创建standby所需的目录(注意11g和10g有所区别)
cd $ORACLE_BASE/admin
mkdir -p PRODDG/adump
mkdir -p PRODDG/dpdump
创建Standby的数据文件及日志文件,控制文件所在目录
mkdir  /dsg/oracle11/PRODDG
3,拷贝主库生成的standby控制文件和主库的数据文件,日志文件
cp /dsg/oracle11/back/prordg.ctl  /dsg/oracle11/PRODDG/
cp prordg.ctl control01.ctl
cp control01.ctl control02.ctl
4,修改standby参数文件
 
1)修改参数如下:
cat initPRODDG.ora
PRODDG.__db_cache_size=
PRODDG.__java_pool_size=
PRODDG.__large_pool_size=
PRODDG.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
PRODDG.__pga_aggregate_target=
PRODDG.__sga_target=
PRODDG.__shared_io_pool_size=
PRODDG.__shared_pool_size=
PRODDG.__streams_pool_size=
*.audit_file_dest='/u01/app/oracle/admin/PRODDG/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/dsg/oracle11/PRODDG/control01.ctl','/dsg/oracle11/PRODDG/control02.ctl'
*.db_block_size=
*.db_domain=''
*.db_name='PROD' ##注意和主库的一致
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=PRODDGXDB)'
*.open_cursors=
*.pga_aggregate_target=
*.processes=
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=
*.undo_tablespace='UNDOTBS1' #################################################################
#Parameters for Standby Database.
#################################################################
*.DB_UNIQUE_NAME=PRODDG
*.LOG_ARCHIVE_FORMAT=log%t_%s_%r.arc
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(PROD,PRODDG)'
*.DB_FILE_NAME_CONVERT='/dsg/oracle11/PROD','/dsg/oracle11/PRODDG'
*.LOG_FILE_NAME_CONVERT='/dsg/oracle11/PROD','/dsg/oracle11/PRODDG'
*.FAL_SERVER=PROD
*.FAL_CLIENT=PRODDG
*.STANDBY_FILE_MANAGEMENT=AUTO #################################################################
#Parameters which using for switch over from Standby to Primary.
#################################################################
*.LOG_ARCHIVE_DEST_1='LOCATION=/dsg/oracle11/PRODDG/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=PRODDG'
*.LOG_ARCHIVE_DEST_2='SERVICE=PROD LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=PROD'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
2)生成spfile
PROD@dbrac1  /home/oracle$ export ORACLE_SID=PRODDG
PRODDG@dbrac1 /home/oracle$ sql SQL*Plus: Release 11.2.0.1. Production on Thu Apr :: Copyright (c) , , Oracle. All rights reserved. Connected to an idle instance. SQL> create spfile from pfile; File created.
5.启动Standby到mount
SQL> startup mount
ORACLE instance started. Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
Database mounted.
6,启动redo应用
alter database recover managed standby database disconnect from session;
7,查看同步情况
 
连到主库
SQL> set line
SQL> select instance_name,host_name,version,status from v$instance; INSTANCE_NAME HOST_NAME VERSION STATUS
---------------- ---------------------------------------------------------------- ----------------- ------------
PROD dbrac1 11.2.0.1. OPEN SQL> alter system switch logfile; System altered. SQL> select max(sequence#) from v$archived_log; MAX(SEQUENCE#)
--------------
连接到standby数据库
SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
-------------- ,取消日志应用 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
四,验证
 
在主库创建一个用户,并且创建一张表
SQL> create user hxy identified by hxy;

User created.

SQL> grant dba to hxy;

Grant succeeded.

SQL> conn hxy/hxy
Connected.
SQL> create table t as select * from dba_users; Table created. SQL> alter system switch logfile; System altered. SQL> select max(sequence#) from v$archived_log; MAX(SEQUENCE#)
--------------
去备库验证 一番
 
连接standby数据库
SQL> select max(sequence#) from v$archived_log;

MAX(SEQUENCE#)
-------------- SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL; Database altered. SQL> alter database open read only; Database altered. SQL> conn hxy/hxy
Connected. SQL> select * from tab; TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
T TABLE SQL> select count(*) from t; COUNT(*)
----------
OK,没有问题!
 
五,主备切换
 
1,连接到primary数据库,切换操作
SQL> conn / as sysdba
Connected.
SQL> select switchover_status from v$database; SWITCHOVER_STATUS
--------------------
TO STANDBY SQL> alter database commit to switchover to physical standby with session shutdown; Database altered. SQL> shutdown immediate
ORA-: database not mounted ORACLE instance shut down.
SQL> startup nomount
ORACLE instance started. Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
SQL> alter database mount standby database; Database altered. SQL> select database_role from v$database; DATABASE_ROLE
----------------
PHYSICAL STANDBY SQL> alter database recover managed standby database disconnect from session parallel ; Database altered.
2,连接到standby数据库

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO PRIMARY SQL> alter database commit to switchover to primary with session shutdown ; Database altered. SQL> shutdown immediate
ORA-: database not open Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started. Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
Database mounted.
Database opened. SQL> select database_role from v$database; DATABASE_ROLE
----------------
PRIMARY
Ok,切换成功
 
3,再切换回去
 
注意:在主库没有切换成备库时,standby数据切换状态为
SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
NOT ALLOWED
重复上面的步骤
 
1)连接当前的主库
SQL> select database_role from v$database;

DATABASE_ROLE
----------------
PRIMARY SQL> select switchover_status from v$database; SWITCHOVER_STATUS
--------------------
TO STANDBY SQL> alter database commit to switchover to physical standby with session shutdown; Database altered. SQL> shutdown immediate
ORA-: database not mounted ORACLE instance shut down. SQL> startup nomount
ORACLE instance started. Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
SQL> alter database mount standby database; Database altered. SQL> select database_role from v$database; DATABASE_ROLE
----------------
PHYSICAL STANDBY SQL> alter database recover managed standby database disconnect from session parallel ; Database altered. SQL> select switchover_status from v$database; SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE --备库没有切换
2)连接当前的备库
SQL> select database_role from v$database;

DATABASE_ROLE
----------------
PHYSICAL STANDBY SQL> select switchover_status from v$database; SWITCHOVER_STATUS
--------------------
TO PRIMARY ---此时的状态变为TO PRIMARY SQL> alter database commit to switchover to primary with session shutdown ; Database altered. SQL> shutdown immediate
ORA-: database not open Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started. Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
Database mounted.
Database opened.
SQL> select database_role from v$database; DATABASE_ROLE
----------------
PRIMARY
此时再查看备库的切换状态
 
连接备库
SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
NOT ALLOWED
六,问题总结
 
配置完成后,在主库的alert日志里报下面的错误:

Thu Apr  ::
Starting background process SMCO
Thu Apr ::
SMCO started with pid=, OS id=
Thu Apr ::
Thread cannot allocate new log, sequence
Private strand flush not complete
Current log# seq# mem# : /dsg/oracle11/PROD/redo02.log
Thu Apr ::
******************************************************************
LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2
******************************************************************
Thread advanced to log sequence (LGWR switch)
Current log# seq# mem# : /dsg/oracle11/PROD/redo03.log
Thu Apr ::
Archived Log entry added for thread sequence ID 0xef8b15b dest :
 
备库报下面的错误
Thu Apr  ::
Starting background process SMCO
Thu Apr ::
SMCO started with pid=, OS id=
Thu Apr ::
Thread cannot allocate new log, sequence
Private strand flush not complete
Current log# seq# mem# : /dsg/oracle11/PROD/redo02.log
Thu Apr ::
******************************************************************
LGWR: Setting 'active' archival for destination LOG_ARCHIVE_DEST_2
******************************************************************
Thread advanced to log sequence (LGWR switch)
Current log# seq# mem# : /dsg/oracle11/PROD/redo03.log
Thu Apr ::
Archived Log entry added for thread sequence ID 0xef8b15b dest :
日志没有被应用,密码文件创建完全一样
orapwd file=orapwPRODDG force=y password=oracle entries=
orapwd file=orapwPROD force=y password=oracle entries=
依然不行,
 
最后创建好,主库的密码文件后,拷贝主库的密码文件到备库,问题解决!!!!很奇怪!!!!
 
2014-04-25 09:50:49 

11g Physical Standby配置的更多相关文章

  1. oracle 11g physical standby switchover

    简介 SWITCHOVERS主要是在计划停机维护时用来降低DOWNTIME,如硬件维护.操作系统升级或是数据库rolling upgrade, 也可用来进行特殊情况下的数据库迁移. SWITCHOVE ...

  2. Creating a Physical Standby Database 11g

    1.Environment Item Primary database standby database Platform Redhat 5.4 Redhat 5.4 Hostname gc1 gc2 ...

  3. 11G、12C Data Guard Physical Standby Switchover转换参考手册

    Switchover转换   Step 1: switchover 切换先前检查 (1)确保主备两端log_archive_config和db_unique_name参数都已经正确设置. 需要注意的是 ...

  4. Oracle RAC 11g DG Broker配置和测试

    Oracle RAC 11g DG Broker配置和测试 之前在<RHEL6.4 + Oracle 11g DG测试环境快速搭建参考>已经简单说过. 本篇在实验环境中实际配置 环境: R ...

  5. Data Guard Physical Standby - RAC Primary to RAC Standby 使用第二个网络 (Doc ID 1349977.1)

    Data Guard Physical Standby - RAC Primary to RAC Standby using a second network (Doc ID 1349977.1) A ...

  6. 11.2 Data Guard Physical Standby Switchover Best Practices using SQL*Plus (Doc ID 1304939.1)

    11.2 Data Guard Physical Standby Switchover Best Practices using SQL*Plus (Doc ID 1304939.1) APPLIES ...

  7. ORACLE 11gR2 DG(Physical Standby)日常维护01

    环境:RHEL 6.4 + Oracle 11.2.0.4 一.主备手工切换 1.1 主库,切换成备库并启动到mount 1.2 备库,切换成主库并启动到open 1.3 新的备库启动日志应用 二.重 ...

  8. ORACLE 11gR2 DG(Physical Standby)日常维护02

    环境:RHEL 6.5 + Oracle 11.2.0.4 三.监控DG的状态 3.1监控DG备库的状态 3.2监控主库传输日志链路的状态 四.备库切换为snapshot standby 4.1备库切 ...

  9. 【原】Configuring Oracle Data Guard In Physical Standby Database

    作者:david_zhang@sh [转载时请以超链接形式标明文章] http://www.cnblogs.com/david-zhang-index/p/5042640.html参照文档:https ...

随机推荐

  1. CCF 模拟D 动态规划

    http://115.28.138.223:81/view.page?opid=4 这道题写的我醉醉的,想建一棵指定深度的树最后统计满足条件的个数 居然没去考虑这样必然超时!!!代码写的也是醉了,把没 ...

  2. linux操作系统flash player问题--ubuntu

    adobe公司停止了对linux系统的flash player的更新,这导致很多网页视频不能够通过浏览器观看,很是不爽! 还好,给用户留下了一点点希望,那便是chrome浏览器. 谷歌浏览器,有一款插 ...

  3. c_水程序

    * ** This program reads input lines from the standard input and prints ** each input line, followed ...

  4. Spring的scope="prototype"属性

    spring 默认scope 是单例模式这样只会创建一个Action对象每次访问都是同一个Action对象,数据不安全struts2 是要求 每次次访问 都对应不同的Actionscope=" ...

  5. Linux CAT与ECHO命令详解 <<EOF EOF

    Linux CAT与ECHO命令详解 cat命令是Linux下的一个文本输出命令,通常是用于观看某个文件的内容的: cat主要有三大功能: .一次显示整个文件. $ cat filename .从键盘 ...

  6. 【GoLang】50 个 Go 开发者常犯的错误

    1. { 换行:   Opening Brace Can't Be Placed on a Separate Line 2. 定义未使用的变量:  Unused Variables 2. import ...

  7. ulimit命令

    原文链接 linux下默认是不产生core文件的,要用ulimit -c unlimited放开 概述 系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件 ...

  8. struct vs class

    关于默认访问权限class中默认的成员访问权限是private的,而struct中则是public的. 关于继承方式class继承默认是private继承,而struct继承默认是public继承. ...

  9. linux下的audit服务

    audit   ['ɔːdɪt]  审计 auditd是linux的一个审计服务. 这是man下的解释 auditd is the userspace component to the Linux A ...

  10. VS2010调试速度很慢

    1.使用vs2010,感觉速度越来越慢.重新设置了vs2010的环境(在vs2010命令提示符下,执行devenv.exe /resetuserdata),居然解决了这个问题,速度跑的很好.网上有人说 ...