Como Saber Quais Grupos do Sistema Operacional Foram Usados na Instalação do Oracle Grid Infrastructure / Database ?

Um dos pré requisitos que o Oracle Fleet Patching and Provisioning valida antes de proceder com uma aplicação de patch ou upgrade, é se os grupos de SO usados na instalação do novo Oracle Home são os mesmos do Oracle Home original.

Um exemplo da tela de instalação manual do Oracle Database 19c na etapa de seleção dos grupos de SO:

Se temos um Database 19cR11 com o grupo “dba” vinculado a todos os papéis e quisermos fazer atualização para 19cR12, a instalação do Oracle Home 19cR12 também deve ter o grupo “dba” vinculado em todos os papéis (OSDBA, OSOPER, OSKM, etc).

Se o Oracle Home de origem foi provisionado com Fleet Patching and Provisioning, é fácil obter essa informação consultando os detalhes da Working Copy:

$ rhpctl query workingcopy -workingcopy wc_lab04_db19cR12
fppserver.dibiei.com: Audit ID: 80
Working copy name: wc_lab04_db19cR12
Image name: db19cR12
Groups configured in the working copy: OSDBA=dba,OSBACKUP=dba,OSDG=dba,OSKM=dba,OSRAC=dba
Owner: oracle@ORACLERESTART_lab04
Site: ORACLERESTART_lab04
Access control: USER:oracle@ORACLERESTART_lab04
Access control: USER:grid@fppserver
Access control: ROLE:GH_WC_ADMIN
Software home path: /u01/app/oracle/product/19.12.0.0/db_1
Storage type: LOCAL
Image Type: ORACLEDBSOFTWARE
Gold image path: 
Work path: 
Additional patches compared to the image: 
Additional bug fixes that are not in the image: 
Complete: TRUE

Mas se o Oracle Home não foi provisionado com FPP, então precisamos descobrir isso através de um arquivo de configuração localizado no Oracle Home em questão.

Essa informação pode ser consultada no arquivo $ORACLE_HOME/rdbms/lib/config.c :

$ cat $ORACLE_HOME/rdbms/lib/config.c

/*  SS_DBA_GRP defines the UNIX group ID for sqldba adminstrative access.  */
/*  Refer to the Installation and User's Guide for further information.  */

/* IMPORTANT: this file needs to be in sync with
              rdbms/src/server/osds/config.c, specifically regarding the
              number of elements in the ss_dba_grp array.
 */

#if 0
/*
 * Linux x86_64 assembly code corresponding to C code below. This module
 * can be compiled both as C and ASM module, when changing code here
 * please keep both versions in sync.
 */

        .section .rodata.str1.4, "aMS",@progbits,1
        .align 4
.Ldba_string:     .string "asmdba"
.Loper_string:    .string ""
.Lasm_string:     .string "asmadmin"
.Lbkp_string:     .string "asmadmin"
.Ldgd_string:     .string "asmadmin"
.Lkmt_string:     .string "asmadmin"
.Lrac_string:     .string "asmadmin"

        .section        .rodata
        .align 8
        .globl ss_dba_grp
ss_dba_grp:
        .quad   .Ldba_string
        .quad   .Loper_string
        .quad   .Lasm_string
        .quad   .Lbkp_string
        .quad   .Ldgd_string
        .quad   .Lkmt_string
        .quad   .Lrac_string
        .type   ss_dba_grp,@object
        .size   ss_dba_grp,.-ss_dba_grp
        .section .note.GNU-stack, ""
        .end
/*
 * Assembler will not parse a file past the .end directive
 */
#endif

#define SS_DBA_GRP "asmdba"
#define SS_OPER_GRP ""
#define SS_ASM_GRP "asmadmin"
#define SS_BKP_GRP "asmadmin"
#define SS_DGD_GRP "asmadmin"
#define SS_KMT_GRP "asmadmin"
#define SS_RAC_GRP "asmadmin"

const char * const ss_dba_grp[] = 
     {SS_DBA_GRP, SS_OPER_GRP, SS_ASM_GRP,
      SS_BKP_GRP, SS_DGD_GRP, SS_KMT_GRP,
      SS_RAC_GRP};   

A parte que interessa para esta finalidade são as linhas com “#define”:

$ grep define $ORACLE_HOME/rdbms/lib/config.c
/*  SS_DBA_GRP defines the UNIX group ID for sqldba adminstrative access.  */
#define SS_DBA_GRP "asmdba"
#define SS_OPER_GRP ""
#define SS_ASM_GRP "asmadmin"
#define SS_BKP_GRP "asmadmin"
#define SS_DGD_GRP "asmadmin"
#define SS_KMT_GRP "asmadmin"
#define SS_RAC_GRP "asmadmin"

Neste caso, é um Oracle Home de um Grid Infrastructure, e o grupo “asmdba” foi vinculado ao papel DBA e “asmadmin” foi vinculado a todos os demais, exceto o OS OPER que está vazio.

No caso de precisarmos provisionar uma nova instalação do Grid ou Database em que os grupos de sistema operacional no Oracle Home de origem são diferentes dos grupos vinculados a Gold Image, então precisamos informar a associação dos grupos explicitamente no comando rhpctl add workingcopy, usando o parâmetro groups. Exemplo:

 -groups "OSDBA=dba,OSBACKUP=dba,OSDG=dba,OSKM=dba,OSRAC=dba"
rhpctl add workingcopy -workingcopy wc_exemplo -image db19cR12 -groups "OSDBA=dba,OSBACKUP=dba,OSDG=dba,OSKM=dba,OSRAC=dba"

1 thought on “Como Saber Quais Grupos do Sistema Operacional Foram Usados na Instalação do Oracle Grid Infrastructure / Database ?”

  1. Pingback: Out-Of-Place Patching is Easier in Oracle 26ai Using “-setupHomeAs” To Install new GI and DB homes – Blog do Dibiei

Leave a Comment

Scroll to Top

Discover more from Blog do Dibiei

Subscribe now to keep reading and get access to the full archive.

Continue reading