grid.png

1 INSTALAÇÃO E CONFIGURAÇÃO - AMBIENTE ORIGEM

1.1 CONFIGURAÇÕES INICIAIS

1.1.1 Criação de usuários e grupos

# groupadd -g 1001 oinstall 
# groupadd -g 1002 dbaoper 
# groupadd -g 1003 dba 
# useradd -u 101 -g oinstall -G dba,dbaoper oracle 
# groupadd -g 1004 asmadmin 
# groupadd -g 1005 asmoper 
# groupadd -g 1006 asmdba 
# usermod -g oinstall -G dba,dbaoper,asmadmin,asmdba,asmoper oracle

1.1.2 Instalação de ferramentas

# yum install net-tools rsync bc wget vim traceroute unzip mlocate telnet tuned openssh-clients policycoreutils-python-utils -y

1.1.3 Instalar profile do Tuned - Otimização de kernel

# yum install tuned-profiles-oracle -y 
# tuned-adm profile oracle 
# tuned-adm active

1.1.4 Instalar repositório EPEL

# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y

1.1.5 Instalar pré-requisitos e ferramentas adicionais

# yum install procps screen rlwrap terminator dos2unix oracle-database-preinstall-19c.x86_64 p7zip -y

1.1.6 Desabilitando selinux

# sed -i 's/enforcing/permissive/g' /etc/selinux/config ; setenforce 0

1.1.7 Liberando Firewall para porta do Oracle

# firewall-cmd --permanent --zone=public --list-ports 
# firewall-cmd --permanent --zone=public --add-port=1521/tcp 
# firewall-cmd --reload 
# firewall-cmd --permanent --zone=public --list-ports

1.1.8 Alterando hostname

# hostnamectl set-hostname dbfocus02.localdomain

1.1.9 * Uso na OCI

/etc/oci-hostname.conf PRESERVE_HOSTINFO=3

1.1.10 Acertar arquivo hosts

# hostnamectl set-hostname oracle-dg02.localdomain
# echo "192.168.3.48 oracle-dg02.localdomain dg02" >> /etc/hosts

1.2 CONFIGURANDO PARTIÇÃO /U01

1.2.1 Listar discos e partições

# fdisk -l | grep sd
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
/dev/sda1  *       2048   2099199   2097152   1G 83 Linux
/dev/sda2       2099200 104857599 102758400  49G 8e Linux LVM
Disk /dev/sde: 50 GiB, 53687091200 bytes, 104857600 sectors
Disk /dev/sdf: 2 GiB, 2147483648 bytes, 4194304 sectors
Disk /dev/sdg: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdb: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk /dev/sdc: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk /dev/sdd: 12 GiB, 12884901888 bytes, 25165824 sectors
Disk /dev/sdh: 20 GiB, 21474836480 bytes, 41943040 sectors
- Pegar o disco de 50G que não tenha partição

1.2.2 Criando o Physical Volume

# pvcreate /dev/sde

1.2.3 Criando Volume Group

# vgcreate VG00 /dev/sde

1.2.4 Criando o Logical Volume

# lvcreate -l +100%free -n LVU01 VG00

1.2.5 Formatando o Logical Volume

# mkfs.xfs /dev/mapper/VG00-LVU01

1.2.6 Criando diretório do ponto de montagem

# mkdir /u01

1.2.7 Pegando UUID da partição

# blkid | grep LVU01
/dev/mapper/VG00-LVU01: UUID="3d7b5f0f-5db3-49cf-9ed1-e10e39f602bd" BLOCK_SIZE="512" TYPE="xfs"

1.2.8 Configurando montagem da partição automática

# vim /etc/fstab
Copiar linha do /boot (yy e depois p) e trocar o UUID e ponto de montagem
UUID=3d7b5f0f-5db3-49cf-9ed1-e10e39f602bd /u01 xfs defaults 0 0

1.2.9 Montando partição

# mount -a
# systemctl daemon-reload

1.2.10 Verificando partição montada

# df -h

1.3 PERMISSÕES PARA O USUÁRIO ORACLE NAS PARTIÇÕES

# chown -R oracle:oinstall /u01

1.4 MOVENDO INSTALADORES PARA A HOME DO ORACLE

# mv /root/*.zip /home/oracle

