• Oracle 19c OCR, Voting Disk Relocation


    OS Environment: Oracle Linux 8.1 (64-bit)
    Database Environment: Oracle Database 19.3.0.0

    In scenarios where OCR and Voting Disks were initially configured on the same disk group (+OCR), this guide describes how to move the voting disks to a separate disk group (+VOTE), which was created for separation purposes.


    1. Check Current OCR Location

    $ ocrcheck
    Status of Oracle Cluster Registry is as follows :
             Version                  :          4
             Total space (kbytes)     :     901284
             Used space (kbytes)      :      84372
             Available space (kbytes) :     816912
             ID                       : 1645669115
             Device/File Name         :       +OCR
                                        Device/File integrity check succeeded
                                        Device/File not configured
                                        ...
             Cluster registry integrity check succeeded
             Logical corruption check bypassed due to non-privileged user

    OCR is currently located on +OCR.


    2. Check Current Voting Disk Location

    $ crsctl query css votedisk
    ##  STATE    File Universal Id                File Name Disk group
    --  -----    -----------------                --------- ----------
     1. ONLINE   7af4d351969b4faf... (/dev/oracleasm/disks/OCR1) [OCR]
     2. ONLINE   bfc984baab224f3d... (/dev/oracleasm/disks/OCR2) [OCR]
     3. ONLINE   a4f208fc8d054f79... (/dev/oracleasm/disks/OCR3) [OCR]

    Voting disks are also located in +OCR.


    3. Create a New Disk Group for Voting Disks

    $ export ORACLE_SID=+ASM1
    $ export ORACLE_HOME=$GRID_HOME
    $ sqlplus / as sysasm
    SQL> create diskgroup vote normal redundancy 
         disk '/dev/oracleasm/disks/VOTE1',
              '/dev/oracleasm/disks/VOTE2',
              '/dev/oracleasm/disks/VOTE3';

    4. Confirm Disk Group Creation

    SQL> select inst_id, name, state, type from gv$asm_diskgroup;
    
    INST_ID | NAME | STATE   | TYPE
    --------|------|---------|------
    1       | OCR  | MOUNTED | NORMAL
    1       | VOTE | MOUNTED | NORMAL
    2       | OCR  | MOUNTED | NORMAL
    2       | VOTE | DISMOUNTED

    The VOTE disk group is not yet mounted on instance 2.


    5. Mount the Disk Group on the Second Node

    $ export ORACLE_SID=+ASM2
    $ export ORACLE_HOME=$GRID_HOME
    $ sqlplus / as sysasm
    SQL> alter diskgroup vote mount;

    6. Confirm Disk Group is Mounted on Both Nodes

    SQL> select inst_id, name, state, type from gv$asm_diskgroup;
    
    INST_ID | NAME | STATE   | TYPE
    --------|------|---------|------
    1       | OCR  | MOUNTED | NORMAL
    1       | VOTE | MOUNTED | NORMAL
    2       | OCR  | MOUNTED | NORMAL
    2       | VOTE | MOUNTED | NORMAL

    7. Replace the Voting Disks

    $ crsctl replace votedisk +VOTE
    Successful addition of voting disk cbf4fb6df0f74f0abf837753f6ba09a7.
    Successful addition of voting disk b11b725601094f8dbf461a937a2bdccd.
    Successful addition of voting disk e1875e40a1274f26bf8cc6dd9b74d368.
    Successful deletion of voting disk 7af4d351969b4fafbf3820a280eda284.
    Successful deletion of voting disk bfc984baab224f3dbf95225711a3735d.
    Successful deletion of voting disk a4f208fc8d054f79bfedf9c512ef5514.
    Successfully replaced voting disk group with +VOTE.
    CRS-4266: Voting file(s) successfully replaced

    8. Verify the New Voting Disk Location

    $ crsctl query css votedisk
    ##  STATE    File Universal Id                File Name Disk group
    --  -----    -----------------                --------- ----------
     1. ONLINE   cbf4fb6df0f74f0a... (/dev/oracleasm/disks/VOTE1) [VOTE]
     2. ONLINE   b11b725601094f8d... (/dev/oracleasm/disks/VOTE2) [VOTE]
     3. ONLINE   e1875e40a1274f26... (/dev/oracleasm/disks/VOTE3) [VOTE]
    Located 3 voting disk(s).

    Voting disks are now successfully relocated to the +VOTE disk group.


  • Hello, I’m Youngmin Park.

    Hello, I’m Youngmin Park.
    After running a technical blog in Korean for some time, I’ve decided to start this English blog to share my experiences with a broader audience.
    My original blog (in Korean) is available at: https://positivemh.tistory.com

    I work as an Oracle DBA in South Korea, and through this blog, I plan to document and share various issues I’ve encountered, tests I’ve conducted, and insights I’ve gained in the field.
    Some of these lessons were learned the hard way, and I hope that by sharing them here, they might help others solve similar problems more efficiently.

    While I do my best to ensure the accuracy of the content, please note that results may vary depending on your environment. I highly recommend testing any configuration or method in your own setup before applying it to production.

    This blog is both a space for sharing and for learning.
    If you have any questions or thoughts, feel free to reach out via comments or email.

    Thank you for visiting.

    📧 Email: ympark.pro@gmail.com
    🔗 LinkedIn: https://www.linkedin.com/in/positive-youngmin-park/

    — Youngmin Park