10g中单机上配置data guard的成功案例.docx
《10g中单机上配置data guard的成功案例.docx》由会员分享,可在线阅读,更多相关《10g中单机上配置data guard的成功案例.docx(7页珍藏版)》请在冰豆网上搜索。
10g中单机上配置dataguard的成功案例
在数据库的容灾方案中通常考虑dataguard这一技术来实现应用系统的flexibility和usability。
下面是我利用平时空闲时间在pc单机上配置oracle10g的dataguard物理备用数据库整个过程,供大家学习,也希望大家提出宝贵的建议给我。
一、原理
应该说物理备用数据库是主数据库的镜像,事务一致性副本。
物理备用数据库通过应用主数据库的重做日志数据来跟主数据库保持同步。
当主数据库发生事务变化时,oracle会将重做数据写入重做日志和归档日志中。
后台进程MRP0定期将归档日志传送到物理备用数据库后物理备用数据库应用这些事务变化,从而保持与主数据库的同步性。
二、前提条件
主数据库必须处于archivelog模式
三、环境准备
主数据库:
sid为ora10g;三类文件(controlfile,datafile和redologfile)均在H:
oradataora10g下,dump类文件(adump,bdump,udump等)在H:
adminora10g下;归档日志在H:
archora10g下
物理备用数据库:
sid为standby,三类文件(controlfile,datafile和redologfile)均在G:
standby下,dump类文件(adump,bdump,udump等)在G:
standbyadmin下;归档日志在G:
standbyarch下。
主数据库能正常启动
创建对应的目录结构
创建物理备用数据库的例程服务(oradim命令)
四、配置监听程序和网络服务名
listener.ora文件对应如下:
#LISTENER.ORANetworkConfigurationFile:
C:
oracleora92etworkadminlistener.ora
#GeneratedbyOracleconfigurationtools.
listener=
(DESCRIPTION_LIST=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.19.134)(PORT=1521))
)
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=ora10g)
(ORACLE_HOME=h:
oracle10g)
(SID_NAME=ora10g)
)
(SID_DESC=
(GLOBAL_DBNAME=ora10g)
(ORACLE_HOME=h:
oracle10g)
(SID_NAME=standby)
)
)
tnsnames.ora文件中相关内容如下:
primary.xxx.xxx.COM=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.19.134)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=ora10g)
)
)
standby.xxx.xxx.COM=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.19.134)(PORT=1521))
)
(CONNECT_DATA=
(SERVICE_NAME=standby)
)
)
C:
DocumentsandSettingsshiyihai>lsnrctlstart
LSNRCTLfor32-bitWindows:
Version10.2.0.1.0-Productionon29-6月-200710:
35:
22
Copyright(c)1991,2005,Oracle.Allrightsreserved.
启动tnslsnr:
请稍候...
TNSLSNRfor32-bitWindows:
Version10.2.0.1.0-Production
系统参数文件为H:
oracle10gnetworkadminlistener.ora
写入H:
oracle10gnetworkloglistener.log的日志信息
监听:
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.1.19.134)(PORT=1521)))
正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.19.134)(PORT=1521)))
LISTENER的STATUS
------------------------
别名LISTENER
版本TNSLSNRfor32-bitWindows:
Version10.2.0.1.0-Production
启动日期29-6月-200710:
35:
25
正常运行时间0天0小时0分3秒
跟踪级别off
安全性ON:
LocalOSAuthentication
SNMPOFF
监听程序参数文件H:
oracle10gnetworkadminlistener.ora
监听程序日志文件H:
oracle10gnetworkloglistener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.1.19.134)(PORT=1521)))
服务摘要..
服务"ora10g"包含2个例程。
例程"ora10g",状态UNKNOWN,包含此服务的1个处理程序...
例程"standby",状态UNKNOWN,包含此服务的1个处理程序...
命令执行成功
C:
DocumentsandSettingsshiyihai>tnspingstandby
TNSPingUtilityfor32-bitWindows:
Version10.2.0.1.0-Productionon29-6月-200717:
08:
20
Copyright(c)1997,2005,Oracle.Allrightsreserved.
已使用的参数文件:
H:
oracle10gnetworkadminsqlnet.ora
已使用TNSNAMES适配器来解析别名
Attemptingtocontact(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.
(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=standby)))
OK(10毫秒)
C:
DocumentsandSettingsshiyihai>
五、配置主数据库参数文件
pfile_ora10g.ora的对应内容如下:
ora10g.__db_cache_size=192937984
ora10g.__java_pool_size=4194304
ora10g.__large_pool_size=4194304
ora10g.__shared_pool_size=96468992
ora10g.__streams_pool_size=0
*.audit_file_dest='H:
adminora10gadump'
*.background_dump_dest='H:
adminora10g_dump'
*.compatible='10.2.0.1.0'
*.control_files='H:
oradataora10gCONTROL01.CTL','H:
oradataora10gCONTROL02.CTL','H:
oradataora10gCONTROL03.CTL'
*.core_dump_dest='H:
adminora10gcdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=32
*.db_name='ora10g'
*.instance_name='ora10g'
*.db_recovery_file_dest='h:
flash_recovery_area'
*.db_recovery_file_dest_size=500000000
*.job_queue_processes=10
*.log_archive_dest_1='location=H:
archora10gvalid_for=(all_logfiles,all_roles)db_unique_name=ora10g'
*.log_archive_dest_2='service=standbyvalid_for=(online_logfiles,primary_role)db_unique_name=standby'
*.log_archive_config='dg_config=(ora10g,standby)'
*.fal_server=standby
*.fal_client=primary
*.standby_file_management=auto
*.log_archive_format='%s_%t_%r.log'
*.open_cursors=300
*.pga_aggregate_target=200000000
*.processes=550
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=610
*.sga_target=300000000
*.star_transformation_enabled='TRUE'
*.fast_start_mttr_target=300
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='H:
adminora10gudump'
*.db_unique_name=ora10g
六、配置物理备用数据库的参数文件
pfile_standby.ora的对应内容如下:
ora10g.__db_cache_size=192937984
ora10g.__java_pool_size=4194304
ora10g.__large_pool_size=4194304
ora10g.__shared_pool_size=96468992
ora10g.__streams_pool_size=0
*.audit_file_dest='G:
standbyadminora10gadump'
*.compatible='10.2.0.1.0'
*.control_files='G:
standbyCONTROL01.CTL'
*.core_dump_dest='G:
standbyadminora10gcdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=32
*.db_name='ora10g'
*.db_recovery_file_dest='h:
flash_recovery_area'
*.db_recovery_file_dest_size=500000000
*.dispatchers='(PROTOCOL=TCP)(SERVICE=ora10gXDB)'
*.job_queue_processes=10
*.log_archive_dest_1='location=G:
standbyvalid_for=(all_logfiles,all_roles)db_unique_name=standby'
*.log_archive_config='dg_config=(ora10g,standby)'
*.db_file_name_convert='h:
oradataora10g','g:
standby'
*.log_file_name_convert='h:
oradataora10g','g:
standby'
*.standby_file_management=auto
*.standby_archive_dest='g:
standbyarch'
*.background_dump_dest='g:
standbyadmin_dump'
*.user_dump_dest='g:
standbyadminudump'
*.fal_server=primary
*.fal_client=standby
*.standby_file_management=auto
*.log_archive_format='%s_%t_%r.log'
*.open_cursors=300
*.pga_aggregate_target=200000000
*.processes=550
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=610
*.sga_target=300000000
*.star_transformation_enabled='TRUE'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.db_unique_name=standby
*.service_names=standby
*.instance_name=standby
七、将主数据库的数据文件迁到备用库上
SQL>alterdatabasebeginbackup;
数据库已更改。
SQL>hostcopyH:
oradataora10g*.DBFG:
standby
H:
oradataora10gSYSAUX01.DBF
H:
oradataora10gSYSTEM01.DBF
H:
oradataora10gTEMP01.DBF
H:
oradataora10gTEST.DBF
H:
oradataora10gUNDOTBS01.DBF
已复制5个文件。
SQL>alterdatabaseendbackup;
数据库已更改。
八、将主数据库的控制文件迁到备用库上
SQL>alterdatabasecreatestandbycontrolfileas'G:
standbycontrol01.ctl';
数据库已更改。
九、启动备用数据库到mount状态
SQL>startuppfile="G:
standbypfile_standby.ora"mount;
ORACLE例程已经启动。
TotalSystemGlobalArea301989888bytes
FixedSize1248672bytes
VariableSize96469600bytes
DatabaseBuffers201326592bytes
RedoBuffers2945024bytes
数据库装载完毕。
十、启动主数据库
SQL>startuppfile="G:
standbypfile_ora10g.ora";
ORACLE例程已经启动。
TotalSystemGlobalArea301989888bytes
FixedSize1248672bytes
VariableSize104858208bytes
DatabaseBuffers192937984bytes
RedoBuffers2945024bytes
数据库装载完毕。
数据库已经打开。
SQL>createtabletest(namevarchar2(24));
表已创建。
SQL>insertintotestvalues('1');
已创建1行。
SQL>commit;
提交完成。
SQL>altersystemswitchlogfile;
系统已更改。
SQL>altersystemswitchlogfile;
系统已更改。
SQL>
十一、物理备用数据库开始应用重做机制
SQL>alterdatabaserecovermanagedstandbydatabasedisconnectfromsession;
数据库已更改。
这里看到备用数据库的alert_standby.log中有如下信息:
FriJun2915:
43:
532007
alterdatabaserecovermanagedstandbydatabasedisconnectfromsession
MRP0startedwithpid=19,OSid=2620
ManagedStandbyRecoverynotusingRealTimeApply
MediaRecoveryLogG:
STANDBYARCH116_1_623949299.LOG
FriJun2915:
43:
592007
Completed:
alterdatabaserecovermanagedstandbydatabasedisconnectfromsession
FriJun2915:
43:
592007
MediaRecoveryLogG:
STANDBYARCH117_1_623949299.LOG
MediaRecoveryLogG:
STANDBYARCH118_1_623949299.LOG
MediaRecoveryLogG:
STANDBYARCH119_1_623949299.LOG
MediaRecoveryLogG:
STANDBYARCH120_1_623949299.LOG
MediaRecoveryLogG:
STANDBYARCH121_1_623949299.LOG
MediaRecoveryWaitingforthread1sequence122
FriJun2915:
47:
432007
查询备用库v$archived_log可看到:
SQL>selectnamefromv$archived_log;
NAME
--------------------------------------------------------------------------------
G:
STANDBYARCH110_1_623949299.LOG
G:
STANDBYARCH111_1_623949299.LOG
G:
STANDBYARCH112_1_623949299.LOG
G:
STANDBYARCH113_1_623949299.LOG
G:
STANDBYARCH114_1_623949299.LOG
G:
STANDBYARCH115_1_623949299.LOG
G:
STANDBYARCH116_1_623949299.LOG
G:
STANDBYARCH117_1_623949299.LOG
G:
STANDBYARCH118_1_623949299.LOG
G:
STANDBYARCH119_1_623949299.LOG
G:
STANDBYARCH120_1_623949299.LOG
NAME
--------------------------------------------------------------------------------
G:
STANDBYARCH121_1_623949299.LOG
已选择12行。
SQL>
将备用库以只读方式打开并查询,得到如下的结果:
SQL>alterdatabaseopen;
alterdatabaseopen
*
第1行出现错误:
ORA-01154:
数据库忙。
现在不允许打开,关闭,装载和卸载
SQL>alterdatabaserecovermanagedstandbydatabasecancel;
数据库已更改。
SQL>alterdatabaseopen;
数据库已更改。
SQL>select*fromtest;
NAME
------------------------
1
SQL>
至此,整个dataguard的配置完毕,并检验同步机制是成功的!
接下来是怎么切换到备用数据库上并由备用数据库切换回主数据库。
待续!