1.5 AJUSTANDO PERMISSÕES NOS ARQUIVOS ZIP

# chown oracle:oinstall /home/oracle/*.zip

1.6 ALTERANDO SENHA DO ORACLE (COLOCAR Dbafocus2024)

# passwd oracle

1.7 ACERTANDO BASH_PROFILE

# sudo su - oracle
$ vim /home/oracle/.bash_profile

# Alias
alias mv='mv -i'
alias cp='cp -i'
alias rm='rm -i'
alias start_oratop='$ORACLE_HOME/suptools/oratop/oratop -f -i3 / AS SYSDBA'
alias start_oratop_novo='$ORACLE_HOME/suptools/oratop/oratop_19.21 -f -i3 / AS SYSDBA'
# Oracle Variaveis 19c
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19c/db_1
export GRID_HOME=/u01/app/19c/grid
export CRS_HOME=$GRID_HOME
export ORACLE_SID=PROD
export ORACLE_UNQNAME=PROD_A
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export PATH

1.8 CARREGANDO BASH_PROFILE

$ source /home/oracle/.bash_profile

1.9 CRIAR OS DIRETÓRIOS HOME

$ mkdir -p $GRID_HOME
$ mkdir -p $ORACLE_HOME

1.10 INSTALAÇÃO DO GRID

1.10.1 Descompactar o zip

$ unzip -q -d $GRID_HOME LINUX.X64_193000_grid_home.zip

1.10.2 Renomear o diretório Opatch

$ mv $GRID_HOME/OPatch $GRID_HOME/OPatch_old

1.10.3 Descompactar o OPatch atual

$ unzip -q -d $GRID_HOME Opatch_p6880880_190000_Linux-x86-64-12.2.0.1.42-Abr2024.zip

1.10.4 Verificar suporte para kernel atual

$ uname -r
5.4.17-2136.307.3.1.el8uek.x86_64

1.10.5 Matriz de certificação do ASM Filter Driver

ACFS and AFD Support On OS Platforms (Certification Matrix). (Doc ID 1369107.1)

https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=292869667575852&id=1369107.1&_adf.ctrl-state=kcxee5tqi_52#aref_section312

1.10.6 Descompactar o patch 19.21

$ unzip -q p35642822_190000_19.21.0.0.0_Grid_Linux-x86-64.zip

1.10.7 Instalar componentes e marcar os discos para ASM Filter

1.10.8 Logar com usuário root (sem o - )

$ su

1.10.9 Instalar cvudisk

# rpm -ivh $GRID_HOME/cv/rpm/cvuqdisk-1.0.10-1.rpm

O RPM cvuqdisk é um pacote de software que fornece informações sobre os discos do sistema para o Cluster Verification Utility (CVU) da Oracle.

1.10.10 Ajustar discos para o ASM Filter

Confirmar discos que serão usados no DiskGroup DATA - Validar o tamanho dos discos e pegar os dispositivos correspondentes

** Pegar os discos de 15G **
# fdisk -l | grep sd
Disk /dev/sdh: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdf: 2 GiB, 2147483648 bytes, 4194304 sectors
Disk /dev/sdg: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdb: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk /dev/sdd: 12 GiB, 12884901888 bytes, 25165824 sectors
Disk /dev/sdc: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
/dev/sda1  *       2048   2099199   2097152   1G 83 Linux
/dev/sda2       2099200 104857599 102758400  49G 8e Linux LVM
Disk /dev/sde: 50 GiB, 53687091200 bytes, 104857600 sectors

##### CASO NECESSÁRIO - FORMATAR DISCOS
dd if=/dev/zero of=/dev/sdb bs=1M count=100
dd if=/dev/zero of=/dev/sdc bs=1M count=100

1.10.11 Alterar permissão dos discos

# chown oracle:asmadmin /dev/sdb /dev/sdc

1.10.12 Marcar discos para o ASM

-- Crie o arquivo oracleafd.conf com a string do disco e quantidade que será utilizada
# echo -e "afd_diskstring='/dev/sd*'\nafd_dev_count=2" > /etc/oracleafd.conf

