Você está na página 1de 198

Oracle RAC 19c (a.k.a. 12.2.0.

3)
Em Oracle Enterprise Linux 7.9
Inclui CDB Architecture

Ricardo Portilho Proni


ricardo@nervinformatica.com.br

Esta obra está licenciada sob a licença


Creative Commons Atribuição-SemDerivados 3.0 Brasil.
Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/.
Comandos no Treinamento
Comando com o usuário root:
# ls -lh

Comando com um usuário oracle:


$ ls -lh

Adicionar texto a um arquivo:


$ vi initORCL.ora
...
db_cache_size=500M
...

Comando no Oracle:
SQL> SELECT STATUS FROM V$INSTANCE;

Algo deve ser alterado de acordo com sua máquina:


Hostname: nerv01.localdomain

Quando algo dá errado propositalmente:


O que aconteceu?

Coloque todas as senhas (root, oracle, SYS, SYSTEM) como Nerv2021.


2
Agenda

1o dia

Instalação


2o dia

Troubleshooting

Administração


3o dia

Load Balance / Failover

Add Node

Migração de Storage

ACFS

3 3
Por que usar o RAC?

Disponibilidade

Escalabilidade

Custo Total de Propriedade (TCO)

4 4
Por que não usar o RAC?

Custo de Equipamentos

Custo de Licenças

Custo de Conhecimento

Complexidade

Escalabilidade

5 5
Arquitetura

6 6
Oracle RAC x Single Instance

1 Database x N Instances
• + Background Processes
• + daemons
• OCR
• Voting Disk
• VIPs e SCAN

7 7
Lab 1.1: Instalação OEL 7

8
Lab 1.2: Instalação OEL 7

9
Lab 1.3: Instalação OEL 7

10
Lab 1.4: Instalação OEL 7

11
Lab 1.5: Instalação OEL 7

12
Lab 1.6: Instalação OEL 7

13
Lab 1.7: Instalação OEL 7

14
Lab 1.8: Instalação OEL 7

15
Lab 1.9: Instalação OEL 7

16
Lab 1.10: Instalação OEL 7

17
Lab 1.11: Instalação OEL 7

18
Lab 1.12: Instalação OEL 7

19
Lab 1.13: Instalação OEL 7

20
Lab 1.14: Instalação OEL 7

21
Lab 1.15: Instalação OEL 7

22
Lab 1.16: Instalação OEL 7

23
Lab 1.17: Instalação OEL 7

24
Lab 1.18: Instalação OEL 7

25
Lab 1.19: Instalação OEL 7

26
Lab 1.20: Instalação OEL 7

27
Lab 1.21: Instalação OEL 7

28
Lab 1.22: Instalação OEL 7

29
Lab 1.23: Instalação OEL 7

30
Lab 1.24: Instalação OEL 7

31
Lab 1.25: Instalação OEL 7

32
Lab 1.26: Instalação OEL 7

33
Lab 1.27: Instalação OEL 7

34
Lab 1.28: Instalação OEL 7

35
Lab 1.29: Instalação OEL 7

36
Lab 1.30: Instalação OEL 7

37
Lab 1.31: Instalação OEL 7

38
Lab 1.32: Instalação OEL 7

39
Lab 1.33: Instalação OEL 7

40
Lab 1.34: Instalação OEL 7

41
Lab 1.35: Instalação OEL 7

42
Lab 1.36: Instalação OEL 7

43
Lab 1.37: Instalação OEL 7

44
Lab 1.38: Instalação OEL 7

45
Lab 1.39: Instalação OEL 7

46
Lab 1.40: Instalação OEL 7

47
Lab 1.41: Instalação OEL 7

48
Lab 1.42: Instalação OEL 7

49
Lab 1.43: Instalação OEL 7

50
Lab 1.44: Instalação OEL 7

51
Lab 1.45: Instalação OEL 7

52
Lab 1.46: Instalação OEL 7

53
Lab 1.47: Instalação OEL 7

54
Lab 2.1: Configuração OEL 7
Nas máquinas nerv01 e nerv02, atualize o sistema operacional e execute a instalação dos
pré-requisitos.
# yum -y update
# yum -y install oracle-database-preinstall-19c.x86_64
# yum -y install unzip wget iscsi-initiator-utils java-1.8.0-openjdk screen gcc

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


# yum -y update
# yum -y install rlwrap

$ rlwrap sqlplus / AS SYSDBA


$ rlwrap rman TARGET /

55 55
Lab 2.2: Configuração OEL 7
Nas máquinas nerv01 e nerv02, remova o DNS 8.8.8.8 da placa de rede Pública.
# nmtui

56 56
Lab 2.3: Configuração OEL 7

57
Lab 2.4: Configuração OEL 7

58 58
Lab 2.5: Configuração OEL 7
Nas máquinas nerv01 e nerv02, ACRESCENTAR AO FINAL do arquivo /etc/hosts:
# Public
192.168.0.101 nerv01.localdomain nerv01
192.168.0.102 nerv02.localdomain nerv02
# Private
192.168.1.101 nerv01-priv.localdomain nerv01-priv
192.168.1.102 nerv02-priv.localdomain nerv02-priv
# Virtual
192.168.0.111 nerv01-vip.localdomain nerv01-vip
192.168.0.112 nerv02-vip.localdomain nerv02-vip

Nas máquinas nerv01 e nerv02, executar os comandos abaixo.


# groupadd asmadmin
# groupadd asmdba
# groupadd asmoper
# usermod -g oinstall -G dba,oper,asmadmin,asmdba,asmoper oracle
# mkdir -p /u01/app/oracle
# mkdir -p /u01/app/19.3.0.0/grid
# chown -R oracle:oinstall /u01
# chmod -R 755 /u01

59 59
Lab 2.6: Configuração OEL 7
Nas máquinas nerv01 e nerv02, desabilite o firewall, o avahi e o chronyd.
# systemctl disable firewalld
# systemctl disable avahi-daemon
# systemctl enable chronyd

Nas máquinas nerv01 e nerv02, altere as seguintes linhas no arquivo /etc/chrony.conf.


...
# server 0.rhel.pool.ntp.org iburst
# server 1.rhel.pool.ntp.org iburst
# server 2.rhel.pool.ntp.org iburst
# server 3.rhel.pool.ntp.org iburst
server 192.168.0.201 iburst
...

Nas máquinas nerv01 e nerv02, altere o SELinux para o modo permissive.


# vi /etc/selinux/config
...
SELINUX=permissive
...

60
Lab 2.7: Configuração OEL 7
Nas máquinas nerv01 e nerv02 , com o usuário oracle, ACRESCENTAR NO FINAL do arquivo
/home/oracle/.bash_profile as linhas abaixo.
export ORACLE_HOSTNAME=nerv01.localdomain
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0.0/db_1
export GRID_HOME=/u01/app/19.3.0.0/grid
export CRS_HOME=$GRID_HOME
export ORACLE_UNQNAME=ORCL
export ORACLE_SID=ORCL1
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/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
ulimit -Sn 1024
ulimit -Hn 65536
ulimit -Su 2047
ulimit -Hu 16384
ulimit -Ss 10240
ulimit -Hs 32768

Reinicie as máquinas nerv01 e nerv02 para validar todas as configurações.


# reboot

61
Opções de Shared Storage

62
Lab 3.1: Configuração Discos
Nas máquinas nerv01 e nerv02, ative o pacote iSCSI Initiator.
# systemctl enable iscsid
# systemctl start iscsid

Nas máquinas nerv01 e nerv02, verifique os Discos exportados no Storage.


# iscsiadm -m discovery -t sendtargets -p 192.168.0.201 -l

Nas máquinas nerv01 e nerv02 verifique se os discos foram configurados localmente.


# fdisk -l | grep sd
# chown oracle:asmadmin /dev/sdb

63 63
Lab 3.2: Configuração Discos
Na máquina nerv01, prepare a instalação.
$ cp LINUX.X64_193000_grid_home.zip $GRID_HOME
$ cd $GRID_HOME
$ unzip -q LINUX.X64_193000_grid_home.zip
$ rm LINUX.X64_193000_grid_home.zip
$ su

# rpm -ivh /u01/app/19.3.0.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm


# scp /u01/app/19.3.0.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm nerv02:/root/
# ssh -t root@nerv02 'rpm -ivh /root/cvuqdisk-1.0.10-1.rpm'

Na máquina nerv01, configure o disco com o AFD (ASM Filter Driver).


