10gR2最大保护模式DataGuard创建.docx
- 文档编号:9779192
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:13
- 大小:18.91KB
10gR2最大保护模式DataGuard创建.docx
《10gR2最大保护模式DataGuard创建.docx》由会员分享,可在线阅读,更多相关《10gR2最大保护模式DataGuard创建.docx(13页珍藏版)》请在冰点文库上搜索。
10gR2最大保护模式DataGuard创建
10gR2最大保护模式DataGuard创建
一、设置主库归档
设置主库为forcelogging
SQL>alterdatabaseforcelogging;
设置主库为归档模式:
SQL>archiveloglist
SQL>shutdownimmediate
SQL>startupmount
SQL>alterdatabasearchivelog;
SQL>archiveloglist
为主数据库添加"备用联机日志文件",这里要保证备日志文件与主库联机日志文件相同大小。
添加备用日志文件是规则:
备用日志最少应该比redolog多一个。
推荐的备重做日志数依赖于主数据库上的线程数。
(每线程日志文件最大数目+1)*线程数
alterdatabaseaddstandbylogfile
group4('/data/oradata/std_redo04a.log','/data/oradata/std_redo04b.log')size50m,
group5('/data/oradata/std_redo05a.log','/data/oradata/std_redo05b.log')size50m,
group6('/data/oradata/std_redo06a.log','/data/oradata/std_redo06b.log')size50m,
group7('/data/oradata/std_redo07a.log','/data/oradata/std_redo08b.dbf')size50m;
二、修改主库参数文件
SQL>createpfilefromspfile;
主库initorcl.ora
======================
*.audit_file_dest='/opt/oracle/admin/orcl/adump'
*.background_dump_dest='/opt/oracle/admin/orcl/bdump'
*.core_dump_dest='/opt/oracle/admin/orcl/cdump'
*.user_dump_dest='/opt/oracle/admin/orcl/udump'
*.compatible='10.2.0.1.0'
*.control_files='/data/oradata/control01.ctl','/data/oradata/control02.ctl','/data/oradata/control03.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.job_queue_processes=10
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
#修改的部分
*.DB_UNIQUE_NAME=orcl
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,bforcl)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/data/archive/MANDATORYREOPEN=60MAX_FAILURE=3VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=orcl'
*.LOG_ARCHIVE_DEST_2='SERVICE=bforclLGWRSYNCAFFIRMVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=bforcl'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
*.LOG_ARCHIVE_FORMAT=orcl_%t_%s_%r.dbf
*.#以下为了角色切换设置
*.FAL_CLIENT=orcl
*.FAL_SERVER=bforcl
*.STANDBY_FILE_MANAGEMENT=AUTO
oracle@suse10~>mv$ORACLE_HOME/dbs/spfileorcl.ora$ORACLE_HOME/dbs/spfileorcl.ora.bak
oracle@suse10~>sqlplus"/assysdba"
SQL>createspfilefrompfile;
三、配置主数据库listener及tnsnames
主库listener.ora
=======================
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=orcl)
(ORACLE_HOME=/opt/oracle/10.2.0.1)
)
)
LISTENER=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.142)(PORT=1521))
)
)
)
tnsnames.ora
=============
ORCL=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.142)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=orcl)
)
)
BFORCL=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.143)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=bforcl)
)
)
生成备用库控制文件
alterdatabasecreatestandbycontrolfileas'/tmp/standby_ctl01.ctl';
四、复制文件到备机
oracle@suse10~>scp/data/oradata/*oracle@192.168.0.143:
/data/oradata/
oracle@suse10dbs>scpinitorcl.oraoracle@192.168.0.143:
`pwd`
oracle@suse10admin>scplistener.oratnsnames.oraoracle@192.168.0.143:
`pwd`
oracle@suse10tmp>scpstandby_ctl01.ctloracle@192.168.0.143:
/home/oracle
生成备用库密码文件(保证SYS密码与主库相同)
orapwdfile=orapwbforcl.orapassword=adminentries=10
多重备用库控制文件
cpstandby_ctl01.ctlstandby_ctl02.ctl
mkdir-p/data/{oradata,archvie}
mkdir-p/opt/oracle/admin/bforcl/{adump,bdump,cdump,pfile,udump}
五、修改备用库参数文件及listener
*.audit_file_dest='/opt/oracle/admin/bforcl/adump'
*.background_dump_dest='/opt/oracle/admin/bforcl/bdump'
*.core_dump_dest='/opt/oracle/admin/bforcl/cdump'
*.user_dump_dest='/opt/oracle/admin/bforcl/udump'
#修改的部分
*.control_file=('/data/oradata/standby_ctl01.ctl','/data/oradata/standby_ctl02.ctl')
*.DB_UNIQUE_NAME=bforcl
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,bforcl)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/data/archive/MANDATORYREOPEN=60MAX_FAILURE=3VALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=orcl'
*.LOG_ARCHIVE_DEST_2='SERVICE=orclLGWRSYNCAFFIRMVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=orcl'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
*.LOG_ARCHIVE_FORMAT=bforcl_%t_%s_%r.dbf
*.FAL_CLIENT=bforcl
*.FAL_SERVER=orcl
*.STANDBY_FILE_MANAGEMENT=AUTO#此参数保证主库上对表空间/数据文件的操作会自动应用到备用库上。
备库listener.ora
=======================
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=bforcl)
(ORACLE_HOME=/opt/oracle/10.2.0.1)
)
)
LISTENER=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.143)(PORT=1521))
)
)
)
tnsnames.ora
=============
ORCL=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.142)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=orcl)
)
)
BFORCL=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.143)(PORT=1521))
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=bforcl)
)
)
六、测试主备机之间网络联通性
tnspingorcl
tnspingbforcl
tnsping并不能保证可以互相登陆。
这里要确保sqlplus可以互相登陆对方数据库。
七、打开备用库到mount状态
查看备用库是否包含备用日志。
如果不包含备用日志文件,不能运行在"最大保护"或"最大可用性"模式。
SQL>select*fromv$logfile;
SQL>select*fromv$standby_log;
正式运行中v$standy_log中的某一个日志文件同步接收主库LGWR进程传送过来的重做条目。
八、打开主库,修改主库DataGuard保护模式
SQL>startupmount
SQL>selectname,db_unique_name,protection_modefromv$database;
NAMEDB_UNIQUE_NAMEPROTECTION_MODE
----------------------------------------
ORCLorcl MAXIMUMPERFORMANCE
SQL>alterdatabasesetstandbydatabasetomaximizeprotection;
打开主库到OPEN状态,监控alert日志文件,查看是否配置成功。
切换主库保护模式的语法:
ALTERDATABASESETSTANDBYDATABASETOMAXIMIZE{PROTECTION|AVAILABILITY|PERFORMANCE}
九、打开备用库恢复进程
recovermanagedstandbydatabasediconnectfromsession;
执行上面这条语句,备用库会在主库日志文件切换(备用日志文件切换)归档后,使用归档文件恢复数据库。
recovermanagedstandbydatabaseusingcurrentlogfiledisconnectfromsession;
这条语句与上面不同的是,备用日志文件切换,生成归档日志前,先恢复数据库。
recovermanagedstandbydatabasefinish;
这条语句是在做切换时,尽量多的保护数据。
从备用日志文件中恢复数据
recovermanagedstandbydatabasecancel;
取消备用库自动恢复
可以在使用上面两条语句时,查看v$managed_standby的不同。
SQL>recovermanagedstandbydatabasedisconnect;
Mediarecoverycomplete.
SQL>selectprocess,statusfromv$managed_standby;
PROCESS STATUS
---------------------
ARCH CLOSING
ARCH CLOSING
MRP0 WAIT_FOR_LOG
RFS IDLE
RFS IDLE
RFS IDLE
SQL>recovermanagedstandbydatabasecancel;
Mediarecoverycomplete.
SQL>recovermanagedstandbydatabaseusingcurrentlogfiledisconnect;
Mediarecoverycomplete.
SQL>selectprocess,statusfromv$managed_standby;
PROCESS STATUS
---------------------
ARCH CLOSING
ARCH CLOSING
MRP0 APPLYING_LOG
RFS IDLE
RFS IDLE
RFS IDLE
在恢复过程中,可以查看v$standby_log,此视图中会有日志文件与生产机的当前日志文件是同步的。
十、需要注意
最大保护模式下,至少要有一个备用库的设置满足LOG_ARCHIVE_DEST_2='SERVICE=bforclLGWRSYNCAFFIRM'并且,主库设置为MAXIMUMPROTECTION模式。
最大保护模式下,备用库还是会等待备用库切换日志后归档时或归档前才会恢复备用系统。
而不是主数据库的操作适时反映在备用库。
适时的仅仅是日志文件合而已。
这一点要注意。
在主备库切换的时候可以执行recovermanagedstandbydatabasefinish应用适时同步过来的日志信息,这样可以最大限度的保证数据。
测试:
1.在主库打开情况下关闭备库:
oracle10gR2中,运行在LGWR最大保护模式下的备库,主库没有关闭的情况下不允许关闭备库。
也就是说,每当关闭数据库时,必须先关闭主库才能关闭备用库。
打开数据库情况刚好相反。
备库没有MOUNT而直接打开主库是不允许的。
在数据库打开阶段会报错
SQL>startup
ORACLEinstancestarted.
TotalSystemGlobalArea167772160bytes
FixedSize 1218316bytes
VariableSize 71305460bytes
DatabaseBuffers 92274688bytes
RedoBuffers 2973696bytes
Databasemounted.
ORA-03113:
end-of-fileoncommunicationchannel
alter中错误信息见下:
"错误"
打开数据库必须是先mount备用库,才能打开主数据库。
SQL>shutdownimmediate
ORA-01154:
databasebusy.Open,close,mount,anddismountnotallowednow
alter日志中信息:
Completed:
ALTERDATABASERECOVERmanagedstandbydatabasecancel
WedJul406:
47:
402007
AttempttoshutdownStandbyDatabase
StandbyDatabaseoperatinginNODATALOSSmode
Detectedprimarydatabasealive,shutdownprimaryfirst,shutdownaborted
2.网络中断
测试断开备用机网络
$ifdowneth0
在主数据库做操作
SQL>createtablet(idnumber);
操作一直处于挂起状态。
查看主数据库alter日志显示如下错误,
如果网络断开,主库LGWR进程会一直挂起一直探测是否可以传输数据到备用机,直到备用机网络再次连接。
主数据库alter错误信息:
ThuJul514:
52:
222007
ORA-16198:
LGWRreceivedtimedouterrorfromKSR
LGWR:
AttemptingdestinationLOG_ARCHIVE_DEST_2networkreconnect(16198)
ORA-16198:
LGWRreceivedtimedouterrorfromKSR
LGWR:
Error16198disconnectingfromdestinationLOG_ARCHIVE_DEST_2standbyhost'bforcl'
LNSbstartedwithpid=16,O
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 gR2 最大 保护 模式 DataGuard 创建
![提示](https://static.bingdoc.com/images/bang_tan.gif)