# export ORACLE_HOME=$GRID_HOME
# $ORACLE_HOME/bin/asmcmd afd_refresh
# $ORACLE_HOME/bin/asmcmd afd_scan
# $ORACLE_HOME/bin/asmcmd afd_state
# $ORACLE_HOME/bin/asmcmd afd_label DATA01 /dev/sdb --init
# $ORACLE_HOME/bin/asmcmd afd_label DATA02 /dev/sdc --init
# $ORACLE_HOME/bin/asmcmd afd_lslbl
# rm -rf /u01/app/oracle/diag/
# exit

1.10.13 Copiar o arquivo de resposta para a home do oracle

$ cp $GRID_HOME/install/response/gridsetup.rsp /home/oracle

Adicionar as linhas personalizadas necessárias no arquivo de resposta - OBS: Parâmetros que precisam ser personalizados estão em vermelho. Porque podem ter discos diferentes e senha também. Parâmetros que precisam ser mudados se estiver seguindo outro padrão de diretórios e grupos estão em azul.

$ cat >> /home/oracle/gridsetup.rsp << EOF
#### CONFIG PERSONALIZADA
INVENTORY_LOCATION=/u01/app/oraInventory
oracle.install.option=HA_CONFIG
ORACLE_BASE=/u01/app/oracle
oracle.install.asm.OSDBA=asmdba
oracle.install.asm.OSOPER=asmoper
oracle.install.asm.OSASM=asmadmin
oracle.install.crs.config.scanType=LOCAL_SCAN
oracle.install.crs.config.ClusterConfiguration=STANDALONE
oracle.install.crs.config.configureAsExtendedCluster=false
oracle.install.crs.config.gpnp.configureGNS=false
oracle.install.crs.config.autoConfigureClusterNodeVIP=false
oracle.install.crs.config.gpnp.gnsOption=CREATE_NEW_GNS
oracle.install.crs.config.clusterNodes=$(hostname):
oracle.install.crs.configureGIMR=false
oracle.install.asm.configureGIMRDataDG=false
oracle.install.crs.config.useIPMI=false
oracle.install.asm.diskGroup.name=DATA
oracle.install.asm.diskGroup.redundancy=EXTERNAL
oracle.install.asm.diskGroup.AUSize=4
oracle.install.asm.diskGroup.diskDiscoveryString=/dev/sd*
oracle.install.asm.gimrDG.AUSize=1
oracle.install.asm.configureAFD=true
oracle.install.crs.configureRHPS=false
oracle.install.crs.config.ignoreDownNodes=false
oracle.install.config.managementOption=NONE
oracle.install.config.omsPort=0
oracle.install.crs.rootconfig.executeRootScript=false
### Parametros que precisam ser editados
oracle.install.asm.diskGroup.disksWithFailureGroupNames=/dev/sdb,,/dev/sdc, ##alterar
oracle.install.asm.diskGroup.disks=/dev/sdb,/dev/sdc ## alterar
oracle.install.asm.SYSASMPassword=password ## alterar
oracle.install.asm.monitorPassword=password ## alterar
EOF

1.10.14 Acessar o diretório de instalação

$ cd $GRID_HOME

1.10.15 Instalação em modo gráfico - APENAS EXEMPLO

Pasted image 20250831135903.png

Pasted image 20250831135915.png

Pasted image 20250831135923.png

Pasted image 20250831135935.png

Pasted image 20250831135942.png

Pasted image 20250831135951.png

Pasted image 20250831135959.png

Pasted image 20250831140008.png

Pasted image 20250831140018.png

Pasted image 20250831140027.png

Pasted image 20250831140034.png

Pasted image 20250831140044.png

Pasted image 20250831140051.png

1.10.16 Instalação em modo texto

$ ./gridSetup.sh -silent -responseFile /home/oracle/gridsetup.rsp -applyRU /home/oracle/35642822

1.10.17 Executar scripts com usuário root

# /u01/app/oraInventory/orainstRoot.sh
# /u01/app/19c/grid/root.sh

1.10.18 Finalizar a configuração Grid com o usuário ORACLE

$ /u01/app/19c/grid/gridSetup.sh -executeConfigTools -responseFile /home/oracle/gridsetup.rsp -silent

1.11 Ajustando dependências do ASM - Caso estiver usando “scsi”

1.11.1 Logar com usuário root

[oracle@dbafocus ~]$ su -

1.11.2 Realizar um backup do script original

[root@dbafocus ~]# cp -p /etc/init.d/afd /root/afd.org-backup

