• Oracle-12c如何从ASM备份里面恢复OCR


    前言:

    Oracle12c之后恢复OCR相比较之前版本有所不同,一是OCR的默认备份路径被配置在ASM磁盘组里面,这可能会导致在恢复OCR的时候无法正常获取OCR备份,因为如果备份是存放在ASM磁盘组里面,而OCR无法正常启动,这种情况下是无法通过ASM实例正常获取里面的备份的,对于出现的这种情况我们只能通过amdu工具去抽取磁盘进行获取,二是asm的密码文件存放在了OCR里面,在恢复完OCR之后,还需要重建asm密码文件。本文接下来将讲述在Oracle12c之后如何从ASM OCR备份里面恢复OCR。

    OCR备份路径:

    在Oracle12.2之后,OCR的默认备份路径会被配置在ASM磁盘组里面,我们可以通过ocrconfig工具去查看存放路径

    如果开启了mgmt,则备份会被配置在mgmt的磁盘组里面

    1. [grid@rac1 ~]$ ocrconfig -showbackup
    2. rac1 2022/11/08 15:53:12 +MGMT:/rac-cluster/OCRBACKUP/backup00.ocr.275.1120233187 0
    3. rac1 2022/11/06 21:58:04 +MGMT:/rac-cluster/OCRBACKUP/backup01.ocr.274.1120082281 0
    4. rac1 2018/07/26 15:01:55 +MGMT:/rac-cluster/OCRBACKUP/backup02.ocr.273.982508415 0
    5. rac1 2022/11/08 15:53:12 +MGMT:/rac-cluster/OCRBACKUP/day.ocr.271.1120233193 0

    如果没有开启mgmt,则备份默认会被配置在ocr的磁盘组里面

    1. [grid@rac1 ~]$ ocrconfig -showbackup
    2. rac2 2022/11/23 22:04:21 +ocr:/rac-cluster/OCRBACKUP/backup_20221123_220421.ocr.261.1121551461 0
    3. rac2 2022/11/23 22:04:16 +ocr:/rac-cluster/OCRBACKUP/backup_20221123_220416.ocr.260.1121551457 0
    4. rac2 2022/11/23 22:04:10 +ocr:/rac-cluster/OCRBACKUP/backup_20221123_220410.ocr.259.1121551451 0
    5. rac2 2022/11/23 22:04:01 +ocr:/rac-cluster/OCRBACKUP/backup_20221123_220401.ocr.258.1121551441 0
    6. rac2 2022/11/23 22:03:55 +ocr:/rac-cluster/OCRBACKUP/backup_20221123_220355.ocr.257.1121551437 0

    测试(Oracle RAC集群12.2.0.1版本):

    我们模拟ocr磁盘组3块磁盘坏了两块,并且备份是配置在ASM磁盘组里面,测试如何从ASM磁盘组备份里面恢复ocr

    1. 022-11-23 22:14:44.423 [OCSSD(16516)]CRS-1637: Unable to locate configured voting file with ID 2b2a3556-837f4f9c-bfa551bf-cf863883; details at (:CSSNM00020:) in /oracle/app/grid_base/diag/crs/rac1/crs/trace/ocssd.trc
    2. 2022-11-23 22:14:44.423 [OCSSD(16516)]CRS-1637: Unable to locate configured voting file with ID 8e09b740-5cc94f33-bfdf6d53-ac0af4d8; details at (:CSSNM00020:) in /oracle/app/grid_base/diag/crs/rac1/crs/trace/ocssd.trc
    3. 2022-11-23 22:14:44.423 [OCSSD(16516)]CRS-1705: Found 1 configured voting files but 2 voting files are required, terminating to ensure data integrity; details at (:CSSNM00021:) in /oracle/app/grid_base/diag/crs/rac1/crs/trace/ocssd.trc

    首先,我们先将两个节点的集群强制关闭

    /oracle/app/grid_home/bin/crsctl stop crs -f

    备份ocr磁盘

    1. dd if=/dev/mapper/ocr1 of=/tmp/backup_ocr1
    2. 10485760+0 records in
    3. 10485760+0 records out
    4. 5368709120 bytes (5.4 GB) copied, 61.7933 s, 86.9 MB/s

    接下来,将集群节点一启动为独占模式,跳过ocr

    1. /oracle/app/grid_home/bin/crsctl start crs -excl -nocrs
    2. [grid@rac1 ~]$ crsctl stat res -init -t
    3. --------------------------------------------------------------------------------
    4. Name Target State Server State details
    5. --------------------------------------------------------------------------------
    6. Cluster Resources
    7. --------------------------------------------------------------------------------
    8. ora.asm
    9. 1 ONLINE ONLINE rac1 Started,STABLE
    10. ora.cluster_interconnect.haip
    11. 1 ONLINE ONLINE rac1 STABLE
    12. ora.crf
    13. 1 OFFLINE OFFLINE STABLE
    14. ora.crsd
    15. 1 OFFLINE OFFLINE STABLE
    16. ora.cssd
    17. 1 ONLINE ONLINE rac1 STABLE
    18. ora.cssdmonitor
    19. 1 ONLINE ONLINE rac1 STABLE
    20. ora.ctssd
    21. 1 ONLINE ONLINE rac1 OBSERVER,STABLE
    22. ora.diskmon
    23. 1 OFFLINE OFFLINE STABLE
    24. ora.drivers.acfs
    25. 1 ONLINE ONLINE rac1 STABLE
    26. ora.evmd
    27. 1 ONLINE INTERMEDIATE rac1 STABLE
    28. ora.gipcd
    29. 1 ONLINE ONLINE rac1 STABLE
    30. ora.gpnpd
    31. 1 ONLINE ONLINE rac1 STABLE
    32. ora.mdnsd
    33. 1 ONLINE ONLINE rac1 STABLE
    34. ora.storage
    35. 1 OFFLINE OFFLINE STABLE

    接下来,我们通过amdu工具从asm磁盘里面抽取备份的信息,抽取的磁盘需要操作系统可以访问,并且磁盘组状态正常

    注:amdu是Oracle自带的工具,可以通过amdu从磁盘里面抽取asm文件,ocr备份所在磁盘需要完整,并且在操作系统层面可以访问,如果asm磁盘已经完全损坏,操作系统层面没办法访问,那也无法通过amdu进行抽取

    1. #$<GI HOME>/bin/amdu -diskstring '' -extract <file name to extract diskgroup_name.file_name>
    2. ---我们需要获取备份的磁盘组名称,磁盘路径以及备份片的文件号
    3. ---对于备份片的文件号,我们可以可以ocrconfig -showbackup进行获取,备份片的信息是存放在本地的OLR里面
    4. ---可以发现当前的备份片是放置在mgmt里面
    5. [root@rac1 ~]# /oracle/app/grid_home/bin/ocrconfig -showbackup
    6. PROT-26: Oracle Cluster Registry backup locations were retrieved from a local copy
    7. rac1 2022/11/08 15:53:12 +MGMT:/rac-cluster/OCRBACKUP/backup00.ocr.275.1120233187 0
    8. rac1 2022/11/06 21:58:04 +MGMT:/rac-cluster/OCRBACKUP/backup01.ocr.274.1120082281 0
    9. rac1 2018/07/26 15:01:55 +MGMT:/rac-cluster/OCRBACKUP/backup02.ocr.273.982508415 0
    10. rac1 2022/11/08 15:53:12 +MGMT:/rac-cluster/OCRBACKUP/day.ocr.271.1120233193 0
    11. rac1 2022/11/06 21:58:04 +MGMT:/rac-cluster/OCRBACKUP/week.ocr.272.1120082287 0
    12. PROT-25: Manual backups for the Oracle Cluster Registry are not available
    13. ---使用amdu抽取备份文件275
    14. ---使用grid用户
    15. /oracle/app/grid_home/bin/amdu -diskstring '/dev/mapper/mgmt[1-3]' -extract mgmt.275
    16. amdu_2022_11_24_16_26_51/
    17. ---会在目录amdu_2022_11_24_16_26_51下生成文件MGMT_275.f
    18. [grid@rac1 ~]$ ls -l /home/grid/amdu_2022_11_24_16_26_51/
    19. total 2060
    20. -rw-r--r-- 1 grid oinstall 2105344 Nov 24 16:26 MGMT_275.f
    21. -rw-r--r-- 1 grid oinstall 3867 Nov 24 16:26 report.txt
    22. [grid@rac1 ~]$

    如果备份是配置在ASM磁盘组OCR里面,并且OCR磁盘组损坏,那将无法通过amdu进行抽取,所以,最好将备份路径配置在非OCR磁盘组里面或者定期将备份进行转移

    1. ---通过ocrconfig配置新的备份路径
    2. /oracle/app/grid_home/bin/ocrconfig -backuploc +DATA
    3. ---通过ocrconfig转移备份
    4. /oracle/app/grid_home/bin/ocrconfig -copy +ocr:/rac-cluster/OCRBACKUP/backup_20221123_220355.ocr.257.1121551437 /tmp/backup_20221123_220355.ocr.257.1121551437

    重建OCR磁盘组,使用3块新的磁盘/dev/mapper/nocr1-3,3块盘的大小要保持跟原来的磁盘大小一致

    1. ---重建ocr磁盘组
    2. create diskgroup OCR NORMAL redundancy disk '/dev/mapper/nocr1','/dev/mapper/nocr2','/dev/mapper/nocr3' attribute 'COMPATIBLE.ASM' = '12.2';
    3. ---如果创建提示磁盘组已经存在,有可能是ocr的原来磁盘被扫到,可以备份之后进行dd磁盘头清空ocr磁盘组的信息,或者直接服用原来ocr的磁盘进行创建
    4. ORA-15018: diskgroup cannot be created
    5. ORA-15030: diskgroup name "OCR" is in use by another diskgroup

    从amdu抽取的备份里面恢复ocr

    1. su - root
    2. /oracle/app/grid_home/bin/ocrconfig -restore /home/grid/amdu_2022_11_24_16_26_51/MGMT_275.f

    恢复完成之后,重启集群

    1. /oracle/app/grid_home/bin/crsctl stop crs -f
    2. /oracle/app/grid_home/bin/crsctl start crs -excl -nocrs

    恢复投票盘

    1. ---设置asm_diskstring
    2. sqlplus / as sysasm
    3. alter system set asm_diskstring='/dev/mapper/*';
    4. ---确认没有表决盘0
    5. /oracle/app/grid_home/bin/crsctl query css votedisk
    6. Located 0 voting disk(s).
    7. ---替换投票盘
    8. su - grid
    9. /oracle/app/grid_home/bin/crsctl replace votedisk +OCR
    10. [grid@rac1 ~]$ /oracle/app/grid_home/bin/crsctl replace votedisk +OCR
    11. Successful addition of voting disk a5238bc26b944f2fbf7482d6b604906a.
    12. Successful addition of voting disk deaf2115bd334f0bbf1a2aae20c2a410.
    13. Successful addition of voting disk 016398a196fd4f3bbf4176a1ed84100a.
    14. Successfully replaced voting disk group with +OCR.
    15. CRS-4266: Voting file(s) successfully replaced
    16. ---确认替换成功
    17. [grid@rac1 ~]$ crsctl query css votedisk
    18. ## STATE File Universal Id File Name Disk group
    19. -- ----- ----------------- --------- ---------
    20. 1. ONLINE a5238bc26b944f2fbf7482d6b604906a (/dev/mapper/nocr1) [OCR]
    21. 2. ONLINE deaf2115bd334f0bbf1a2aae20c2a410 (/dev/mapper/nocr2) [OCR]
    22. 3. ONLINE 016398a196fd4f3bbf4176a1ed84100a (/dev/mapper/nocr3) [OCR]
    23. Located 3 voting disk(s).

    恢复asm参数文件

    1. ---在本地创建临时参数文件
    2. vi /tmp/pfile.ora
    3. *.asm_diskstring='/dev/mapper/*'
    4. *.asm_power_limit=1
    5. *.diagnostic_dest='/oracle/app/grid_base'
    6. *.instance_type='asm'
    7. *.large_pool_size=12M
    8. *.remote_login_passwordfile='EXCLUSIVE'
    9. ---恢复到ocr磁盘组里面
    10. SQL> create spfile='+OCR' from pfile='/tmp/pfile.ora';
    11. ---新的ASM spfile路径会自动更新到gnpnp profile里面
    12. 2022-11-24T17:11:48.656741+08:00
    13. NOTE: updated gpnp profile ASM SPFILE to +OCR/rac-cluster/ASMPARAMETERFILE/registry.253.1121620307

    恢复密码文件

    1. ---12c之后asm的密码文件配置在ocr磁盘组里面,因此需要进行重建,否则集群会出现报错
    2. 2022-11-24 10:20:46.462 : USRTHRD:3288332032: {0:9:3} ORA-01017: invalid username/password; logon denied
    3. ORA-17503: ksfdopn:2 Failed to open file +OCR/orapwasm
    4. ORA-15173: entry 'orapwasm' does not exist in director
    5. ---查看当前asm没有配置密码文件,没有用户信息
    6. [grid@rac1 trace]$ asmcmd lspwusr
    7. Username sysdba sysoper sysasm
    8. ---创建密码文件,配置sys,asmsnmp用户密码
    9. [grid@rac1 trace]$ asmcmd pwcreate --asm +OCR/orapwasm 'OraE123tesT!K#xK0+' -f
    10. [grid@rac1 trace]$ asmcmd lspwusr
    11. Username sysdba sysoper sysasm
    12. SYS TRUE TRUE FALSE
    13. [grid@rac1 trace]$ asmcmd orapwusr --grant sysasm SYS
    14. [grid@rac1 trace]$ asmcmd orapwusr --add ASMSNMP
    15. Enter password: ****************** ---->输入asmsnmp密码
    16. [grid@rac1 trace]$ asmcmd lspwusr
    17. Username sysdba sysoper sysasm
    18. SYS TRUE TRUE TRUE
    19. ASMSNMP FALSE FALSE FALSE

    密码文件添加crsd连接用户密码

    1. #查找crsd连接用户以及密码
    2. ---dump一下OCR的文件路径
    3. $ORACLE_HOME/bin/ocrdump /tmp/ocr.dmp
    4. [grid@rac1 ~]$ $ORACLE_HOME/bin/ocrdump /tmp/ocr.dmp
    5. PROT-310: Not all keys were dumped due to permissions.
    6. ---通过/tmp/ocr.dmp查找CRSUSER__ASM_001用户的ORATEXT
    7. [SYSTEM.ASM.CREDENTIALS.USERS.CRSUSER__ASM_001]
    8. ORATEXT : 294946121edd6f83ff121dfbb48b55d5:grid
    9. SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_READ, OTHER_PERMISSION : PROCR_NONE, USER_NAME : grid, GROUP_NAME : oinstall}
    10. ---验证294946121edd6f83ff121dfbb48b55d5的认证是否是CRSUSER__ASM_001
    11. [grid@rac1 ~]$ crsctl get credmaint -path /ASM/Self/294946121edd6f83ff121dfbb48b55d5 -credtype userpass -id 0 -attr user -local
    12. CRSUSER__ASM_001
    13. ---获取CRSUSER__ASM_001密码
    14. [grid@rac1 ~]$ crsctl get credmaint -path /ASM/Self/294946121edd6f83ff121dfbb48b55d5 -credtype userpass -id 0 -attr passwd -local
    15. nabLiBJhDF8dUxq0mltnf34tYKc4b
    16. ---创建crsd用户密码
    17. [grid@rac1 trace]$ asmcmd orapwusr --add CRSUSER__ASM_001
    18. Enter password: ***************************** 密码输入上面查到的nabLiBJhDF8dUxq0mltnf34tYKc4b
    19. [grid@rac1 trace]$
    20. ---添加sysdba,sysasm组
    21. ASMCMD> lspwusr
    22. Username sysdba sysoper sysasm
    23. SYS TRUE TRUE TRUE
    24. ASMSNMP TRUE FALSE FALSE
    25. CRSUSER__ASM_001 FALSE FALSE FALSE
    26. ASMCMD> orapwusr --grant sysdba CRSUSER__ASM_001
    27. ASMCMD> orapwusr --grant sysasm CRSUSER__ASM_001
    28. ASMCMD> lspwusr
    29. Username sysdba sysoper sysasm
    30. SYS TRUE TRUE TRUE
    31. ASMSNMP TRUE FALSE FALSE
    32. CRSUSER__ASM_001 TRUE FALSE TRUE
    33. ASMCMD>

    完成全部恢复工作,关闭重新启动集群

    1. /oracle/app/grid_home/bin/crsctl stop crs -f
    2. /oracle/app/grid_home/bin/crsctl start crs

    集群恢复正常

    1. [grid@rac1 ~]$ crsctl stat res -t
    2. --------------------------------------------------------------------------------
    3. Name Target State Server State details
    4. --------------------------------------------------------------------------------
    5. Local Resources
    6. --------------------------------------------------------------------------------
    7. ora.ARCH.dg
    8. ONLINE ONLINE rac1 STABLE
    9. ONLINE ONLINE rac2 STABLE
    10. ora.ASMNET1LSNR_ASM.lsnr
    11. ONLINE ONLINE rac1 STABLE
    12. ONLINE ONLINE rac2 STABLE
    13. ora.DATA.dg
    14. ONLINE OFFLINE rac1 STABLE
    15. ONLINE OFFLINE rac2 STABLE
    16. ora.LISTENER.lsnr
    17. ONLINE ONLINE rac1 STABLE
    18. ONLINE ONLINE rac2 STABLE
    19. ora.MGMT.dg
    20. ONLINE ONLINE rac1 STABLE
    21. ONLINE ONLINE rac2 STABLE
    22. ora.OCR.dg
    23. ONLINE ONLINE rac1 STABLE
    24. ONLINE ONLINE rac2 STABLE
    25. ora.net1.network
    26. ONLINE ONLINE rac1 STABLE
    27. ONLINE ONLINE rac2 STABLE
    28. ora.ons
    29. ONLINE ONLINE rac1 STABLE
    30. ONLINE ONLINE rac2 STABLE
    31. ora.proxy_advm
    32. OFFLINE OFFLINE rac1 STABLE
    33. OFFLINE OFFLINE rac2 STABLE
    34. --------------------------------------------------------------------------------
    35. Cluster Resources
    36. --------------------------------------------------------------------------------
    37. ora.LISTENER_SCAN1.lsnr
    38. 1 ONLINE ONLINE rac2 STABLE
    39. ora.MGMTLSNR
    40. 1 ONLINE ONLINE rac2 169.254.19.199 192.1
    41. 68.2.20,STABLE
    42. ora.asm
    43. 1 ONLINE ONLINE rac1 Started,STABLE
    44. 2 ONLINE ONLINE rac2 Started,STABLE
    45. 3 OFFLINE OFFLINE STABLE
    46. ora.cvu
    47. 1 ONLINE ONLINE rac2 STABLE
    48. ora.mgmtdb
    49. 1 ONLINE ONLINE rac2 Open,STABLE
    50. ora.orcl.db
    51. 1 OFFLINE OFFLINE STABLE
    52. 2 OFFLINE OFFLINE STABLE
    53. ora.qosmserver
    54. 1 ONLINE ONLINE rac2 STABLE
    55. ora.rac1.vip
    56. 1 ONLINE ONLINE rac1 STABLE
    57. ora.rac2.vip
    58. 1 ONLINE ONLINE rac2 STABLE
    59. ora.scan1.vip
    60. 1 ONLINE ONLINE rac2 STABLE
    61. --------------------------------------------------------------------------------

    总结:

    恢复的过程相比之前11G版本更加的复杂,特别是在恢复备份以及ASM密码文件上面,所以要定期将OCR以及ASM密码文件进行异地备份,尽量不要跟OCR磁盘组存放在一起,因为通常遇到的OCR备份恢复都是OCR磁盘组出现损坏的情况,这时候往往也会导致OCR备份以及ASM密码文件的丢失。

    OCR备份:

    1. ---通过ocrconfig配置新的备份路径
    2. /oracle/app/grid_home/bin/ocrconfig -backuploc +DATA
    3. ---手动进行备份
    4. /oracle/app/grid_home/bin/ocrconfig -showbackup
    5. ---通过ocrconfig转移备份到列的路径
    6. /oracle/app/grid_home/bin/ocrconfig -copy +ocr:/rac-cluster/OCRBACKUP/backup_20221123_220355.ocr.257.1121551437 /tmp/backup_20221123_220355.ocr.257.1121551437

    ASM密码文件备份与恢复:

    1. ---备份密码文件
    2. ASMCMD> pwget --asm
    3. +DGP_01/ASM/PASSWORD/pwdasm.256.844043619
    4. ASMCMD> ls +DGP_01/ASM/PASSWORD/pwdasm.256.844043619
    5. pwdasm.256.844043619
    6. ASMCMD> pwcopy --asm +DGP_01/ASM/PASSWORD/pwdasm.256.844043619
    7. +DGP_02/pwdasm_bk
    8. copying +DGP_01/ASM/PASSWORD/pwdasm.256.844043619 -> +DGP_02/pwdasm_bk
    9. ASMCMD> pwget --asm
    10. +DGP_02/pwdasm_bk
    11. ASMCMD> pwset --asm +DGP_01/ASM/PASSWORD/pwdasm.256.844043619
    12. ASMCMD> pwget --asm
    13. +DGP_01/ASM/PASSWORD/pwdasm.256.844043619
    14. ---恢复密码文件
    15. ASMCMD> pwcopy --asm +DGP_02/pwdasm_bk +DGP_03/pwdasm03
    16. ASMCMD> pwget --asm
    17. +DGP_03/pwdasm03
    18. ASMCMD> ls +DGP_03/pwdasm03
    19. pwdasm03

  • 相关阅读:
    双指针——移动零
    身份证扩展(类构造与析构)Java
    企业电子招投标采购系统——功能模块&功能描述+数字化采购管理 采购招投标
    高并发架构设计(三大利器:缓存、限流和降级)
    加在形参上,spring的@NonNull和lombok的@NonNull的区别
    【科学文献计量】metaknowledge创建和处理知识网络的方法与 RC.networkCoAuthor()中的参数解释
    字节跳动岗位薪酬体系曝光,看完感叹:不服不行
    SpringBoot3文件管理
    PostgreSQL数据库统计信息——acquire_sample_rows采样函数
    微服务入门:elasticsearch与RestClient(1)
  • 原文地址:https://blog.csdn.net/sinat_36757755/article/details/128027319