,
  • Grid Gold Image Creation and Deployment Guide

    OS Environment: Oracle Linux 9.6 (64bit)

    DB Environment: Oracle Database 19.28.0.0


    Previously, I conducted a test of creating a DB engine as a gold image and cloning it. Reference: Cloning a DB Engine Using Oracle 19c Gold Image ( https://positivemh.tistory.com/1149 )

    This article explains how to create and deploy a Grid Gold Image on a server where 19c Grid (Restart) is installed.

    What is a Gold Image? Simply put, it’s a copy of the Oracle engine. You can also bundle the Oracle engine path using the tar command to clone or move it elsewhere. It works for a patched engine as well, and if the server OS is the same, it can be moved to another server. By creating a gold image of a clean Oracle installation, it’s suitable for deploying standardized installation images across multiple servers. It’s easy to manage and deploy, but custom settings (such as network/admin/.ora files and dbs/.ora files) or log files are not included, so these parts need to be managed separately. For reference, it is said that the gold images for Restart and RAC must be created separately because the components that make up the engine are different.


    Usage

    1. Check the existing Grid patch status

    $ cd $GRID_HOME/OPatch
    $ ./opatch lspatches -oh $GRID_HOME
    38124772;TOMCAT RELEASE UPDATE 19.0.0.0.0 (38124772)
    37962946;OCW RELEASE UPDATE 19.28.0.0.0 (37962946)
    37962938;ACFS RELEASE UPDATE 19.28.0.0.0 (37962938)
    37960098;Database Release Update : 19.28.0.0.250715 (37960098)
    36758186;DBWLM RELEASE UPDATE 19.0.0.0.0 (36758186)
    OPatch succeeded.

    It’s version 19.28.

    2. Stop all Oracle-related processes

    # crsctl stop crs

    3. Create Gold Image Create a directory to save the gold image:

    $ mkdir -p /home/oracle/19c_img

    Create the gold image:

    $ cd $GRID_HOME
    $ ./gridSetup.sh -createGoldImage \
       -destinationLocation /home/oracle/19c_img \
       -silent \
       -name gi_19_28_restart.zip
     
    Successfully Setup Software.
    Gold Image location: /home/oracle/19c_img/gi_19_28_restart.zip

    Check the created file:

    $ ls -al /home/oracle/19c_img/
    total 5974040
    drwxr-xr-x. 2 oracle oinstall         34 Dec 21 17:02 .
    drwx------. 7 oracle oinstall       4096 Dec 21 17:01 ..
    -rw-r--r--. 1 oracle oinstall 6117412183 Dec 21 17:02 gi_19_28_restart.zip

    It was created normally.

    4. Deploy Gold Image Copy the gold image to the new server:

    $ cd /home/oracle/19c_img
    $ scp gi_19_28_restart.zip 192.168.137.60:/app/media/

    Grant permissions for the gold image on the new server:

    # chown oracle:dba /app/media/gi_19_28_restart.zip

    (Proceed after applying all prerequisites before installing Grid)

    Create the engine path and unzip on the new server:

    $ mkdir -p $GRID_HOME
    $ cd $GRID_HOME
    $ unzip -q /app/media/gi_19_28_restart.zip

    Run gridSetup in silent mode:

    $ cd $GRID_HOME
    $ ./gridSetup.sh -silent \
    INVENTORY_LOCATION=/app/oraInventory \
    SELECTED_LANGUAGES=en \
    ORACLE_BASE=/app/oracle \
    oracle.install.option=HA_CONFIG \
    oracle.install.asm.OSDBA=dba \
    oracle.install.asm.OSOPER=dba \
    oracle.install.asm.OSASM=dba \
    oracle.install.crs.config.autoConfigureClusterNodeVIP=false \
    oracle.install.asm.diskGroup.name=DATA \
    oracle.install.asm.diskGroup.redundancy=EXTERNAL \
    oracle.install.asm.diskGroup.diskDiscoveryString=ORCL:* \
    oracle.install.asm.diskGroup.disks=ORCL:DATA \
    oracle.install.asm.SYSASMPassword=oracle \
    oracle.install.asm.monitorPassword=oracle \
    -ignorePrereqFailure
     
    #logs
    Launching Oracle Grid Infrastructure Setup Wizard...
     
    [WARNING] [INS-30011] The SYS password entered does not conform to the Oracle recommended standards.
       CAUSE: Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
       ACTION: Provide a password that conforms to the Oracle recommended standards.
    [WARNING] [INS-30011] The ASMSNMP password entered does not conform to the Oracle recommended standards.
       CAUSE: Oracle recommends that the password entered should be at least 8 characters in length, contain at least 1 uppercase character, 1 lower case character and 1 digit [0-9].
       ACTION: Provide a password that conforms to the Oracle recommended standards.
    [WARNING] [INS-41808] Possible invalid choice for OSASM Group.
       CAUSE: The name of the group you selected for the OSASM group is commonly used to grant other system privileges (For example: asmdba, asmoper, dba, oper).
       ACTION: Oracle recommends that you designate asmadmin as the OSASM group.
    [WARNING] [INS-41809] Possible invalid choice for OSDBA Group.
       CAUSE: The group name you selected as the OSDBA for ASM group is commonly used for Oracle Database administrator privileges.
       ACTION: Oracle recommends that you designate asmdba as the OSDBA for ASM group, and that the group should not be the same group as an Oracle Database OSDBA group.
    [WARNING] [INS-41810] Possible invalid choice for OSOPER Group.
       CAUSE: The group name you selected as the OSOPER for ASM group is commonly used for Oracle Database administrator privileges.
       ACTION: Oracle recommends that you designate asmoper as the OSOPER for ASM group, and that the group should not be the same group as an Oracle Database OSOPER group.
    [WARNING] [INS-41813] OSDBA for ASM, OSOPER for ASM, and OSASM are the same OS group.
       CAUSE: The group you selected for granting the OSDBA for ASM group for database access, and the OSOPER for ASM group for startup and shutdown of Oracle ASM, is the same group as the OSASM group, whose members have SYSASM privileges on Oracle ASM.
       ACTION: Choose different groups as the OSASM, OSDBA for ASM, and OSOPER for ASM groups.
    [WARNING] [INS-13014] Target environment does not meet some optional requirements.
       CAUSE: Some of the optional prerequisites are not met. See logs for details. gridSetupActions2025-12-21_05-28-32PM.log
       ACTION: Identify the list of failed prerequisite checks from the log: gridSetupActions2025-12-21_05-28-32PM.log. Then either from the log file or from installation manual find the appropriate configuration to meet the prerequisites and fix it manually.
    The response file for this session can be found at:
     /app/grid/product/19c/install/response/grid_2025-12-21_05-28-32PM.rsp
     
    You can find the log of this install session at:
     /tmp/GridSetupActions2025-12-21_05-28-32PM/gridSetupActions2025-12-21_05-28-32PM.log
     
     
    As a root user, execute the following script(s):
            1. /app/oraInventory/orainstRoot.sh
            2. /app/grid/product/19c/root.sh
     
    Execute /app/grid/product/19c/root.sh on the following nodes:
    [oel9reco]
     
     
    Successfully Setup Software with warning(s).
    As install user, execute the following command to complete the configuration.
            /app/grid/product/19c/gridSetup.sh -executeConfigTools -responseFile /app/grid/product/19c/install/response/grid_2025-12-21_05-28-32PM.rsp [-silent]
    Note: The required passwords need to be included in the response file.
     
     
    Moved the install session logs to:
     /app/oraInventory/logs/GridSetupActions2025-12-21_05-28-32PM

    Execute scripts as root user:

    # /app/oraInventory/orainstRoot.sh
    Changing permissions of /app/oraInventory.
    Adding read,write permissions for group.
    Removing read,write,execute permissions for world.
     
    Changing groupname of /app/oraInventory to oinstall.
    The execution of the script is complete.
     
    # /app/grid/product/19c/root.sh
    Check /app/grid/product/19c/install/root_oel9reco_2025-12-21_17-34-44-259730534.log for the output of root script

    Input password section in the rsp file:

    $ vi /app/grid/product/19c/install/response/grid_2025-12-21_05-28-32PM.rsp
    ..
    oracle.install.asm.SYSASMPassword=oracle
    ..
    oracle.install.asm.monitorPassword=oracle
    

    Re-execute gridSetup (use the rsp file generated at the end of the first gridSetup execution):

    # su - oracle
    $ /app/grid/product/19c/gridSetup.sh -silent -executeConfigTools -responseFile /app/grid/product/19c/install/response/grid_2025-12-21_05-28-32PM.rsp
    Launching Oracle Grid Infrastructure Setup Wizard...
     
    You can find the logs of this session at:
    /app/oraInventory/logs/GridSetupActions2025-12-21_05-38-51PM
     
    Successfully Configured Software.

    Completed.

    5. Check Grid status

    $ crsctl stat res -t
    --------------------------------------------------------------------------------
    Name           Target  State        Server                   State details
    --------------------------------------------------------------------------------
    Local Resources
    --------------------------------------------------------------------------------
    ora.DATA.dg
                   ONLINE  ONLINE       oel9reco                 STABLE
    ora.LISTENER.lsnr
                   ONLINE  OFFLINE      oel9reco                 STABLE
    ora.asm
                   ONLINE  ONLINE       oel9reco                 Started,STABLE
    ora.ons
                   OFFLINE OFFLINE      oel9reco                 STABLE
    --------------------------------------------------------------------------------
    Cluster Resources
    --------------------------------------------------------------------------------
    ora.cssd
          1        ONLINE  ONLINE       oel9reco                 STABLE
    ora.diskmon
          1        OFFLINE OFFLINE                               STABLE
    ora.evmd
          1        ONLINE  ONLINE       oel9reco                 STABLE
    --------------------------------------------------------------------------------

    Grid was installed well.

    6. Check Grid patch status

    $ cd $GRID_HOME/OPatch
    $ ./opatch lspatches -oh $GRID_HOME
    38124772;TOMCAT RELEASE UPDATE 19.0.0.0.0 (38124772)
    37962946;OCW RELEASE UPDATE 19.28.0.0.0 (37962946)
    37962938;ACFS RELEASE UPDATE 19.28.0.0.0 (37962938)
    37960098;Database Release Update : 19.28.0.0.250715 (37960098)
    36758186;DBWLM RELEASE UPDATE 19.0.0.0.0 (36758186)
     
    OPatch succeeded.

    It was well installed with version 19.28.

    Afterward, mount the disk group, then proceed with the procedures such as DB engine installation and DB configuration.

  • 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