# 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 CONFIG01 /dev/sdb --init
# $ORACLE_HOME/bin/asmcmd afd_lslbl
# rm -rf /u01/app/oracle/diag/
# exit

64
Lab 4.1: Instalação Grid Infrastructure
Na máquina nerv01, com o usuário oracle, inicie a instalação do Grid Infrastructure.
$ cd $GRID_HOME
$ ./gridSetup.sh

65
Lab 4.2: Instalação Grid Infrastructure

66
Lab 4.3: Instalação Grid Infrastructure

67
Lab 4.4: Instalação Grid Infrastructure

68
Lab 4.5: Instalação Grid Infrastructure

69
Lab 4.6: Instalação Grid Infrastructure

70
Lab 4.7: Instalação Grid Infrastructure

71
Lab 4.8: Instalação Grid Infrastructure

72
Lab 4.9: Instalação Grid Infrastructure

73
Lab 4.10: Instalação Grid Infrastructure

74
Lab 4.11: Instalação Grid Infrastructure

75
Lab 4.12: Instalação Grid Infrastructure

76
Lab 4.13: Instalação Grid Infrastructure

77
Lab 4.14: Instalação Grid Infrastructure

78
Lab 4.15: Instalação Grid Infrastructure

79
Lab 4.16: Instalação Grid Infrastructure

80
Lab 4.17: Instalação Grid Infrastructure

81
Lab 4.18: Instalação Grid Infrastructure

82
Lab 4.19: Instalação Grid Infrastructure

83
Lab 4.20: Instalação Grid Infrastructure

84
Lab 4.21: Instalação Grid Infrastructure

85
Lab 4.22: Instalação Grid Infrastructure

86
Lab 4.23: Instalação Grid Infrastructure

87
Lab 4.24: Instalação Grid Infrastructure

88
Lab 4.25: Instalação Grid Infrastructure

89
Evolução Oracle RAC
Oracle 6.0.35: VAX / VMS
Oracle 7: PCM
Oracle 8i: Cache Fusion I
Oracle 9i: Cache Fusion II, Oracle Cluster Management Services
Oracle 10gR1:
• Oracle Cluster Management Services => Cluster Ready Services (CRS)
• ASM - Automatic Storage management
• FAN - Fast Application Notification
• Integração com Database Services
• AWR, ADDM, ASH, Scheduler, Enterprise Manager
Oracle 10gR2: CRS => Oracle Clusterware. New Features incluem: cluvfy, asmcmd.
Oracle 11gR1: Apenas 7 New Features.
Oracle 11gR2: CRS => Grid Infrastrucutre. 32 New Features.
Oracle 12cR1: 33 New Features.
Oracle 12cR2: 32 New Features.
Oracle 18c: 14 New Features.
Oracle 19c: 10 New Features.

90 90
RAC 11gR1 New Features

Enhanced Oracle RAC Monitoring and Diagnostics in Enterprise Manager

Enhanced Oracle Real Application Clusters Configuration Assistants

OCI Runtime Connection Load Balancing

Parallel Execution for Oracle Real Application Clusters

Support for Distributed Transactions in an Oracle RAC Environment

Enhanced Oracle RAC Switchover Support for Logical Standby Databases

Enhanced Oracle RAC Monitoring and Diagnostics in Enterprise Manager

91 91
RAC 11gR2 New Features – Parte 1

Configuration Assistants Support New Oracle RAC Features

Enhanced Cluster Verification Utility

Integration of Cluster Verification Utility and Oracle Universal Installer

Cluster Time Service

Oracle Cluster Registry (OCR) Enhancements

Grid Plug and Play (GPnP)

Oracle Restart

Policy-Based Cluster and Capacity Management

Improved Clusterware Resource Modeling

Role-Separated Management

Agent Development Framework

Zero Downtime Patching for Oracle Clusterware and Oracle RAC

Enterprise Manager-Based Clusterware Resource Management

Enterprise Manager Provisioning for Oracle Clusterware and Oracle Real Application Clusters

Enterprise Manager Support for Grid Plug and Play

Enterprise Manager Support for Oracle Restart

Configuration Assistant Support for Removing Oracle RAC Installations

92 92
RAC 11gR2 New Features – Parte 2

Oracle Universal Installer Support for Removing Oracle RAC Installations

Improved Deinstallation Support With Oracle Universal Installer

Downgrading Database Configured With DBControl

Oracle Restart Integration with Oracle Universal Installer

Out-of-Place Oracle Clusterware Upgrade

OUI Support for Out-of-Place Oracle Clusterware Upgrade

Server Control (SRVCTL) Enhancements

Server Control (SRVCTL) Enhancements to Support Grid Plug and Play

SRVCTL Support for Single-Instance Database in a Cluster

Universal Connection Pool (UCP) Integration with Oracle Data Guard

UCP Integration With Oracle Real Application Clusters

Universal Connection Pool (UCP) for JDBC

Java API for Oracle RAC FAN High Availability Events

EMCA Supports New Oracle RAC Configuration for Enterprise Manager

Global Oracle RAC ASH Report + ADDM Backwards Compatibility

93 93
RAC 12cR1 New Features – Parte 1

Oracle Flex Cluster

SRVCTL Support for Oracle Flex Cluster Implementations

Policy-Based Cluster Management and Administration

What-If Command Evaluation

Shared Grid Naming Service (GNS)

Online Resource Attribute Modification

Grid Infrastructure Script Automation for Installation and Upgrade

Multipurpose Cluster Installation Support

Support for IPv6 Based IP Addresses for Oracle RAC Client Connectivity

Message Forwarding on Oracle RAC

Sharded Queues for Performance and Scalability

Oracle Grid Infrastructure Rolling Migration for One-Off Patches

94 94
Flex Cluster

95 95
RAC 12cR1 New Features – Parte 2

Oracle Flex ASM

Oracle ASM Shared Password File in a Disk Group

Oracle ASM Rebalance Enhancements

Oracle ASM Disk Resync Enhancements

Oracle ASM chown, chgrp, chmod and Open Files Support

Oracle ASM Support ALTER DISKGROUP REPLACE USER

Oracle ASM File Access Control on Windows

Oracle ASM Disk Scrubbing

Oracle Cluster Registry Backup in ASM Disk Group Support

Enterprise Manager Support for Oracle ASM Features

Oracle ACFS Support for All Oracle Database Files

Oracle ACFS and Highly Available NFS

Oracle ACFS Snapshots Enhancements

Oracle ACFS Replication Integration with Oracle ACFS Security and Encryption

Oracle ACFS Security and Encryption Features

Oracle ACFS File Tags for Grid Homes

Oracle ACFS Plug-in APIs

Oracle ACFS Replication and Tagging on AIX

Oracle ACFS Replication and Tagging on Solaris

Oracle Audit Vault Support for Oracle ACFS Security and Encryption

Enterprise Manager Support for Oracle ACFS New Features

96 96
Flex ASM

97 97
RAC 12cR2 New Features – Parte 1

Oracle Flex ASM Disk Group Quota Management

Prioritized Rebalancing

Extending Oracle Real Application Clusters (Oracle RAC) Configuration Support

I/O Server

Cluster Resource Activity Log

Cluster Verification Utility - Second Generation Command Line Output

Switch Service Enhancement

VM Manager Agent for GI

Shared Grid Naming Service High Availability

Oracle Clusterware Resource Groups

Reasoned What-If Command Evaluation (Why-If)

Server Weight-Based Node Eviction

Load-Aware Resource Placement

Oracle Clusterware Application Clusters

Oracle Grid Infrastructure Installation Support for Application Cluster Installation Type

98 98
RAC 12cR2 New Features – Parte 2

Oracle Automatic Storage Management Cluster File System (Oracle ACFS) Snapshot Enhancements

Oracle ACFS System Defragger

4K Sectors and Metadata Enhancements for Oracle ACFS

Oracle ACFS Metadata Collection Enhancements

Oracle ACFS Plug-ins for File Content

Oracle ACFS Loopback Device

Oracle ACFS API Access for Snapshots, File Tags, Plug-in Metrics

Oracle ACFS Compression Enhancements

Oracle Snapshot-Based Replication Enhancements

Oracle ACFS Auto-Resize Enhancements

Oracle ACFS Sparse Files Enhancements

Oracle ACFS Metadata Acceleration

Oracle ACFS NAS Maximum Availability eXtensions

Rapid Home Provisioning

Support for IPv6 Based IP Addresses for the Oracle Cluster Interconnect

Oracle Real Application Clusters (Oracle RAC) Reader Nodes

Service-Oriented Buffer Cache Access Optimization

