分类: Oracle
2011-07-13 13:45:27
Oracle 10.2.0.5 物理standby database 环境搭建RMAN形式
Arch asysnc
基本参数
primary
IP:172.16.4.199
Oracle_sid:dgrman
db_unique_name:dgr_pd
fal_server:dgr_st
fal_client:dgr_pd
status:open
standby
IP:172.16.4.198
Oracle_sid:dgrman
db_unique_name:dgr_st
fal_server:dgr_st
fal_client:dgr_pd
status:mount |can open with read only
Primary 端的配置
主库设置为force logging 模式 (备库也设置,双向切换)
SQL> alter database force logging;
主库设为归档模式
SQL> archive log list;
SQL> shutdown immediate
SQL> startup mount
SQL>alter system set log_archive_format='arch%t_%s_%r.arc' scope=spfile sid='*' ;
SQL> alter database archivelog;
SQL> archive log list;
密码文件
[oracle@localhostdbs]$ orapwd file=/oracle/product/10.2.0/db_1/dbs/orapwdg password=ank88ank
如果已经存在,就不用创建了。 缺省情况下,win下口令文件的格式是pwdsid.ora,unix下的格式是orapwSID(大小写敏感)
修改初始化参数文件
添加的参数
*.DB_UNIQUE_NAME='dgr_pd'
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(dgr_pd,dgr_st)'
*.log_archive_dest_1='location=/oradata/10g_archive/dgrman VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dgr_pd'
*.LOG_ARCHIVE_DEST_2='SERVICE=dgr_st ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dgr_st'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.standby_file_management='AUTO'
*.FAL_SERVER='dgr_st'
*.FAL_CLIENT='dgr_pd'
/*or*/
alter system set DB_UNIQUE_NAME='dgr_pd' scope=spfile sid='*' ;
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(dgr_pd,dgr_st)' scope=spfile sid='*' ;
alter system set log_archive_dest_1='location=/oradata/10g_archive/dgrman VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dgr_pd' scope=spfile sid='*' ;
alter system set LOG_ARCHIVE_DEST_2='SERVICE=dgr_st ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dgr_st' scope=spfile sid='*' ;
alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=spfile sid='*' ;
alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=spfile sid='*' ;
alter system set standby_file_management='AUTO' scope=spfile sid='*' ;
alter system set FAL_SERVER='dgr_st' scope=spfile sid='*' ;
alter system set FAL_CLIENT='dgr_pd' scope=spfile sid='*' ;
--需要注意的是
*.log_archive_max_processes=1
*.log_archive_format='arch%t_%s_%r.arc'
*.remote_login_passwordfile='EXCLUSIVE'
如果主库和备库的数据文件位置不同,还需要加如下2个参数:
*.log_file_name_convert='/u02/oradata/dgtest/','/u03/oradata/dgtest/'
*.db_file_name_convert='/u02/oradata/dgtest/','/u03/oradata/dgtest/'
启动库
SQL> shutdown immediate
SQL> startup nomount
SQL>alter database mount
SQL>alter database open
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 pfile='/oradata/standby.ora' from spfile ; --备库的用
修改listener.ora 和tnsnames.ora 文件
Listener.ora 文件
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = dgrman)
(ORACLE_HOME = /oracle/product/10.2.0/db_1)
(SID_NAME = dgrman)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = yyj.mchz)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
添加SID_DESC 部门
注意:SID_LIST_LISTENER 配置的是静态注册,如果没有该参数,而且Data Guard 启动顺序又不正确,那么在主库可能会报 PING[ARC1]: Heartbeat failed to connect to standby 'orcl_st'. Error is 12514. 错误,导致归档无法完成。
Oracle Listener 动态注册 与 静态注册
Tnsnames.ora 文件
DGR_ST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.4.198)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dgrman)
)
)
DGR_PD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.4.199)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = dgrman)
)
)
将密码文件,参数文件copy到备库
scp orapwdgrman 172.16.4.198:$ORACLE_HOME/dbs
备份主库
vi rmanbackup.sh
rman target / <
{
allocate channel ch00 type disk;
allocate channel ch01 type disk;
backup format '/oracle/tmp/%U.bak' database plus archivelog;
backup format '/oracle/tmp/control%U.ctl' current controlfile for standby;
release channel ch00;
release channel ch01;
}
EOF
--do
export ORACLE_SID=dgrman
rman target /
backup format '/oracle/tmp/%U.bak' database plus archivelog;
backup format '/oracle/tmp/control%U.ctl' current controlfile for standby;
exit
Standby 端配置
修改listener.ora 和 tnsnames.ora 文件
如果不存在,就从主库上copy 过去。
修改初始化参数文件
dgrman.__db_cache_size=113246208
dgrman.__java_pool_size=4194304
dgrman.__large_pool_size=4194304
dgrman.__shared_pool_size=58720256
dgrman.__streams_pool_size=0
*.audit_file_dest='/oracle/admin/dgrman/adump'
*.background_dump_dest='/oracle/admin/dgrman/bdump'
*.compatible='10.2.0.5.0'
*.control_files='/oradata/10g/dgrman/control01.ctl','/oradata/10g/dgrman/control02.ctl','/oradata/10g/dgrman/control03.ctl'
*.core_dump_dest='/oracle/admin/dgrman/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='dgrman'
*.db_recovery_file_dest='/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='dgr_st'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=dgrmanXDB)'
*.fal_client='dgr_st'
*.fal_server='dgr_pd'
*.job_queue_processes=10
*.log_archive_config='DG_CONFIG=(dgr_pd,dgr_st)'
*.log_archive_dest_1='location=/oradata/10g_archive/dgrman VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dgr_st'
*.log_archive_dest_2='SERVICE=dgr_pd ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dgr_pd'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_archive_format='arch%t_%s_%r.arc'
*.open_cursors=300
*.pga_aggregate_target=60817408
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=184549376
*.standby_file_management='AUTO'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/oracle/admin/dgrman/udump'
保存为std.ora
启动实例
export ORACLE_SID=dgrman
SQL>startup nomount pfile='/oradata/st.ora'
SQL>create spfile from pfile='/oradata/st.ora'
SQL>shutdown immediate
SQL>startup nomount
不打开控制文件,控制文件通过Duplicate 来传输
恢复
Duplicate Standby
方式一
rman target / catalogrman/rmanpwd@catalogdb auxiliary sys/sys@standby
RUN
{
# If desired, issue a SET command to terminate recovery at a specified point.
# SET UNTIL SCN 143508;
DUPLICATE TARGET DATABASE FOR STANDBY NOFILENAMECHECK
duplicate target database for standby nofilenamecheck
dorecover;
}
方式二(k)
rman target sys/ank88ank@dgr_pd
connect auxiliary sys/ank88ank@dgr_st
duplicate target database for standby nofilenamecheck;
方式三
vi rmarestore.sh
rman target system/ank88ank@dgr_pd auxiliary system/ank88ank@dgr_st <
duplicate target database for standby nofilenamecheck;
EOF
#NOFILENAMECHECK 表示主备的数据文件路径一致
8Duplicate 完成后Standby只处于正常的Mount状态.应打开Recover
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
$lsnrctl start
--------------------------------------------------------------------------End