问题1:是否log_archive_dest_n=service中进程使用lgwr时(如log_archive_dest_2='service=DBSTD LGWR SYNC'),备库就一定要建立standby_redo_log
回答:不是,只有在最大可用或最大保护模式下,备库才要standby_redo_log
问题2:最大可用模式,备机是否可以应用archivelog
回答:可以,不过应用了archivelog后,主库的数据在备库无法实时查询到,数据只有归档后才可以在备库查询到
问题3:最大可用模式下(不设置自动切换的情况下),备机宕机后,重启备机,dataguard是否可以继续,并且还是最大可用模式
回答:dataguard继续,并且还是最大可用模式
如果备机启动后长时间没有实时应用standbyredo
log,可能有异常,备机需要先执行alter database recover managed standby
databasedisconnect from session以便应用归档日志,等归档日志应用完成后再执行alterdatabase
recover managed standby database cancel,再执行alterdatabase recover managed
standby database using current logfile disconnect
fromsession以便应用standby redo log
问题4:最大可用模式下(不设置自动切换的情况下),主机宕机后,重启主机,dataguard是否可以继续,并且还是最大可用模式
回答:dataguard继续,并且还是最大可用模式
如果主机启动后,备机长时间没有实时应用standbyredo
log,可能有异常,备机需要先执行alter database recover managed standby database
cancel,再执行alterdatabase recover managed standby database disconnect from
session应用归档日志,等归档日志应用完成后再执行alterdatabase recover managed standby
database cancel,再执行alterdatabase recover managed standby database using
current logfile disconnect fromsession以便应用standby redo log
问题5:最大可用模式下(不设置自动切换的情况下),主机宕机,无法启动,备机是否可以升级为主机
回答:可以
备机执行如下
1. alter database recovermanaged standby database finish force;
2. alter database commit toswitchover to primary with session shutdown;
3. alter database open;
问题6:备库不创建standbyredo log是否可以实时应用日志
回答:不可以,实时应用日志的时候会报错ORA-38500:USING CURRENT LOGFILE option not available without standby redo logs
问题7:最大性能模式下,备库是否可以实时应用日志standbyredo log
回答:可以,不过没有意义,还是需要等待主库归档才能真正把数据写入备库
虽然备库可以执行alterdatabase
recover managed standby database using current logfile disconnect
fromsession;但是并不会应用日志,主库的数据不会实时同步到备库,主库执行日志切换后,数据才同步到备库,说明在最大性能模式下,备库就算执行了实时应用日志的有,也没太大意义
问题8:最大可用性模式下,备库是否可以应用archivelog
回答:可以
最大可用性模式下,本来备库可以实时接收主库的数据的,不过备库也可以选择主库数据归档后再进行应用
问题9:主库不设置db_unique_name是否可以正常搭建datagard
回答:可以
因为主库不设置db_unique_name,则主库的db_unique_name和service_name都是默认是db_name
问题10:备库是否可以不设置db_unique_name
回答:可以,如果主库设置了db_unique_name,则备库可以不设置,不过不推荐这样设置
一般主库不设置db_unique_name,备库设置db_unique_name,则在主备的参数文件*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(主db_name,备db_unique_name)'
问题11:搭建一个物理datagard,主库设置LOG_AUTO_DELETE为true后,备库会不会自动删除归档日志
回答:不会
如果想删除备库的一些归档日志可以在rman下执行deletenoprompt archivelog until time "sysdate-N"; (N为天数)
问题12:搭建dataguard时不拷贝主库的在线日志,那备库到什么时候开始创建onlineredo log
回答:在备库执行alterdatabase
recover managed standby database disconnect from session或alterdatabase
recover managed standby database using current logfile disconnect
fromsession后,如果备库的*.log_file_name_convert参数设置正确,则备库开始创建onlineredo log
也就是说只要备库执行了recover,备库就开始创建自己的online redo log
问题13:搭建dataguard时使用rman备份进行恢复,备库alter database recover managed standby database disconnect fromsession时会用到增量备份包吗
回答:不会,如果使用了0级备份和1级备份2级备份,备库还原使用了0级备份,recover时不会使用1级和2级备份包,而是使用了自0级备份以来的所有归档日志
问题14:搭建datagard和操作系统用户名密码有关系吗
回答:没有,只和oracle的用户名和密码有关,一般只和sys用户有关
问题15:datagard可以通过rman命令自动删除归档日志吗
回答:可以
执行这样的脚本就行delete noprompt archivelog until time "sysdate-30";
问题16:配置好最大性能的主备库后,备库还没有开始应用归档日志之前,备库通过0级备份还原,会不会主库所有0级备份后的归档日志都会自动拷贝过来,是不是alter database recover managed standby database disconnect fromsession需要所有归档日志都拷贝过来了才能进行
回答:不会拷贝所有,会拷贝一部分
不是,只有主库0级备份后的归档日志都还在,并且0级备份后的第一个归档日志传输到了备库,备库就开始recover,在recover的过程中,需要哪个归档日志就从主库去获取哪个归档日志,如果主库归档日志丢失了,那就会报错了
问题17:此类报错是不是只是因为主备库的密码文件不一致导致
FAL[client, USER]: Error 1031 connecting tomierpdb2 for fetching gap sequence
ORA-01031: insufficient privileges
ORA-01031: insufficient privileges
回答:不一定,有时是因为备库recover归档日志时,获取不到主库的归档日志也会报这样的错。
问题18:下列问题如何处理
FAL[client]: Failed to request gap sequence
GAP - thread 1 sequence 123-124
DBID 3642506776 branch 64548658
FAL[client]: All defined FAL servers havebeen attempted.
回答:说明备库缺少thread为1,sequence为123和124的归档日志
解答1:如果主库也缺少了这个日志并且再也找不回来,则datagard无法继续了,需要重做,如果主库有这个日志的备份,则还原这个归档日志的备份,并把还原出来的归档日志拷贝到备库,并执行以下语句注册归档日志
ALTER DATABASE REGISTER PHYSICAL LOGFILE'/mierp/arch/1_123_83589255.dbf';
ALTER DATABASE REGISTER PHYSICAL LOGFILE'/mierp/arch/1_124_83589255.dbf';
问题19:datagard备库的归档日志是怎么个生成流程
回答:
1.主库配置lgwr,备库还未开始应用归档日志(即备库还没有生成自己的online redo log文件),备库不建立standby,主库执行alter system archive log current看归档会到备库吗
1.会
得出结论:只要备库打开至mount状态(甚至没有restore database),主库就会把归档日志传输到备库,主库日志切换后,最新的归档也会传输到备库
备库没有restore database即没有任何数据文件和online redo log和standby redo log也可以查询v$log,查询的结果和主库基本一致
但是查询v$standby_log则没有结果,因为没有建立standby redo log
2.主库配置lgwr,备库还未开始应用归档日志,备库建立standby,主库执行alter system archive log current看standby redo的sequence是否变化
2.会变化
3. 主库配置arch,备库还未开始应用归档日志,备库不建立standby,主库执行alter system archive log current看归档会到备库吗
3.会
答案:所有备库的归档日志是通过备库的RFS->ARCN生成,如果备库有standby redo log,则流程是备库RFS->standby redo log->ARCN,和备库自己的online redo log没有关系,因为至始至终都是主库的LOG_ARCHIVE_DEST_N决定了把主库的redo日志存放到哪台备库的RFS,因为就算备库没有onlineredo log也可以查到v$log的信息,而这样v$log的信息其实是主库的,就算在ARCN传输模式下,也不是通过ARCN把归档日志从主库拷贝到备库相应的位置,因为主库拷贝文件到备库是通过OS的,是需要OS的用户名密码验证的。而实际上我们并没有看到备库产生归档日志的时候,是需要OS的用户名密码的。
问题20:最大可用性模式下,备库mount后并restore database并创建了standby redo log,主库归档日志传输到了备库,但是还没有应用过,是否可以跳过先应用归档日志直接应用standby redo log
回答:可以
问题21:dataguard备库select name from v$datafile和select member fromv$logfile都正常, select tablespace_name from dba_tablespaces会出现ORA-03113:end-of-file on communication channel错误,根据告警日志,信息是ERROR:slave communication error with ASM; terminating process 7610,怎么产生的,怎么解决
回答:是因为*.db_file_name_convert只配置了数据文件,没有配置temp文件导致,可以重新配置备库的pfile并重启解决,也可以执行selectname from v$tempfile找到临时文件,再执行alter database tempfile '+DATA/ /temp.263.868896343' drop includingdatafiles删除tempfile。再创建一个tempfile即可alter tablespace temp add tempfile '/data01/ibm186/data01/temp.dbf'size 4096M;
问题22:dataguard主库的文件是通过OMF创建,备库也通过OMF创建,备库是否可以在*.db_file_name_convert只配置主库和备库的db_create_file_dest即可
回答:不可,因为主库备库的db_create_file_dest目录的子目录名称可能不一样,会导致无法创建文件,因为OMF创建文件规则是db_create_file_dest实例名datafile或tempfile文件名称
问题23:最大可用性模式,主库故障后,备库进行Failover的切换,是否必须按以下四步进行
1. 备库执行ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
2. 备库执行alter databaserecover managed standby database finish force;
3. 备库执行alter database commit to switchover to primary with sessionshutdown;
4. 备库执行alter database open;
回答:是的,虽然可以跳过第一步,但是不建议这样做