99 99
RAC 18c New Features

ASM Data Reliability Enhancements

ASM Database Cloning

Dropping Oracle ASM File Groups With a Cascade Option

Converting Normal or High Redundancy Disk Groups to Flex Disk Groups without Restricted Mount

Oracle ACFS Remote Service for Member Clusters

Cluster Health Advisor Cross Database Analysis Support

Cluster Health Advisor Cross Cluster Analysis Support

Shared Single Client Access Names

NodeVIP-Less Cluster

Cluster Domain Proxies

gridSetup-based Management

Reader Nodes Performance Isolation

UCP Support for RAC Affinity Sharding

Transparent Application Continuity (TAC)

100 100
RAC 19c New Features

Parity Protected Files

Zero-Downtime Oracle Grid Infrastructure Patching

Automated Transaction Draining for Oracle Grid Infrastructure Upgrades

Oracle Restart Patching and Upgrading

Automated PDB Relocation

Secure Cluster Communication

Colocation Tag for Client Routing

Optional Install for the Grid Infrastructure Management Repository

Resupport of Direct File Placement for OCR and Voting Disks

Dynamic Services Fallback Option

101 101
Lab 5.1: Instalação Oracle Database Software
Na máquina nerv01 e nerv02 com o usuário oracle, crie o diretório do ORACLE_HOME.
$ source /home/oracle/.bash_profile
$ mkdir -p $ORACLE_HOME

Na máquina nerv01, com o usuário oracle, descompacte e execute o instalador do Oracle Database
Software.
$ cd /home/oracle
$ cp LINUX.X64_193000_db_home.zip $ORACLE_HOME
$ cd $ORACLE_HOME
$ unzip -q LINUX.X64_193000_db_home.zip
$ rm LINUX.X64_193000_db_home.zip
$ ./runInstaller

102
Lab 5.2: Instalação Oracle Database Software

103
Lab 5.3: Instalação Oracle Database Software

104
Lab 5.4: Instalação Oracle Database Software

105
Lab 5.5: Instalação Oracle Database Software

106
Lab 5.6: Instalação Oracle Database Software

107
Lab 5.7: Instalação Oracle Database Software

108
Lab 5.8: Instalação Oracle Database Software

109
Lab 5.9: Instalação Oracle Database Software

110
Lab 5.10: Instalação Oracle Database Software

111
Lab 5.11: Instalação Oracle Database Software

112
Lab 6.1: Criação Banco de Dados
Nas máquinas nerv01 e nerv02, verifique os Discos exportados no Storage.
# iscsiadm -m discovery -t sendtargets -p 192.168.0.201 -l

Nas máquinas nerv01 e nerv02 verifique se os discos foram configurados localmente.


# fdisk -l | grep sd

113
Lab 6.2: Criação Banco de Dados
Na máquina nerv01, crie os novos Discos no ASM Filter Driver.
$ export ORACLE_HOME=$GRID_HOME
$ export ORACLE_SID=+ASM1
$ export PATH=$ORACLE_HOME/bin:$PATH
$ su
# asmcmd afd_lslbl
# fdisk -l | grep sd
# asmcmd afd_label DATA01 /dev/sdc ### Disco de 20GB.
# asmcmd afd_label FRA01 /dev/sdd ### Disco de 10GB.
# asmcmd afd_label VD01 /dev/sde ### Disco de 1GB.
# asmcmd afd_label VD02 /dev/sdf ### Disco de 1GB.
# asmcmd afd_label VD03 /dev/sdg ### Disco de 1GB.
# asmcmd afd_label OCR01 /dev/sdh ### Disco de 2GB.
# asmcmd afd_label OCR02 /dev/sdi ### Disco de 2GB.
# asmcmd afd_lslbl

Na máquina nerv02, detecte os discos do ASM Filter Driver.


$ export ORACLE_HOME=$GRID_HOME
$ export PATH=$ORACLE_HOME/bin:$PATH
$ su
# asmcmd afd_lslbl

114
Lab 6.3: Criação Banco de Dados
Na máquina nerv01, crie os novos Disk Groups.
$ export ORACLE_HOME=$GRID_HOME
$ export ORACLE_SID=+ASM1
$ rlwrap sqlplus / AS SYSASM
SQL> CREATE DISKGROUP DATA EXTERNAL REDUNDANCY DISK 'AFD:DATA01';
SQL> CREATE DISKGROUP FRA EXTERNAL REDUNDANCY DISK 'AFD:FRA01';
SQL> CREATE DISKGROUP VD NORMAL REDUNDANCY DISK 'AFD:VD01','AFD:VD02','AFD:VD03';
SQL> CREATE DISKGROUP OCR NORMAL REDUNDANCY DISK 'AFD:OCR01','AFD:OCR02';

SQL> ALTER DISKGROUP DATA SET ATTRIBUTE 'COMPATIBLE.ASM' = '12.1.0.0.0';

SQL> SET PAGESIZE 1000


SQL> SELECT GROUP_NUMBER, NAME, STRIPE, REDUNDANCY FROM V$ASM_TEMPLATE
ORDER BY GROUP_NUMBER, NAME;

$ $GRID_HOME/bin/srvctl enable diskgroup -g DATA -n nerv02


$ $GRID_HOME/bin/srvctl start diskgroup -g DATA -n nerv02
$ $GRID_HOME/bin/srvctl enable diskgroup -g FRA -n nerv02
$ $GRID_HOME/bin/srvctl start diskgroup -g FRA -n nerv02
$ $GRID_HOME/bin/srvctl enable diskgroup -g VD -n nerv02
$ $GRID_HOME/bin/srvctl start diskgroup -g VD -n nerv02
$ $GRID_HOME/bin/srvctl enable diskgroup -g OCR -n nerv02
$ $GRID_HOME/bin/srvctl start diskgroup -g OCR -n nerv02

115
ASM Mirroring

116
ASM Stripping: Fine x Coarse

117
Lab 6.4: Criação Banco de Dados
Execute o DBCA para criar o banco de dados.
$ source /home/oracle/.bash_profile
$ dbca

118
Lab 6.5: Criação Banco de Dados

119
Lab 6.6: Criação Banco de Dados

120
Lab 6.7: Criação Banco de Dados

121
Lab 6.8: Criação Banco de Dados

122
Lab 6.9: Criação Banco de Dados

123
Lab 6.10: Criação Banco de Dados

124
Lab 6.11: Criação Banco de Dados

125
Lab 6.12: Criação Banco de Dados

126
Lab 6.13: Criação Banco de Dados

127
Lab 6.14: Criação Banco de Dados

128
Lab 6.15: Criação Banco de Dados

129
Lab 6.16: Criação Banco de Dados

130
Lab 6.17: Criação Banco de Dados

131
Lab 6.18: Criação Banco de Dados

132
Lab 6.19: Criação Banco de Dados

133
RAC Database

Background Process
• ACMS: Atomic Controlfile to Memory Service
• GTX0-j: Global Transaction Process
• LMON: Global Enqueue Service Monitor
• LMD: Global Enqueue Service Daemon
• LMS / LMSn / LMnn: Global Cache Service Process (GCS_SERVER_PROCESSES)
• LCK0: Instance Enqueue Process
• RMSn: Oracle RAC Management Processes
• RSMN: Remote Slave Monitor


PFILE / SPFILE (1x)
ALTER SYSTEM … SID=’*’ ou ALTER SYSTEM ... SID=’ORCL1’;

DATAFILEs (1x)

CONTROL FILEs (1x)

Online REDO LOG Threads (x Nodes)
ALTER DATABASE ADD LOGFILE … THREAD 1;

UNDO TABLESPACE (x Nodes)

134
Lab 6.21: Criação Banco de Dados
Na máquina nerv01, para efetuar logon na Instance ASM1, use o SQLPlus.
$ export ORACLE_SID=+ASM1
$ sqlplus / as SYSDBA
Por que não funcionou?

Verifique os discos existentes, e espaço disponível.


SQL> SELECT NAME, TOTAL_MB, FREE_MB FROM V$ASM_DISK;
SQL> SELECT NAME, TOTAL_MB, FREE_MB FROM V$ASM_DISKGROUP;
$ rlwrap asmcmd -p
ASMCMD [+] > lsdg

Pelo asmcmd, copie um DATAFILE do ASM para o /home/oracle de uma máquina do RAC.

Na instância do banco, crie uma TABLESPACE.


