设为首页 收藏本站
查看: 1157|回复: 0

[经验分享] oracle RAC数据库建立STANDBY(三)

[复制链接]

尚未签到

发表于 2018-9-26 11:18:34 | 显示全部楼层 |阅读模式
  这篇文章描述为RAC环境创建STANDBY数据库。
  由于篇幅限制,加上碰到了很多的bug,只能将文章拆分成多篇。
  这章记录一下STANDBY数据库创建过程中碰到的问题。
  刚刚在进行RAC环境的DUPLICATE DATABASE的时候,就碰到了很多问题,由于二者命令比较相似,本来认为这次不会碰到太多的问题,没有想到的是,这次碰到的问题居然比DUPLICATE碰到的问题多出一倍。而且基本上所有碰到的问题都是DUPLICATE操作时不曾遇到的。
  最开始为了减少麻烦,打算采用SPFILE的方式,并且利用FROM ACTIVE DATABASE,这样可以不用读取备份集:
  bash-3.00$ rman target sys/test@172.0.2.54/rac11g.us.oracle.com auxiliary /

  恢复管理器:>  Copyright (c) 1982, 2007, Oracle.  All rights reserved.
  连接到目标数据库: RAC11G(DBID=1712482917)
  已连接到辅助数据库: RAC11G(未装载)
  RMAN> duplicate target database for standby
  2> db_file_name_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  3> dorecover
  4> from active database
  5> spfile
  6> parameter_value_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  7> set log_file_name_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  8> set log_archive_dest_1='LOCATION=+DATA/RAC11G'
  9> ;
  启动Duplicate Db于09-9月-08
  使用目标数据库控制文件替代恢复目录
  分配的通道: ORA_AUX_DISK_1
  通道ORA_AUX_DISK_1: SID=112设备类型=DISK
  RMAN-00571: ===========================================================
  RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  RMAN-00571: ===========================================================
  RMAN-03002: Duplicate Db命令(在09/09/2008 14:58:26上)失败
  RMAN-06217:未使用Net服务名连接到辅助数据库
  这个RMAN-6217错误居然在metalink上都找不到,不过好在错误的描述比较清晰,只需要通过连接服务名的方式连接辅助实例即可。
  继续尝试:
  bash-3.00$ rman target sys/test@172.0.2.54/rac11g.us.oracle.com auxiliary sys/test@rac11g1

  恢复管理器:>  Copyright (c) 1982, 2007, Oracle.  All rights reserved.
  连接到目标数据库: RAC11G(DBID=1712482917)
  RMAN-00571: ===========================================================
  RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  RMAN-00571: ===========================================================
  RMAN-00554:内部恢复管理器程序包初始化失败
  RMAN-04006:来自辅助数据库的错误: ORA-12514: TNS:监听程序当前无法识别连接描述符中请求的服务
  不过这里引发一个问题,由于10g以上默认采用动态注册,由于数据库没有启动,因此动态注册无法启用,没有办法通过服务名连接,只能手工编辑一个SID列表,添加到listener.ora文件中:
  SID_LIST_LISTENER =
  (SID_LIST =
  (SID_DESC =
  (SID_NAME = rac11g1)
  (ORACLE_HOME = /data/oracle/product/11.1/database)
  )
  )
  下面重启监听:
  $ lsnrctl stop
  LSNRCTL for Solaris: Version 11.1.0.6.0 - Production on 09-9月-2008 15:20:43
  Copyright (c) 1991, 2007, Oracle.  All rights reserved.
  正在连接到(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
  命令执行成功
  $ lsnrctl start
  LSNRCTL for Solaris: Version 11.1.0.6.0 - Production on 09-9月-2008 15:20:55
  Copyright (c) 1991, 2007, Oracle.  All rights reserved.
  启动/data/oracle/product/11.1/database/bin/tnslsnr:请稍候...
  TNSLSNR for Solaris: Version 11.1.0.6.0 - Production
  系统参数文件为/data/oracle/product/11.1/database/network/admin/listener.ora
  写入/data/oracle/diag/tnslsnr/ser1/listener/alert/log.xml的日志信息
  监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ser1)(PORT=1521)))
  正在连接到(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
  LISTENER的STATUS
  ------------------------
  别名                      LISTENER
  版本                      TNSLSNR for Solaris: Version 11.1.0.6.0 - Production
  启动日期                  09-9月-2008 15:20:55
  正常运行时间              0天0小时0分0秒
  跟踪级别                  off
  安全性                    ON: Local OS Authentication
  SNMP                      OFF
  监听程序参数文件          /data/oracle/product/11.1/database/network/admin/listener.ora
  监听程序日志文件          /data/oracle/diag/tnslsnr/ser1/listener/alert/log.xml
  监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ser1)(PORT=1521)))
  服务摘要..
  服务"rac11g1"包含1个例程。
  例程"rac11g1",状态UNKNOWN,包含此服务的1个处理程序...
  命令执行成功
  再次连接错误依旧,这是由于默认配置的RAC环境的TNSNAMES中的服务名对当前不适用,添加一个新的服务名:
  RAC11G1_S =
  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 172.0.2.62)(PORT = 1521))
  (CONNECT_DATA =
  (SERVER = DEDICATED)
  (SID = rac11g1)
  )
  )
  再次连接,报错没有权限:
  bash-3.00$ rman target sys/test@172.0.2.54/rac11g.us.oracle.com auxiliary sys/test@rac11g1_s

  恢复管理器:>  Copyright (c) 1982, 2007, Oracle.  All rights reserved.
  连接到目标数据库: RAC11G(DBID=1712482917)
  RMAN-00571: ===========================================================
  RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  RMAN-00571: ===========================================================
  RMAN-00554:内部恢复管理器程序包初始化失败
  RMAN-04006:来自辅助数据库的错误: ORA-01031: insufficient privileges
  最简单的办法是拷贝源数据库的初始化参数文件到当前的节点的$ORACLE_HOME/dbs目录中,拷贝完成后,终于可以成功连接RMAN:
  bash-3.00$ rman target sys/test@172.0.2.54/rac11g.us.oracle.com auxiliary sys/test@rac11g1_s

  恢复管理器:>  Copyright (c) 1982, 2007, Oracle.  All rights reserved.
  连接到目标数据库: RAC11G(DBID=1712482917)
  已连接到辅助数据库: RAC11G(未装载)
  执行DUPLICATE时报错:
  RMAN> duplicate target database for standby
  2> db_file_name_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  3> dorecover
  4> from active database
  5> spfile
  6> parameter_value_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  7> set log_file_name_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  8> set log_archive_dest_1='LOCATION=+DATA/RAC11G'
  9> ;
  启动Duplicate Db于09-9月-08
  使用目标数据库控制文件替代恢复目录
  分配的通道: ORA_AUX_DISK_1
  通道ORA_AUX_DISK_1: SID=37设备类型=DISK
  RMAN-00571: ===========================================================
  RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  RMAN-00571: ===========================================================
  RMAN-03002: Duplicate Db命令(在09/09/2008 15:38:01上)失败
  RMAN-06764: Must specify db_unique_name with FOR STANDBY
  由于DUPLICATE创建STANDBY的时候会根据命令中指定的参数和源数据库的参数创建出STANDBY数据库的初始化参数,因此这里需要指明DB_UNIQUE_NAME参数,如此之外,应该把所有STANDBY数据库使用的参数配置完成。
  除此之外,应该保证STANDBY数据库中配置了源数据库服务名RAC11G,而源数据库中配置了STANDBY数据库服务名RAC11G_S。
  再次执行DUPLICATE操作:
  RMAN> duplicate target database for standby
  2> db_file_name_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  3> dorecover
  4> from active database
  5> spfile
  6> parameter_value_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  7> set log_file_name_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  8> set fal_client='RAC11G_S'
  9> set fal_server='RAC11G'
  10> set log_archive_dest_1='LOCATION=+DATA/RAC11GVALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=rac11g_s'
  11> set log_archive_dest_2='SERVICE=rac11gLGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=rac11g'
  12> set standby_archive_dest='+DATA/RAC11G'
  13> set db_unique_name='rac11g_s'
  14> ;
  启动Duplicate Db于09-9月-08
  使用通道ORA_AUX_DISK_1
  内存脚本的内容:
  {
  backup as copy reuse
  file  '/data/oracle/product/11.1/database/dbs/orapwrac11g2' auxiliary format
  '/data/oracle/product/11.1/database/dbs/orapwrac11g1'   file
  '/dev/vx/rdsk/datavg/rac11g_spfile' auxiliary format
  '+DATA/rac11g/spfilerac11g.ora'   ;
  sql clone "alter system set spfile= ''+DATA/rac11g/spfilerac11g.ora''";
  }
  正在执行内存脚本
  启动backup于09-9月-08
  分配的通道: ORA_DISK_1
  通道ORA_DISK_1: SID=484实例=rac11g2设备类型=DISK
  DBGANY:     Mismatched message length! [16:06:39.742] (krmiduem)
  DBGANY:     Mismatched message length! [16:06:39.744] (krmiduem)
  MAN-00571: ===========================================================
  RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  RMAN-00571: ===========================================================
  RMAN-00601: fatal error in recovery manager
  RMAN-03004:执行命令期间出现严重错误
  RMAN-00600: internal error, arguments [3045] [] [] [] []
  RMAN-03009: backup命令(ORA_DISK_1通道上,在09/09/2008 16:06:39上)失败
  ORA-17629:无法连接到远程数据库服务器
  ORA-17627: ORA-12154: TNS:无法解析指定的连接标识符
  ORA-17629:无法连接到远程数据库服务器
  这个错误是由于配置源数据库时没有使用VIP地址,而指定了一个实例的PUBLIC地址,这里应该使用VIP,确保RMAN可以同时连接到两个实例上:
  bash-3.00$ rman target sys/test@rac11gauxiliary sys/test@rac11g1_s

  Recovery Manager:>  Copyright (c) 1982, 2007, Oracle.  All rights reserved.
  connected to target database: RAC11G(DBID=1712482917)
  connected to auxiliary database: RAC11G(not mounted)
  RMAN> duplicate target database for standby
  2> db_file_name_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  3> dorecover
  4> from active database
  5> spfile
  6> parameter_value_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  7> set log_file_name_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  8> set fal_client='RAC11G_S'
  9> set fal_server='RAC11G'
  10> set log_archive_dest_1='LOCATION=+DATA/RAC11GVALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=rac11g_s'
  11> set log_archive_dest_2='SERVICE=rac11gLGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=rac11g'
  12> set standby_archive_dest='+DATA/RAC11G'
  13> set db_unique_name='rac11g_s'
  ;
  14>
  Starting Duplicate Db at 09-SEP-08
  using target database control file instead of recovery catalog
  allocated channel: ORA_AUX_DISK_1
  channel ORA_AUX_DISK_1: SID=38 device type=DISK
  contents of Memory Script.:
  {
  backup as copy reuse
  file  '/data/oracle/product/11.1/database/dbs/orapwrac11g2' auxiliary format
  '/data/oracle/product/11.1/database/dbs/orapwrac11g1'   file
  '/dev/vx/rdsk/datavg/rac11g_spfile' auxiliary format
  '+DATA/rac11g/spfilerac11g.ora'   ;
  sql clone "alter system set spfile= ''+DATA/rac11g/spfilerac11g.ora''";
  }
  executing Memory Script
  Starting backup at 09-SEP-08
  allocated channel: ORA_DISK_1
  channel ORA_DISK_1: SID=611 instance=rac11g1 device type=DISK
  RMAN-03009: failure of backup command on ORA_DISK_1 channel at 09/09/2008 16:11:41
  ORA-17629: Cannot connect to the remote database server

  ORA-17627: ORA-12154: TNS:could not resolve the connect>  ORA-17629: Cannot connect to the remote database server
  continuing other job steps, job failed will not be re-run
  RMAN-00571: ===========================================================
  RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  RMAN-00571: ===========================================================
  RMAN-03002: failure of Duplicate Db command at 09/09/2008 16:11:41
  RMAN-03015: error occurred in stored script. Memory Script
  RMAN-03009: failure of backup command on ORA_DISK_1 channel at 09/09/2008 16:11:41
  ORA-17629: Cannot connect to the remote database server

  ORA-17627: ORA-12154: TNS:could not resolve the connect>  ORA-17629: Cannot connect to the remote database server
  采用本地配置的LOAD_BALANCE服务名,仍然出现上面的错误,看来最好的方式还是通过ALLOCATE CHANNEL的方式手工分配CHANNEL:
  bash-3.00$ rman target sys/test@rac11gauxiliary sys/test@rac11g1_s

  Recovery Manager:>  Copyright (c) 1982, 2007, Oracle.  All rights reserved.
  connected to target database: RAC11G(DBID=1712482917)
  connected to auxiliary database: RAC11G(not mounted)
  RMAN> run
  2> {
  3> allocate channel c1 device type disk connect 'sys/test@rac11g1';
  4> allocate channel c2 device type disk connect 'sys/test@rac11g2';
  5> allocate auxiliary channel ac1 device type disk;
  6> allocate auxiliary channel ac2 device type disk;
  7> duplicate target database for standby
  8> db_file_name_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  9> dorecover
  10> from active database
  11> spfile
  12> parameter_value_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  13> set log_file_name_convert '/dev/vx/rdsk/datavg', '+DATA/RAC11G'
  14> set fal_client='RAC11G_S'
  15> set fal_server='RAC11G'
  16> set log_archive_dest_1='LOCATION=+DATA/RAC11GVALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=rac11g_s'
  17> set log_archive_dest_2='SERVICE=rac11gLGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=rac11g'
  18> set standby_archive_dest='+DATA/RAC11G'
  19> set db_unique_name='rac11g_s';
  20> }
  using target database control file instead of recovery catalog
  allocated channel: c1
  channel c1: SID=285 instance=rac11g1 device type=DISK
  allocated channel: c2
  channel c2: SID=119 instance=rac11g2 device type=DISK
  allocated channel: ac1
  channel ac1: SID=39 device type=DISK
  allocated channel: ac2
  channel ac2: SID=36 device type=DISK
  Starting Duplicate Db at 09-SEP-08
  contents of Memory Script.:
  {
  backup as copy reuse
  file  '/data/oracle/product/11.1/database/dbs/orapwrac11g2' auxiliary format
  '/data/oracle/product/11.1/database/dbs/orapwrac11g1'   file
  '/dev/vx/rdsk/datavg/rac11g_spfile' auxiliary format
  '+DATA/rac11g/spfilerac11g.ora'   ;
  sql clone "alter system set spfile= ''+DATA/rac11g/spfilerac11g.ora''";
  }
  executing Memory Script
  Starting backup at 09-SEP-08
  RMAN-03009: failure of backup command on c1 channel at 09/09/2008 16:18:44
  ORA-17629: Cannot connect to the remote database server

  ORA-17627: ORA-12154: TNS:could not resolve the connect>  ORA-17629: Cannot connect to the remote database server
  continuing other job steps, job failed will not be re-run
  released channel: c1
  released channel: c2
  released channel: ac1
  released channel: ac2
  RMAN-00571: ===========================================================
  RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
  RMAN-00571: ===========================================================
  RMAN-03002: failure of Duplicate Db command at 09/09/2008 16:18:44
  RMAN-03015: error occurred in stored script. Memory Script
  RMAN-03009: failure of backup command on c2 channel at 09/09/2008 16:18:44
  ORA-17629: Cannot connect to the remote database server

  ORA-17627: ORA-12154: TNS:could not resolve the connect>  ORA-17629: Cannot connect to the remote database server
  RMAN> exit
  Recovery Manager complete.
  这个错误是由于远端配置的tnsnames.ora中存在问题,尝试在源数据库连接目标数据库环境也报错ORA-12154,增加RAC11G1_S服务名后,问题解决:
  RAC11G1_S =
  (DESCRIPTION =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 172.0.2.62)(PORT = 1521))
  (CONNECT_DATA =
  (SERVER = DEDICATED)
  (SID = rac11g1)
  )
  )
  由于错误太多,只能在下一篇文章中继续描述。
  oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-602291-1-1.html 上篇帖子: Oracle技术之11.2 RAC时间同步异常(二) 下篇帖子: Oracle的几个常用用户
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表