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"
Pingback: Out-Of-Place Patching is Easier in Oracle 26ai Using “-setupHomeAs” To Install new GI and DB homes – Blog do Dibiei