SQL> CREATE PLUGGABLE DATABASE PROD ADMIN USER RICARDO IDENTIFIED BY Nerv2021;
SQL> ALTER PLUGGABLE DATABASE ALL OPEN READ WRITE INSTANCES = ALL;
SQL> ALTER PLUGGABLE DATABASE ALL SAVE STATE INSTANCES = ALL;
SQL> ALTER SESSION SET CONTAINER = PROD;
SQL> CREATE TABLESPACE SOE;
SQL> ALTER TABLESPACE SOE ADD DATAFILE;
SQL> ALTER TABLESPACE SOE ADD DATAFILE ‘+DATA’;

135
Administração

136
Comandos depreciados (>= 11gR2)

137
Comandos depreciados (>= 11gR2)

138
Comandos depreciados (>= 11gR2)

139
Componentes Grid Infrastructure
- ASM
- Listener
- VIPs e SCAN
- OCR: Oracle Cluster Registry
- VD: Voting Disk (Quorum Disk)
- GIMR: Grid Infrastructure Management Repository (-MGMTDB)
- Utilitários principais: crsctl, srvctl
- Daemons: ohasd, crsd, evmd, ons, evmlogger, ologgerd, cssdmonitor, cssdagent, ocssd, octssd, osysmond,
mdnsd, gpnpd, gipcd, orarootagent, oraagent, scriptagent.

140
Dificuldades

Comandos depreciados

oracle X root

$GRID_HOME x $ORACLE_HOME

141
Programas do GRID_HOME
Usar um usuário separado para o Grid.

OU

Adicionar $GRID_HOME/bin no $PATH, no .bash_profile


$ crsctl status res -t

OU

$ . oraenv (Deprecated)
ORACLE_SID = [ORCL1] ? +ASM1 <enter>

OU

$ cd /u01/app/19.3.0.0/grid/bin/
./crsctl status res -t

OU

$ /u01/app/19.3.0.0/grid/bin/crsctl status res -t

OU

$ source /home/oracle/.bash_profile-GI
142
Daemons

143
Daemons

144
Oracle RAC Startup

145
Logs
<= 11gR2
$GRID_HOME/log/<node>/
$GRID_HOME/log/<node>/alert<node>.log

>= 12cR1
$ORACLE_BASE/diag/crs/<node>/crs/trace/
$ORACLE_BASE/diag/crs/<node>/crs/trace/alert.log

146
Lab 7.1: Daemons
Acompanhe a execução dos daemons via top.

Desligue a máquina nerv01.


Veja o que acontece no Alert Log do nerv02 enquanto o nerv01 é desligado.
$ tail -f /u01/app/oracle/diag/crs/nerv02/crs/trace/alert.log

Ligue a máquina nerv01.


Veja o que acontece no Alert Log do nerv02 enquanto o nerv01 é ligado.
$ tail -f /u01/app/oracle/diag/crs/nerv02/crs/trace/alert.log

Familiarize-se com o diretório de Logs.

Verifique o estado dos recursos.


$ /u01/app/19.3.0.0/grid/bin/crsctl status res -t

$ wget https://raw.githubusercontent.com/freddenis/oracle-scripts/master/rac-status.sh
$ chmod +x rac-status.sh
$ export ORACLE_HOME=$GRID_HOME
$ export PATH=$ORACLE_HOME/bin:$PATH
$ ./rac-status.sh -ae

147
Lab 7.2: Daemons
Continue acompanhando os Alert Logs das duas máquinas.

Desconecte o cabo da rede do Interconnect, apenas de um nó.


O que aconteceu?

Desconecte o cabo da rede do Storage, apenas de um nó.


O que aconteceu?

Verifique e altere parâmetros de timeout para o mínimo possível, e execute novamente os testes.
# /u01/app/19.3.0.0/grid/bin/crsctl get css reboottime
# /u01/app/19.3.0.0/grid/bin/crsctl get css misscount
# /u01/app/19.3.0.0/grid/bin/crsctl get css disktimeout
# /u01/app/19.3.0.0/grid/bin/crsctl set css reboottime 1
# /u01/app/19.3.0.0/grid/bin/crsctl set css misscount 2
# /u01/app/19.3.0.0/grid/bin/crsctl set css disktimeout 3

Verifique o estado dos recursos.


$ /u01/app/19.3.0.0/grid/bin/crsctl status res -t

148
Lab 8.1: Teste de Carga
Copie o swingbench para a máquina nerv01, como usuário oracle.

Descompacte o swingbench.zip, e execute a criação do SCHEMA do teste de carga:


$ cd /home/oracle
$ unzip -q swingbenchlatest.zip
$ cd swingbench/bin
$ ./oewizard -s -cs //rac01-scan:1521/PROD -create -dba "SYS AS SYSDBA" -dbap Nerv2021 -
ts SOE -tc 4 -allindexes -u SOE -p SOE -v -normalfile -nopart -scale 1 -cl

Execute o teste de carga:


$ cd /home/oracle/swingbench/bin
$ ./charbench -cs //rac01-scan/PROD -uc 10 -c ../configs/SOE_Server_Side_V2.xml -u SOE -p
SOE

149
srvctl

A partir de qualquer Node, controla todos.

Deve ser utilizado com o usuário oracle ou com o owner do GRID_HOME.

Deve ser utilizado o srvctl do ORACLE_HOME.

Comando preferencial para iniciar e parar recursos do RAC.

Administra Database, Instances, ASM, Listeners e Services.

Um recurso pode ser iniciado, parado, habilitado, ou desabilitado.

150
Lab 9.1: srvctl
Estudando o help do srvctl, execute a sequência de operações abaixo:
$ srvctl -h
$ srvctl stop -h
$ srvctl stop listener -h


Verifique as configurações do Listener.

Verifique as configurações do SCAN.

Verifique as configurações do Banco de Dados.


Verifique o estado dos listeners, pare o Listener de apenas um Node, e verifique novamente.

Verificar o estado das Instances, pare a Instance de apenas um Node, e verifique novamente.

Inicie novamente o Listener que está parado.

Inicie novamente a Instance que está parada.

Pare o Database, e o inicie novamente.

Pare uma Instance com a opção ABORT.

Inicie uma Instance com a opção MOUNT.

Deixa uma instância desabilitada, confira, e habilite novamente.


Mate uma Instance (kill no pmon) de um dos Nodes.

151
Lab 9.2: srvctl
Coloque o banco em modo ARCHIVELOG e execute um backup.

$ srvctl stop database -database ORCL


$ srvctl start instance -db ORCL -instance ORCL1 -startoption mount
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='+FRA';
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=10G;
SQL> ALTER DATABASE OPEN;
$ srvctl start instance -database ORCL -instance ORCL2

RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO COMPRESSED BACKUPSET;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '+FRA';
RMAN> BACKUP DATABASE;

152
crsctl

A partir de qualquer Node, controla todos.

Alguns comandos podem ser executados com usuário oracle, outros com o usuário root.

Este programa só existe no GRID_HOME.

Principal comando de administração do Grid.

Necessário para verificação e alteração de parâmetros.

Necessário para Troubleshooting e Debug.

153
Lab 10.1: crsctl
Verifique as opções do crsctl, digitando “crsctl”, sem opções.

Verifique o status dos Daemons:


# /u01/app/19.3.0.0/grid/bin/crsctl status res -t
# /u01/app/19.3.0.0/grid/bin/crsctl status res -t -init
# /u01/app/19.3.0.0/grid/bin/crsctl check cluster -all
# /u01/app/19.3.0.0/grid/bin/crsctl check cluster

# /u01/app/19.3.0.0/grid/bin/crsctl check crs


# /u01/app/19.3.0.0/grid/bin/crsctl check css
# /u01/app/19.3.0.0/grid/bin/crsctl check evm
# /u01/app/19.3.0.0/grid/bin/crsctl check ctss

# /u01/app/19.3.0.0/grid/bin/crsctl status res -dependency

Verifique a versão instalada e ativa.


# /u01/app/19.3.0.0/grid/bin/crsctl query crs activeversion
# /u01/app/19.3.0.0/grid/bin/crsctl query crs softwareversion
# /u01/app/19.3.0.0/grid/bin/crsctl query crs releasepatch
# /u01/app/19.3.0.0/grid/bin/crsctl query crs softwarepatch

Verifique os detalhes dos recursos do Oracle RAC.


# /u01/app/19.3.0.0/grid/bin/crsctl status res ora.orcl.db
# /u01/app/19.3.0.0/grid/bin/crsctl status res ora.orcl.db -t
# /u01/app/19.3.0.0/grid/bin/crsctl status res ora.orcl.db -f