1.11.3 Alterar linhas no script

# sed -i '/\# Required-Start/ s~\:.*$~\: \$network \$syslog \$remote_fs~' /etc/init.d/afd
# sed -i '/\# Should-Start/ s~\:.*$~\: open_iscsi~' /etc/init.d/afd
# sed -i '/\# Required-Stop/ s~\:.*$~\: \$network \$syslog \$remote_fs~' /etc/init.d/afd
# sed -i '/\# Should-Stop/ s~\:.*$~\: open_iscsi ohasd~' /etc/init.d/afd

Atividade acima é realizada para alterar a ordem de início dos serviços, evitando que o ASM suba primeiro que a rede e não encontre os discos iscsi prevenindo o erro de diskgroup not found.

1.11.4 Validar as diferenças implementadas

# diff /root/afd.org-backup /etc/init.d/afd

1.12 VOLTAR PARA A HOME DO ORACLE

$ cd

1.13 CRIAR LINKS SIMBÓLICOS DOS ALERT.LOGS

1.13.1 Alert.log do ASM

$ ln -s /u01/app/oracle/diag/asm/+asm/+ASM/trace/alert_+ASM.log /home/oracle

1.13.2 Alert.log do CRS

$ ln -s /u01/app/oracle/diag/crs/oracle-dg01/crs/trace/alert.log /home/oracle

1.14 Ajustar Glogin.sql

$ vim $GRID_HOME/sqlplus/admin/glogin.sql

SET PAGESIZE 1000
SET LINESIZE 220
SET SERVEROUTPUT ON SIZE UNLIMITED FORMAT WRAPPED
DEFINE _EDITOR = /usr/bin/vim
COLUMN segment_name FORMAT A30 WORD_WRAP
COLUMN object_name FORMAT A30 WORD_WRAP
SET TIMING ON
SET TIME ON
SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER > "
COL DISK_GROUP_NAME FORMAT A30
COL DISK_FILE_PATH FORMAT A30
COL DISK_FILE_NAME FORMAT A30
COL DISK_FILE_FAIL_GROUP FORMAT A30
COL DATAFILE FORMAT A70;
COL USERNAME FORMAT A10;
COL MACHINE FORMAT A20;
COL OSUSER FORMAT A15;
COL SPID FORMAT A8;
COL PROGRAM FORMAT A15;
col job_name format a20;
Col STATE format a10;
col start_date format a40;
col NEXT_RUN_DATE format a40;

1.15 REMOVER SENHAS DO ARQUIVO DE RESPOSTA

$ sed -i '/SYSASMPassword/d' /home/oracle/gridsetup.rsp
$ sed -i '/monitorPassword/d' /home/oracle/gridsetup.rsp

1.16 CRIAR O DISK GROUP RECO

1.16.1 Carregar as variáveis de ambiente

$ . oraenv
+ASM

1.16.2 Logar com usuário root (sem o - )

# su

Confirmar discos que serão usados no Disk group RECO - Validar o tamanho dos discos e pegar os dispositivos correspondentes

** Pegar o disco de 12G **
# fdisk -l | grep sd
Disk /dev/sdh: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdf: 2 GiB, 2147483648 bytes, 4194304 sectors
Disk /dev/sdg: 20 GiB, 21474836480 bytes, 41943040 sectors
Disk /dev/sdb: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk /dev/sdd: 12 GiB, 12884901888 bytes, 25165824 sectors
Disk /dev/sdc: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
/dev/sda1  *       2048   2099199   2097152   1G 83 Linux
/dev/sda2       2099200 104857599 102758400  49G 8e Linux LVM
Disk /dev/sde: 50 GiB, 53687091200 bytes, 104857600 sectors


##### CASO NECESSÁRIO - FORMATAR DISCOS
dd if=/dev/zero of=/dev/sdd bs=1M count=100

1.16.3 Alterar permissão dos discos

# chown oracle:asmadmin /dev/sdd

1.16.4 Marcar discos para o ASM

# export ORACLE_HOME=$GRID_HOME
# $ORACLE_HOME/bin/asmcmd afd_label RECO01 /dev/sdd
# $ORACLE_HOME/bin/asmcmd afd_lslbl
# exit

1.16.5 Criar discos no ASM