154
Lab 10.2: crsctl
Liste os módulos do Cluster.
# /u01/app/19.3.0.0/grid/bin/crsctl lsmodules crs
# /u01/app/19.3.0.0/grid/bin/crsctl lsmodules css
# /u01/app/19.3.0.0/grid/bin/crsctl lsmodules evm

Coloque um dos módulos informados pelo comando anterior (lsmodules), e coloque ele em modo
Debug.
# tail -f /u01/app/oracle/diag/crs/nerv01/crs/trace/ocssd.trc
# /u01/app/19.3.0.0/grid/bin/crsctl get log css "CSSD"
# /u01/app/19.3.0.0/grid/bin/crsctl set log css "CSSD:5"
# /u01/app/19.3.0.0/grid/bin/crsctl get log css "CSSD"
# /u01/app/19.3.0.0/grid/bin/crsctl set log css "CSSD:2"
# /u01/app/19.3.0.0/grid/bin/crsctl get log css "CSSD"

Pare todo o Node.


# /u01/app/19.3.0.0/grid/bin/crsctl stop cluster

Pare o outro Node.


# /u01/app/19.3.0.0/grid/bin/crsctl stop cluster -n nerv02

Inicie todo o Cluster.


# /u01/app/19.3.0.0/grid/bin/crsctl start cluster -all

155
Voting Disk

É o centro do “ping” dos Nodes.

Pode ter N mirrors.

Pode ser alterado de qualquer Node.

Backups do Voting Disk são manuais (<11gR2).

Deve ser feito backup após Adição ou Remoção de Nodes (<11gR2).

Todas operações do Voting Disk devem ser executadas como root.

Com base nas informações nele, o Clusterware decide que Node faz parte do Cluster (Election /
Eviction / Split Brain).

156
Lab 11.1: Voting Disk
Verifique o status do VOTING DISK.
# /u01/app/19.3.0.0/grid/bin/crsctl query css votedisk

Adicione um MIRROR ao VOTING DISK.


# /u01/app/19.3.0.0/grid/bin/crsctl add css votedisk +FRA
# /u01/app/19.3.0.0/grid/bin/crsctl query css votedisk
O que aconteceu?

Altere a localização do VOTING DISK.


# /u01/app/19.3.0.0/grid/bin/crsctl replace votedisk +FRA
# /u01/app/19.3.0.0/grid/bin/crsctl query css votedisk
O que aconteceu?

Altere a localização do VOTING DISK.


# /u01/app/19.3.0.0/grid/bin/crsctl replace votedisk +OCR
# /u01/app/19.3.0.0/grid/bin/crsctl query css votedisk
O que aconteceu?

Altere a localização do VOTING DISK.


# /u01/app/19.3.0.0/grid/bin/crsctl replace votedisk +VD
# /u01/app/19.3.0.0/grid/bin/crsctl query css votedisk

157
Lab 11.2: Voting Disk
Na máquina nerv09, simule uma falha nos discos dos VOTING DISKs.
# dd if=/dev/zero of=/dev/sda? bs=512 count=1000000
# dd if=/dev/zero of=/dev/sda? bs=512 count=1000000
# dd if=/dev/zero of=/dev/sda? bs=512 count=1000000
O que aconteceu?

Nas máquinas nerv01 e nerv02, verifique o estado do Cluster.


# /u01/app/19.3.0.0/grid/bin/crsctl status res -t
# /u01/app/19.3.0.0/grid/bin/crsctl status res -t -init
# /u01/app/19.3.0.0/grid/bin/crsctl check cluster -all
# tail -f /u01/app/oracle/diag/crs/nerv01/crs/trace/alert.log

Nas máquinas nerv01 e nerv02, desabilite o início automático do CRS, e reinicie.


# /u01/app/19.3.0.0/grid/bin/crsctl disable crs
# reboot

Na máquina nerv01, inicie o CRS em modo exclusivo, e altere o VOTING DISK.


# /u01/app/19.3.0.0/grid/bin/crsctl start crs -excl -nocrs
# /u01/app/19.3.0.0/grid/bin/crsctl replace votedisk +CONFIG

Nas máquinas nerv01 e nerv02, habilite o início automático do CRS, e reinicie.


# /u01/app/19.3.0.0/grid/bin/crsctl enable crs
# reboot

158
Lab 11.3: Voting Disk
Na máquina nerv01, crie novamente os discos dos VOTING DISKs.
$ export ORACLE_HOME=$GRID_HOME
$ export ORACLE_SID=+ASM1
$ export PATH=$ORACLE_HOME/bin:$PATH
$ su
# fdisk -l | grep sd ### Os discos do VD são os de 1GB.
# asmcmd afd_label VD01 /dev/sd?
# asmcmd afd_label VD02 /dev/sd?
# asmcmd afd_label VD03 /dev/sd?
# asmcmd afd_lslbl

Na máquina nerv02, detecte novamente os discos dos VOTING DISKs.


$ export ORACLE_HOME=$GRID_HOME
$ export ORACLE_SID=+ASM2
$ su
# asmcmd afd_scan
# asmcmd afd_lslbl

159
Lab 11.4: Voting Disk
Na máquina nerv01, crie novamente os discos dos DISK GROUPs.
SQL> CREATE DISKGROUP VD NORMAL REDUNDANCY DISK 'AFD:VD01','AFD:VD02','AFD:VD03';

$ srvctl start diskgroup -g VD -n nerv02

Na máquina nerv01, altere a localização do VOTING DISK.


# /u01/app/19.3.0.0/grid/bin/crsctl query css votedisk
# /u01/app/19.3.0.0/grid/bin/crsctl replace votedisk +VD
# /u01/app/19.3.0.0/grid/bin/crsctl query css votedisk

160
OCR – Oracle Cluster Registry

É o centro das informações do RAC.

Deve estar em Storage compartilhado por todos Nodes.

Pode ter até 4 mirrors.

Ferramentas do OCR: ocrconfig, ocrcheck, ocrdump.

Ferramentas do OCR devem ser utilizadas como root.

Pode ser alterado de qualquer Node.

Backups do OCR são executados automaticamente.

Backups armazenados: 1 semanal, 1 diário, e 1 a cada 4 horas.

Podem ser executados backups físicos e lógicos.

161
Lab 12.1: OCR
Execute o ocrdump, e analise o conteúdo do dump (OCRDUMPFILE).
# /u01/app/19.3.0.0/grid/bin/ocrdump
# file OCRDUMPFILE
# grep orcl OCRDUMPFILE
# grep 192.168 OCRDUMPFILE

Execute o ocrcheck, e verifique o resultado.


# /u01/app/19.3.0.0/grid/bin/ocrcheck
# ls -lh /u01/app/oracle/diag/crs/nerv01/crs/trace/ocrcheck*

Verifique o OCR pelo Cluster Verification Utility.


$ /u01/app/19.3.0.0/grid/bin/cluvfy comp ocr -n nerv01,nerv02

162
Lab 12.2: OCR
Na máquina nerv01, adicione MIRRORs do OCRs.
# /u01/app/19.3.0.0/grid/bin/ocrcheck
# /u01/app/19.3.0.0/grid/bin/ocrconfig -add +CONFIG
# /u01/app/19.3.0.0/grid/bin/ocrcheck
O que aconteceu?

# /u01/app/19.3.0.0/grid/bin/ocrconfig -add +DATA


# /u01/app/19.3.0.0/grid/bin/ocrcheck
# /u01/app/19.3.0.0/grid/bin/ocrconfig -add +FRA
# /u01/app/19.3.0.0/grid/bin/ocrcheck
# /u01/app/19.3.0.0/grid/bin/ocrconfig -delete +DATA
# /u01/app/19.3.0.0/grid/bin/ocrcheck
# /u01/app/19.3.0.0/grid/bin/ocrconfig -delete +FRA
# /u01/app/19.3.0.0/grid/bin/ocrcheck
# /u01/app/19.3.0.0/grid/bin/ocrconfig -delete +CONFIG
O que aconteceu?

# /u01/app/19.3.0.0/grid/bin/ocrconfig -add +OCR


# /u01/app/19.3.0.0/grid/bin/ocrcheck
# /u01/app/19.3.0.0/grid/bin/ocrconfig -delete +CONFIG
# /u01/app/19.3.0.0/grid/bin/ocrcheck

163
Lab 12.3: OCR
Na máquina nerv01, verifique os backups físicos existentes do OCR.
# /u01/app/19.3.0.0/grid/bin/ocrconfig -showbackup
# /u01/app/19.3.0.0/grid/bin/ocrconfig -manualbackup
# /u01/app/19.3.0.0/grid/bin/ocrconfig -showbackup

Na máquina nerv01, altere a localização dos backups físicos do OCR.


# /u01/app/19.3.0.0/grid/bin/ocrconfig -backuploc +FRA
# /u01/app/19.3.0.0/grid/bin/ocrconfig -manualbackup
# /u01/app/19.3.0.0/grid/bin/ocrconfig -showbackup

Na máquina nerv01, faça um backup lógico do OCR.


# /u01/app/19.3.0.0/grid/bin/ocrconfig -export /home/oracle/OCR.bkp
# file /home/oracle/OCR.bkp

164
Lab 12.4: OCR
Na máquina nerv09, simule uma falha nos discos do OCR.
# dd if=/dev/zero of=/dev/sda? bs=512 count=1000000
# dd if=/dev/zero of=/dev/sda? bs=512 count=1000000
O que aconteceu?

Nas máquinas nerv01 e nerv02, verifique o estado do Cluster.


# tail -f /u01/app/oracle/diag/crs/nerv01/crs/trace/alert.log
# /u01/app/19.3.0.0/grid/bin/crsctl check cluster -all
# /u01/app/19.3.0.0/grid/bin/crsctl status res -t
# /u01/app/19.3.0.0/grid/bin/ocrcheck
# /u01/app/19.3.0.0/grid/bin/ocrconfig -manualbackup

Nas máquinas nerv01 e nerv02, desabilite o início automático do CRS, e reinicie.


# /u01/app/19.3.0.0/grid/bin/crsctl disable crs
# reboot

Na máquina nerv01, inicie o CRS em modo exclusivo.


# /u01/app/19.3.0.0/grid/bin/crsctl start crs -excl -nocrs

165
Lab 12.5: OCR
Na máquina nerv01, crie novamente os discos do OCR.
$ export ORACLE_HOME=$GRID_HOME
$ export ORACLE_SID=+ASM1
$ export PATH=$ORACLE_HOME/bin:$PATH
$ su
# fdisk -l | grep sd ### Os discos do OCR são os de 2GB.
# asmcmd afd_label OCR01 /dev/sd?
# asmcmd afd_label OCR02 /dev/sd?
# asmcmd afd_lslbl

Na máquina nerv02, detecte novamente os discos do OCR.


$ export ORACLE_HOME=$GRID_HOME
$ export ORACLE_SID=+ASM2
$ su
# asmcmd afd_scan
# asmcmd afd_lslbl

166
Lab 12.6: OCR
Na máquina nerv01, crie novamente os discos dos DISK GROUPs.
SQL> CREATE DISKGROUP OCR NORMAL REDUNDANCY DISK 'AFD:OCR01','AFD:OCR02';

Na máquina nerv01, restaure o OCR.


# /u01/app/19.3.0.0/grid/bin/ocrconfig -restore ...

Nas máquinas nerv01 e nerv02, habilite o CRS e reinicie.


# /u01/app/19.3.0.0/grid/bin/crsctl enable crs
# reboot

167
oifcfg

A partir de qualquer Node, controla todos.

Deve ser utilizado com o usuário root.

Ferramenta para alteração dos IPs Público e Interconnect.

168
Lab 13.1: oifcfg
Execute um backup do OCR (manualbackup).

Verifique as Interfaces atuais na nerv01. Guarde o resultado.


# /u01/app/19.3.0.0/grid/bin/oifcfg getif
# /u01/app/19.3.0.0/grid/bin/oifcfg setif -global enp2s0/192.168.3.0:cluster_interconnect,asm
# /u01/app/19.3.0.0/grid/bin/oifcfg getif
$ export ORACLE_HOME=$GRID_HOME
$ export ORACLE_SID=+ASM1
$ srvctl config listener -asmlistener
$ srvctl config asm
$ srvctl add listener -asmlistener -l ASMNEWLSNR_ASM -subnet 192.168.3.0
$ srvctl update listener -listener ASMNET1LSNR_ASM -asm -remove -force
$ srvctl config listener -asmlistener
$ srvctl config asm

Pare o Cluster nos dois Nodes.


# /u01/app/19.3.0.0/grid/bin/crsctl stop cluster -all

Nas máquinas nerv01 e nerv02, alterar o IP do Interconnect pelo nmtui.


Nas máquinas nerv01 e nerv02, alterar /etc/hosts para os novos IPs.

Nas máquinas nerv01 e nerv02, reiniciar a rede.


# /etc/init.d/network restart

169
Lab 13.2: oifcfg
Inicie o Cluster nos dois Nodes.
# /u01/app/19.3.0.0/grid/bin/crsctl start cluster -all

Em apenas um Node, remova a antiga Interface, após o CRS iniciar.


# /u01/app/19.3.0.0/grid/bin/oifcfg getif
# /u01/app/19.3.0.0/grid/bin/oifcfg delif -global enp2s0/192.168.1.0
# /u01/app/19.3.0.0/grid/bin/oifcfg getif

Execute um backup do OCR (manualbackup).

170
Rolling Patch

Permite aplicação de Patches com baixa indisponibilidade.

Aplica-se o Patch em um Node, depois em outro Node.

O Patch precisa suportar o Rolling Upgrade.

Não pode ser utilizado com HOMEs compartilhados.

Não pode ser utilizado para Patchsets.

Sempre leia o README antes.

171
Lab 14.1: Rolling Patch
Na máquina nerv01, altere os parâmetros do CSS.
# /u01/app/19.3.0.0/grid/bin/crsctl set css disktimeout 200
# /u01/app/19.3.0.0/grid/bin/crsctl set css misscount 30
# /u01/app/19.3.0.0/grid/bin/crsctl set css reboottime 3

Nas máquinas nerv01 o nerv02, atualize o OPatch.


# rm -rf /u01/app/19.3.0.0/grid/OPatch/
# mkdir /u01/app/19.3.0.0/grid/OPatch/
# chown -R oracle:oinstall /u01/app/19.3.0.0/grid/OPatch/

# rm -rf /u01/app/oracle/product/19.3.0.0/db_1/OPatch/
# mkdir /u01/app/oracle/product/19.3.0.0/db_1/OPatch/
# chown -R oracle:oinstall /u01/app/oracle/product/19.3.0.0/db_1/OPatch/