$ rlwrap sqlplus / as sysasm
SELECT NAME, TOTAL_MB, FREE_MB, USABLE_FILE_MB FROM V$ASM_DISKGROUP;
CREATE DISKGROUP RECO EXTERNAL REDUNDANCY DISK 'AFD:RECO01';
SELECT NAME, TOTAL_MB, FREE_MB, USABLE_FILE_MB FROM V$ASM_DISKGROUP;

1.17 INSTALAR O ORACLE

1.17.1 Regarregar o bash_profile

$ source /home/oracle/.bash_profile

1.17.2 Descompactar o zip

$ unzip -q -d $ORACLE_HOME LINUX.X64_193000_db_home.zip

1.17.3 Renomear o diretório Opatch

$ mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch_old

1.17.4 Descompactar o OPatch atual

$ unzip -q -d $ORACLE_HOME Opatch_p6880880_190000_Linux-x86-64-12.2.0.1.42-Abr2024.zip

1.17.5 Copiar o arquivo de resposta para a home do oracle

$ cp $ORACLE_HOME/install/response/db_install.rsp /home/oracle

1.17.6 Adicionar linhas personalizadas no arquivo de resposta

$ cat >> /home/oracle/db_install.rsp << EOF
#### CONFIG PERSONALIZADA
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19c/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=dba
oracle.install.db.OSBACKUPDBA_GROUP=dba
oracle.install.db.OSDGDBA_GROUP=dba
oracle.install.db.OSKMDBA_GROUP=dba
oracle.install.db.OSRACDBA_GROUP=dba
EOF

1.17.7 Acessar o diretório home do Oracle

$ cd $ORACLE_HOME

1.17.8 Instalar o ORACLE

$ export CV_ASSUME_DISTID=OEL7.8
$ ./runInstaller -silent -responseFile /home/oracle/db_install.rsp -applyRU /home/oracle/35642822

1.17.9 Executar script de root

# /u01/app/oracle/product/19c/db_1/root.sh

1.17.10 Voltar para a home do Oracle

$ cd

1.17.11 Ajustar Glogin.sql

$ vim $ORACLE_HOME/sqlplus/admin/glogin.sql
Copiar o conteúdo abaixo substituindo o conteúdo atual do arquivo:
SET PAGESIZE 1000
SET LINESIZE 220
SET SERVEROUTPUT ON SIZE UNLIMITED FORMAT WRAPPED
DEFINE _EDITOR = /usr/bin/vim
COLUMN segment_name FORMAT A30 WORD_WRAP
COLUMN object_name FORMAT A30 WORD_WRAP
SET TIMING ON
SET TIME ON
SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER > "
COL DISK_GROUP_NAME FORMAT A30
COL DISK_FILE_PATH FORMAT A30
COL DISK_FILE_NAME FORMAT A30
COL DISK_FILE_FAIL_GROUP FORMAT A30
COL DATAFILE FORMAT A70;
COL USERNAME FORMAT A10;
COL MACHINE FORMAT A20;
COL OSUSER FORMAT A15;
COL SPID FORMAT A8;
COL PROGRAM FORMAT A15;
col job_name format a20;
Col STATE format a10;
col start_date format a40;
col NEXT_RUN_DATE format a40;

1.17.12 Criar instância - Alterar parâmetros em destaque

1.17.12.1 Criando a instância de Produção

$ time dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbName PROD \
-sid PROD \
-sysPassword password \
-systemPassword password \
-storageType ASM \
-recoveryAreaDestination +RECO \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbAdminPassword password \
-pdbName ORCL \
-characterSet WE8MSWIN1252 \
-automaticMemoryManagement false \
-redoLogFileSize 256 \
-useOMF true \
-datafileDestination +DATA \
-initParams 'db_unique_name=PROD_A,sga_target=1600MB,pga_aggregate_target=767MB,db_recovery_file_dest_size=11400MB'

1.17.13 Criando link simbólico do alert.log

$ ln -s /u01/app/oracle/diag/rdbms/prod_a/PROD/trace/alert_PROD.log /home/oracle

1.17.14 Colocar instância de produção em archivelog

$ . oraenv
PROD
$ rlwrap sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
SQL> SELECT LOG_MODE FROM V$DATABASE;

1.17.15 Realizar um backup full

$ rlwrap rman target /
RMAN> BACKUP DATABASE;