$ unzip -q p6880880_190000_Linux-x86-64.zip
$ cp -rf OPatch/* /u01/app/19.3.0.0/grid/OPatch/
$ cp -rf OPatch/* /u01/app/oracle/product/19.3.0.0/db_1/OPatch/

172
Lab 14.2: Rolling Patch
Na máquina nerv01, e depois na nerv02, aplique o Patch.
$ unzip -q p32545008_190000_Linux-x86-64.zip
$ export ORACLE_HOME=$GRID_HOME
$ su
# export PATH=$PATH:$GRID_HOME/OPatch
# $GRID_HOME/OPatch/opatchauto apply /home/oracle/32545008/

Na máquina nerv01, execute os procedimentos de pós instalação, e verificação.


$ source .bash_profile
$ cd $ORACLE_HOME/OPatch
$ ./datapatch -verbose
$ $ORACLE_HOME/OPatch/opatch lsinventory
$ $GRID_HOME/OPatch/opatch lsinventory
# /u01/app/19.3.0.0/grid/bin/crsctl query crs activeversion
# /u01/app/19.3.0.0/grid/bin/crsctl query crs softwareversion
# /u01/app/19.3.0.0/grid/bin/crsctl query crs releasepatch
# /u01/app/19.3.0.0/grid/bin/crsctl query crs softwarepatch
SQL> SET SERVEROUT ON
SQL> EXEC DBMS_QOPATCH.GET_SQLPATCH_STATUS;

173
Desempenho e Funcionalidade: Single Instance x RAC

Concorrência

Sequences / Sequences Artificiais

Data Dictionary

Reverse Key Indexes

Job x Scheduler

V$ x GV$

UTL_FILE / Directories / External Tables / Data Pump

Partitionamento lógico da aplicação

174
Lab 15.1: Escalabilidade
Analise e execute o script create_sequence.sql na máquina nerv01.
SQL> @create_sequence.sql

Analise e execute o script insert_sequence_rapida.sql na máquina nerv01.


Enquanto o script está executando, acompanhe as WAITs pelo oratop:
SQL> @insert_sequence_rapida.sql
$ $ORACLE_HOME/suptools/oratop/oratop -f -i1 / AS SYSDBA

Analise e execute o script insert_sequence_lenta.sql na máquina nerv01.


Enquanto o script está executando, acompanhe as WAITs pelo oratop:
SQL> @insert_sequence_lenta.sql
$ $ORACLE_HOME/suptools/oratop/oratop -f -i1 / AS SYSDBA

Execute novamente os dois scripts, mas desta vez nas duas máquinas ao mesmo tempo.
Enquanto o script está executando, acompanhe as WAITs pelo oratop:
$ $ORACLE_HOME/suptools/oratop/oratop -f -i1 / AS SYSDBA

Qual a diferença de tempo?


Quais os Wait Events que ocorreram?

175
Load Balance Client (<= 11gR1)

ORCL =
(DESCRIPTION=
(LOAD_BALANCE=ON) →→→ Escolha Aleatória
(FAILOVER=ON) →→→ Tenta acessar o 1o, depois o 2o
(ADDRESS=(PROTOCOL=TCP)(HOST=nerv01-vip)(PORT=1521)) →→→ VIP
(ADDRESS=(PROTOCOL=TCP)(HOST=nerv02-vip)(PORT=1521)) →→→ VIP
(CONNECT_DATA=
(SERVICE_NAME=ORCL)
(FAILOVER_MODE=
(TYPE=SELECT) →→→ SESSION ou SELECT
(METHOD=BASIC) →→→ BASIC ou PRECONNECT
(RETRIES=10) →→→ 10 tentativas de conexão
(DELAY=1) →→→ 1 segundo para cada tentativa
)
)
)

176
Load Balance Server (>= 11gR2)

177
Load Balance Server
Client tnsnames.ora:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac01-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCL)
))

Parâmetro LOCAL_LISTENER dos Nodes:


(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.15.112)(PORT=1521))

Parâmetro REMOTE_LISTENER dos Nodes:


rac01-scan.localdomain:1521

178
Load Balance Server
Services Goal
GOAL_NONE
GOAL_SERVICE_TIME →→→ Bom para OLTP
GOAL_THROUGHPUT →→→ Bom para Batch / OLAP / DBA

Services Connection Load Balance Goal


CLB_GOAL_SHORT →→→ Bom para OLTP
CLB_GOAL_LONG →→→ Bom para Batch / OLAP / DBA ou OLTP Persistente

179
Load Balance Server - SCHEDULER
BEGIN
DBMS_SCHEDULER.CREATE_JOB_CLASS (
JOB_CLASS_NAME => 'DBA_JOB_CLASS',
SERVICE => 'DBA_SERVICE');
END;
/

BEGIN
DBMS_SCHEDULER.CREATE_JOB (
JOB_NAME => 'SYS.DBA_JOB_TEST',
JOB_TYPE => 'PLSQL_BLOCK',
JOB_ACTION => 'BEGIN EXEC DBMS_STATS.GATHER_DATABASE_STATS; END;',
START_DATE => SYSTIMESTAMP,
REPEAT_INTERVAL => 'FREQ=DAILY;',
JOB_CLASS => 'SYS.DBA_JOB_CLASS',
END_DATE => NULL,
ENABLED => TRUE,
COMMENTS => 'JOB LINKED TO THE DBA_JOB_CLASS.');
END;
/

180
Load Balance Server
srvctl add service
srvctl remove service
srvctl modify service
srvctl relocate service
srvctl status service
srvctl start service
srvctl stop service
srvctl enable service
srvctl disable service

181
Lab 16.1: Load Balance Server
Na máquina nerv01, altere os parâmetros do CSS.
# /u01/app/19.3.0.0/grid/bin/crsctl set css reboottime 1
# /u01/app/19.3.0.0/grid/bin/crsctl set css misscount 2
# /u01/app/19.3.0.0/grid/bin/crsctl set css disktimeout 3

Crie os SERVICES como abaixo.


$ srvctl add service -db ORCL -pdb PROD -service OLTP -preferred ORCL1,ORCL2 -policy
AUTOMATIC -failovertype SELECT -failovermethod BASIC -failoverdelay 1 -failoverretry 10 -
clbgoal SHORT -rlbgoal SERVICE_TIME -notification TRUE

$ srvctl add service -db ORCL -pdb PROD -service BI -preferred ORCL2 -available ORCL1 -
tafpolicy PRECONNECT -policy AUTOMATIC -failovertype SELECT -failovermethod BASIC -
failoverdelay 1 -failoverretry 10 -clbgoal LONG -rlbgoal THROUGHPUT -notification TRUE

$ srvctl add service -db ORCL -pdb PROD -service DBA -preferred ORCL1 -available ORCL2 -
tafpolicy PRECONNECT -policy AUTOMATIC -failovertype SELECT -failovermethod BASIC -
failoverdelay 1 -failoverretry 10 -clbgoal LONG -rlbgoal THROUGHPUT -notification TRUE

Como ver os Services de um banco?


Como ver detalhes de um Service já configurado?

182
Lab 16.2: Load Balance Server
Altere o tnsnames.ora para utilizar os novos Services de outro RAC, e crie um usuário para testar o
Failover.
$ rlwrap sqlplus / AS SYSDBA
SQL> ALTER SESSION SET CONTAINER = PROD;
SQL> CREATE TABLESPACE USERS;
SQL> ALTER USER RICARDO QUOTA UNLIMITED ON USERS;
SQL> GRANT CREATE SESSION, CONNECT, RESOURCE, SELECT ANY DICTIONARY TO RICARDO;
SQL> CREATE TABLE RICARDO.T TABLESPACE USERS AS SELECT * FROM ALL_OBJECTS;
SQL> INSERT INTO RICARDO.T SELECT * FROM RICARDO.T;
SQL> INSERT INTO RICARDO.T SELECT * FROM RICARDO.T;
SQL> INSERT INTO RICARDO.T SELECT * FROM RICARDO.T;
SQL> INSERT INTO RICARDO.T SELECT * FROM RICARDO.T;
SQL> INSERT INTO RICARDO.T SELECT * FROM RICARDO.T;
SQL> COMMIT;

Teste o Failover com SELECT e com DML.


SQL> CONN RICARDO/Nerv2021@OLTP
SQL> SELECT * FROM T;
SQL> DELETE FROM T WHERE ROWNUM = 1;

Qual a diferença de FAILOVER entre SELECT e DELETE?


Qual a diferença de FAILOVER dos Services criados e do Service ORCL?

183
Adicionar e Remover Nodes
Sequência para adicionar Node:

Instalar Hardware;

Instalar e configurar Sistema Operacional;

Configurar acesso ao Storage;

Configurar ssh sem senha com os Nodes já existentes;

Instalar Grid Infraestruture a partir de um Node existente;

Instalar Oracle a partir de um Node existente;

Adicionar Instances.

Sequência para remover Node:



Remover Instance;

Remover Oracle;

Remover Grid Infraestruture.

184
Lab 17.1: Adicionar Nodes
Pare e remova todos os Services criados.
$ srvctl stop service -db ORCL -service OLTP
$ srvctl stop service -db ORCL -service BI
$ srvctl stop service -db ORCL -service DBA
$ srvctl remove service -db ORCL -service OLTP
$ srvctl remove service -db ORCL -service BI
$ srvctl remove service -db ORCL -service DBA

Manter apenas RACs rac02 e rac03 ativos na sala. No restante das máquinas, refazer os Labs 1, 2, e 3.1.

Instale o CVU nas novas máquinas, a partir de um Node existente:


# scp /u01/app/19.3.0.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm root@192.168.0.101:/root/
# scp /u01/app/19.3.0.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm root@192.168.0.102:/root/
# ssh root@192.168.0.101 'rpm -ivh /root/cvuqdisk-1.0.10-1.rpm'
# ssh root@192.168.0.102 'rpm -ivh /root/cvuqdisk-1.0.10-1.rpm'

$ cd /u01/app/19.3.0.0/grid/oui/prov/resources/scripts/
$ ./sshUserSetup.sh -user oracle -hosts "nerv01 nerv02 nerv03 nerv04" -advanced -exverify –
confirm -noPromptPassphrase

Instalar Grid Infraestruture nas outras máquinas, a partir de um Node existente:


$ cd $GRID_HOME/addnode
$ ./addnode.sh

Nas outras máquinas, com o usuário root, execute os seguintes scripts.


# /u01/app/oraInventory/orainstRoot.sh
# /u01/app/19.3.0.0/grid/root.sh 185
Lab 17.2: Adicionar Nodes
Instalar Oracle Database nas outras máquinas, a partir de um Node existente:
$ cd $ORACLE_HOME/addnode
$ ./addnode.sh

Nas outras máquinas, com o usuário root, execute o script abaixo.


# /u01/app/oracle/product/19.3.0.0/db_1/root.sh

Execute a adição das instâncias, a partir de um Node que já tem o Banco de Dados:
$ dbca

186
Flex ASM

187
Lab 18.1: Flex ASM
Na máquina nerv01, verifique a configuração atual do Cluster.
$ export ORACLE_HOME=$GRID_HOME
$ $GRID_HOME/bin/asmcmd showclustermode
$ $GRID_HOME/bin/srvctl config asm
$ $GRID_HOME/bin/srvctl status asm
$ $GRID_HOME/bin/srvctl modify asm -count 2
$ $GRID_HOME/bin/srvctl status asm
$ $GRID_HOME/bin/srvctl modify asm -count all
$ $GRID_HOME/bin/srvctl status asm

Simule um erro (kill -9 no pmon) em uma instância ASM, e acompanhe o Alert Log do banco de dados.

188
Lab 19.1: Migração Storage
Nas máquinas nerv01, nerv02, nerv03 e nerv04, verifique os Discos exportados no Storage.
# iscsiadm -m discovery -t sendtargets -p 192.168.0.202 -l

Na máquina nerv01, crie os novos Discos no ASM Filter Driver.


$ export ORACLE_HOME=$GRID_HOME
$ export PATH=$ORACLE_HOME/bin:$PATH
$ su
# asmcmd afd_lslbl
# fdisk -l | grep sd
# asmcmd afd_label NEWFRA01 /dev/sd? ### Disco de 200GB.
# asmcmd afd_lslbl

Nas máquinas nerv02, nerv03 e nerv04, detecte os discos do ASM Filter Driver.
$ export ORACLE_HOME=$GRID_HOME
$ export PATH=$ORACLE_HOME/bin:$PATH
$ su
# asmcmd afd_scan
# asmcmd afd_lslbl

189
Lab 19.2: Migração Storage
Na máquina nerv01, adicione o novo disco no Disk Group FRA, e acompanhe o Rebalance.
$ export ORACLE_HOME=$GRID_HOME
$ export ORACLE_SID=+ASM1
$ rlwrap sqlplus / AS SYSASM
SQL> SET PAGESIZE 1000
SQL> SET LINESIZE 200
SQL> COLUMN PATH FORMAT A50
SQL> SELECT NAME, PATH FROM V$ASM_DISK ORDER BY PATH;

SQL> SELECT G.NAME, D.NAME, D.TOTAL_MB, D.FREE_MB FROM V$ASM_DISK D, V$ASM_DISKGROUP G


WHERE G.GROUP_NUMBER = D.GROUP_NUMBER ORDER BY G.NAME, D.NAME;

SQL> ALTER DISKGROUP FRA ADD DISK ‘AFD:NEWFRA01’ NAME NEWFRA01;


SQL> SELECT * FROM V$ASM_OPERATION;
SQL> ALTER DISKGROUP FRA REBALANCE POWER 30;
SQL> SELECT * FROM V$ASM_OPERATION;
SQL> ALTER DISKGROUP FRA SCRUB POWER LOW;
SQL> SELECT * FROM V$ASM_OPERATION;

Na máquina nerv01, remova o antigo disco do Disk Group FRA, e acompanhe o Rebalance.
SQL> SELECT G.NAME, D.NAME, D.TOTAL_MB, D.FREE_MB FROM V$ASM_DISK D, V$ASM_DISKGROUP G
WHERE G.GROUP_NUMBER = D.GROUP_NUMBER ORDER BY G.NAME, D.NAME;
SQL> ALTER DISKGROUP FRA DROP DISK FRA01;
SQL> SELECT * FROM V$ASM_OPERATION;

190
ACFS (ASM Cluster File System)

191
Lab 20.1: ACFS
Na máquina nerv01, crie o volume para o ACFS.
$ export ORACLE_HOME=$GRID_HOME
$ export ORACLE_SID=+ASM1
$ export PATH=$ORACLE_HOME/bin:$PATH
$ rlwrap sqlplus / AS SYSASM
SQL> ALTER DISKGROUP FRA ADD VOLUME ACFSVOL1 SIZE 50G;

Nas máquinas nerv01, nerv02, nerv03 e nerv04, crie um diretório para montar o Volume ACFS.
# mkdir -p /u01/app/oracle/acfsvol1
# chown -R oracle:oinstall /u01/app/oracle/acfsvol1

Na máquina nerv01, formate o Volume ACFS.


$ /sbin/mkfs.acfs /dev/asm/acfsvol1-? -n "ASMVOL1"

Nas máquinas nerv01, nerv02, nerv03 e nerv04, crie um diretório para montar o Volume ACFS.
# /bin/mount -t acfs /dev/asm/acfsvol1-? /u01/app/oracle/acfsvol1/
# chown -R oracle:oinstall /u01/app/oracle/acfsvol1
# df -h

Na máquina nerv01, crie um Directory e execute um Dump no Volume ACFS.


SQL> CREATE OR REPLACE DIRECTORY ACFSVOL1 AS '/u01/app/oracle/acfsvol1';
$ expdp FULL=Y DIRECTORY=ACFSVOL1

192
Lab Auxiliar 1: Configuração DNS
Na máquina nerv09, instale os pacotes necessários para o DNS.
# yum -y install bind bind-utils

Na máquina nerv09, deixe APENAS as seguintes linhas no arquivo /etc/named.conf.


options {
listen-on port 53 { 127.0.0.1; 192.168.15.201; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
// query-source address * port 53;
};

zone "." in {
type hint;
file "/dev/null";
};

zone "localdomain." IN {
type master;
file "localdomain.zone";
allow-update { none; };
};

193
Lab Auxiliar 1: Configuração DNS
Nas máquinas nerv09, deixe APENAS as seguintes linhas no arquivo /var/named/localdomain.zone.

$TTL 86400
@ IN SOA localhost root.localhost (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS localhost
localhost IN A 127.0.0.1
nerv01 IN A 192.168.15.101
nerv02 IN A 192.168.15.102
nerv01-vip IN A 192.168.15.111
nerv02-vip IN A 192.168.15.112
rac01-scan IN A 192.168.15.151
rac01-scan IN A 192.168.15.152
rac01-scan IN A 192.168.15.153

194
Lab Auxiliar 1: Configuração DNS
Na máquina nerv09, deixe APENAS as seguintes linhas no arquivo /var/named/15.168.192.in-addr.arpa.

$ORIGIN 15.168.192.in-addr.arpa.
$TTL 1H
@ IN SOA nerv09.localdomain. root.nerv09.localdomain. (
2
3H
1H
1W
1H )
15.168.192.in-addr.arpa. IN NS nerv09.localdomain.

101 IN PTR nerv01.localdomain.


102 IN PTR nerv02.localdomain.
111 IN PTR nerv01-vip.localdomain.
112 IN PTR nerv02-vip.localdomain.
151 IN PTR rac01-scan.localdomain.
152 IN PTR rac01-scan.localdomain.
153 IN PTR rac01-scan.localdomain.

195
Lab Auxiliar 1: Configuração DNS
Na máquina nerv09, inicie o DNS Server, e o habilite para o início automático.
# service named start
# chkconfig named on

Na máquina nerv09, pare o firewall, e o desabilite para o início automático.


# service iptables stop
# service ip6tables stop
# chkconfig iptables off
# chkconfig ip6tables off

196
Lab Auxiliar 2: Configuração Storage
Na máquinas nerv09, crie 1 partição de 50GB (CONFIG), e 1 de 20GB (DATA), 1 de 10GB (FRA), 3 de 1GB
(VD), e 2 de 2GB (OCR).

Na máquina nerv09, configure o iSCSI server.


# yum -y install scsi-target-utils
# cat /etc/tgt/targets.conf
<target iqn.2010-10.com.nervinformatica:storage.asm01-01>
backing-store /dev/sda5
initiator-address 192.168.0.101
initiator-address 192.168.0.102
</target>
<target iqn.2010-10.com.nervinformatica:storage.asm01-02>
backing-store /dev/sda6
initiator-address 192.168.0.101
initiator-address 192.168.0.102
</target>
...

# service tgtd start


# chkconfig tgtd on

197
Perguntas?

Ricardo Portilho Proni


ricardo@nervinformatica.com.br

Esta obra está licenciada sob a licença


Creative Commons Atribuição-SemDerivados 3.0 Brasil.
Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/. 198

Você também pode gostar