230
DBA Júnior Ricardo Porlho Proni [email protected] Esta obra está licenciada sob a licença Creave Commons Atribuição-SemDerivados 3.0 Brasil. Para ver uma cópia desta licença, visite hp://creavecommons.org/licenses/by-nd/3.0/br/.

DBA Júnior - Nervnervinformatica.com.br/Downloads/Materiais/DBAJR-2019.pdf · 7 Tarefas do DBA Júnior Extração simples de dados (SELECT). Manipulação simples de dados (INSERT,

  • Upload
    others

  • View
    22

  • Download
    0

Embed Size (px)

Citation preview

DBA Júnior

Ricardo Portilho [email protected]

Esta obra está licenciada sob a licençaCreative 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/.

2

Comandos no Treinamento

Comando com o usuário root:# ls -lh

Comando com um usuário normal:$ ls -lh

Adicionar texto a um arquivo:# vi /etc/my.cnf...log-bin=mysql-bin...

Comando no MySQL:mysql> show databases;

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

Quando algo dá errado propositalmente:O que aconteceu?

3

● Mercado de Trabalho● Linux - Sistema Operacional, Virtualização, Redes, Storage● MySQL● Oracle

3

Agenda

4

Produtos utilizados no Treinamento● Oracle Enterprise Linux x64 6● Oracle VirtualBox x64 6.0● Windows Server 2008 x32● MySQL Community Server x64 5.7● Oracle Database Enterprise Edition x64 12cR2

5

Por que é difícil tornar-se DBA?

6

DBA Júnior, Pleno, e Sênior

● Não é apenas uma questão de tempo.● Concurso Público? Empresa? DataCenter? Consultoria?● Tenho X anos, posso começar agora?

7

Tarefas do DBA Júnior● Extração simples de dados (SELECT).● Manipulação simples de dados (INSERT, UPDATE, DELETE)● Instalação do SGBD (mas não Upgrade).● Criação de Bancos de Dados.● Verificação e alteração de parâmetros (mas não a decisão a respeito).● Execução de scripts.● Manutenção de usuários e permissões.● Manutenção de objetos (Tabelas, Índices, etc.).● Manutenção de espaço.● Execução de Backup físico e lógico (mas não Restore).● Transporte de objetos entre servidores.● Verificação de disponibilidade.● Início de verificação de problemas (Troubleshooting).● Início de análise de desempenho (Tuning).

8

Formação DBAs: CVs● Gradução / Pós-graduação / etc.● Treinamentos.● Experiência.● Conhecimentos● Certificação.● Inglês.● Múltiplos Bancos de Dados.● Alguma linguagem de script: Shell, Perl, BAT, VBScript.● Linguagem SQL.● Linguagem SQL proprietária (PL/SQL, T-SQL, etc.)● Outra linguagem de programação (pode ser uma porta de entrada).● Certificações de tecnologias acessórias.

● Me envie seu CV.

9

Planejamento: Quero ser um DBA

- Ter um ambiente de estudo - Ter uma rotina de estudo - Prosseguir com Formação (Graduação, Pós, MBA, etc) - Fazer um Treinamento Oficial (mais teoria) - Fazer um Treinamento não Oficial (mais prática) - Aperfeiçoar Inglês (Leitura) - Ler, ler, ler. - Participar de Grupos de Discussão - Acompanhar Blogs - Ir a Eventos (Networking) - Estudar e tirar primeiro nível de Certificação - Se candidatar a vagas de DBA Júnior - Se candidatar a vagas de Infraestrutura - Se candidatar a vagas de Programação

10

Planejamento: Já sou um DBA

- Ter um ambiente de estudo - Ter uma rotina de estudo - Prosseguir com Formação (Graduação, Pós, MBA, etc) - Fazer um Treinamento Oficial (mais teoria) - Fazer um Treinamento não Oficial (mais prática) - Aperfeiçoar Inglês (Escrita e Conversação) - Ler, ler, ler. - Participar de Grupos de Discussão - Acompanhar Blogs - Ir a Eventos (Networking) - Estudar e tirar segundo nível de Certificação

- Espere um ano pelo menos... - E então se candidatar a vagas com maior possibilidade de crescimento.

11

Livros: Oracle

12

Livros: Oracle

13

ComunidadesList Yahoo Oracle Brhttps://www.mail-archive.com/[email protected]/

GPOhttps://www.profissionaloracle.com.br

Glufkehttp://glufke.net/

GUOBhttp://www.guob.com.br/

Database Casthttp://databasecast.com.br/wp/

Certificação BDhttp://certificacaobd.com.br/

DBA Brasilhttps://dbabrasil.net.br/

14

Treinamentos Oficiais

Oracle Database Administration Workshop

Treinamentos NervQuero ser um DBA Treinamento DBA JúniorTreinamento DBA Júnior IITreinamento Oracle Backup e Recovery

Já trabalho como DBA e enfrento problemas de desempenho:Treinamento Oracle Performance Diagnostic e TuningTreinamento Oracle Performance Tuning – SQL

Já sou um DBA, e usamos RAC:Treinamento Oracle RAC

Já sou um DBA, e usamos Data Guard:Treinamento Oracle Data Guard

Já sou um DBA, e usamos MySQL:Treinamento MySQL

16

Certificação

17

Certificação

- Suas Certificações devem seguir sua carreira. - Não passar na prova faz parte do jogo.

18

Certificações 1o Nível

Bancos de DadosOracle: Oracle Database Administrator Certified AssociateSQL Server: Microsoft Certified Solutions AssociateMySQL: Oracle Certified Associate, MySQL 5

InfraestruturaLinux: LPIC-1Linux: Red Hat Certified System AdministratorAIX: IBM Certified OperatorVirtualização: VMware Certified AssociateVirtualização: Hyper-V: MCITP: Virtualization AdministratorWindows Server: Microsoft Certified Solutions AssociateCISCO: CCENT Cisco Certified Entry Networking TechnicianStorage: IBM Certified Specialist - High Volume Storage FundamentalsStorage: NetApp Certified Data Management Administrator

GerenciamentoITIL

Brain Dumps

20

Múltiplos Bancos de Dados

21

Múltiplos Bancos de Dados

22

Linux

Sistema Operacional, Virtualização, Redes, Storage

22

23

23

Alta x Baixa plataforma

24

24

Plataformas e Arquiteturas• Alpha (64 bits)• ARM 32 (32 bits)• ARM 64 (64 bits)• AVR32 (32 bits)• Blackfin (32 bits)• DLX (32 bits)• ESi-RISC (16/32 bits)• Itanium (IA-64) (64 bits)• M32R (32 bits)• m68k (16/32 bits)• Mico32 (32 bits)• MIPS (64 bits)• MMIX (64 bits)• PA-RISC (64 bits)• PowerPC (32/64 bits)• S+core (16/32 bits)• Series 32000 (32 bits)• SPARC (64 bits)• SuperH (32 bits)• System/360 / System/370 / z/Architecture (64 bits)• VAX (32 bits)• x86 (32 bits)• x86-64 (64 bits)

25

25

História do Unix

26

26

Distribuições, Edições, Versões

https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svghttp://upload.wikimedia.org/wikipedia/commons/e/ed/LinuxDistroTimeline.png

27

27

Distribuições, Edições, Versões

28

28

Linux Homologados para Oracle Database 12cR2

29

29

Download OEL 6

30

30

Download OEL 6

31

31

Download OEL 6

32

32

Download OEL 6

33

33

Instalação OEL 6

34

34

Instalação OEL 6

35

35

Instalação OEL 6

36

36

Instalação OEL 6

37

37

Instalação OEL 6

38

38

Instalação OEL 6

39

39

Instalação OEL 6

40

40

Instalação OEL 6

41

41

Instalação OEL 6

42

42

Instalação OEL 6

43

43

Instalação OEL 6

44

44

Instalação OEL 6

45

45

Instalação OEL 6

46

46

Instalação OEL 6

47

47

Instalação OEL 6

48

48

Instalação OEL 6

49

49

Instalação OEL 6

50

50

Instalação OEL 6

51

51

Instalação OEL 6

52

52

Instalação OEL 6

53

53

Instalação OEL 6

54

54

Instalação OEL 6

55

55

Instalação OEL 6

56

56

Instalação OEL 6

57

57

Instalação OEL 6

58

58

Instalação OEL 6

59

59

Instalação OEL 6

60

60

Instalação OEL 6

61

61

Instalação OEL 6

62

62

Instalação OEL 6

63

63

Instalação OEL 6

64

64

Instalação OEL 6

65

65

Instalação OEL 6

66

66

Instalação OEL 6

67

67

Manipulação de ArquivosExecute logon como root.Habilite a rede (Clique com o botão esquerdo no ícone de rede, e em eth0).Abra um terminal (Clique com o botão direito no Desktop, e então em “Open In Terminal”.)# yum -y update

Abra outro terminal, e verifique os arquivos existentes no diretório:# ls# ls -l# pwd# cd ..# pwd# ls# ls -l# ls -lh# ls -lA# ls -lh *.log# cd ..# pwd# ls -lh# man ls

68

68

Manipulação de Arquivos# cd# pwdEm que diretório você está?

# ls -lh# file Desktop# file install.log# cat install.log# head install.log# tail install.log

# cp install.log install.log.backup# mv install.log install.log.new# rm install.log.backup# touch install.log# mkdir teste# cp install.log testeO que estes comandos fizeram?

69

69

Manipulação de Arquivos

# cat install.log# cat install.log.new > install.log# cat install.log# grep xorg install.log# grep xorg install.log | grep fonts# grep xorg install.log | grep -v fonts

# watch ls -lh

# vi install.logESC e depois i --- insere texto.ESC e depois x --- remove uma letra.ESC e depois dd --- remove uma linha.ESC e depois :w --- salva as alterações.ESC e depois :q --- sai do vi.ESC e depois :wq --- salva as alterações, e sai do vi.ESC e depois :q! --- sai do vi sem salvar as alterações.

# clearO que a seta para cima faz?# cat .bash_history

70

70

Gerenciamento de Pacotes

Coloque o DVD. Verifique se o DVD já está montado.# df -h

Vá até o diretório onde estão os pacotes no DVD.# cd /media/<...>/Packages

Tente instalar o gcc.# rpm -ivh gcc-c++*

O que aconteceu?# yum install gcc-c++

71

71

Particionamento e Sistema de Arquivos

Crie uma partição com o espaço livre.# findmnt# findmnt -l# fdisk -l# fdisk /dev/sdaDigite: p <Enter>Digite: n <Enter><Enter><Enter>Digite: p <Enter>Digite: w <Enter>

# fdisk -l

Formate esta partição com o Sistema de Arquivos ext4.# mkfs.ext4 /dev/sda8

O que aconteceu?

72

72

Particionamento e Sistema de Arquivos

Crie um diretório, e monte o dispositivo nele.# mkdir /u01# mount /dev/sda8 /u01

Faça este sistema de arquivos ser montado automaticamente.# vi /etc/fstab.../dev/sda8 /u01 ext4 defaults 1 2...

Teste se o arquivo /etc/fstab está correto.# umount /u01# mount /u01

73

73

Services

Verifique se o Apache está configurado para iniciar automaticamente.# chkconfig# chkconfig | grep httpd# chkconfig --level 35 httpd on# chkconfig | grep httpd

Inicie e teste o serviço do Apache.# service httpd status# firefox localhost# service httpd start# service httpd status# firefox localhost

74

74

Usuários, Grupos, Permissões

Verifique qual é o seu usuário, e que permissões ele tem.# whoami# id# ls -lh /root/# cat /etc/passwd# cat /etc/group

Adicione grupos e o usuário oracle.# groupadd -g 1000 oinstall# groupadd -g 1200 dba# groupadd -g 1300 oper# useradd -u 1100 -g oinstall -G dba,oper oracle# passwd oracle# id oracle# cat /etc/passwd# cat /etc/group

75

75

Usuários, Grupos, Permissões

Torne-se o usuário oracle, e verifique suas permissões.# su – oracle$ whoami$ id$ pwd$ ls -lh /root/O que aconteceu?

Dê permissão para um arquivo ao usuário oracle, e teste.$ exit# chown oracle:dba /root/install.log# su – oracle$ ls -lh /root/$ ls -lh /root/install.logO que aconteceu?

76

76

Shell

Com o usuário oracle, crie um script Bash.$ vi teste.sh...#!/bin/bashdateecho “Teste”...

Execute-o:$ teste.shO que aconteceu?

$ sh teste.sh$ /home/oracle/teste.sh$ ./teste.shO que aconteceu?

$ chmod +x /home/oracle/teste.sh$ /home/oracle/teste.sh$ ./teste.sh

77

77

Shell

Execute-o diretamente desta vez.$ teste.sh$ echo $PATH$ export PATH=/home/oracle/:$PATH$ echo $PATH$ teste.shO que aconteceu?

78

78

crontab

Agende o script na crontab.$ crontab -l$ crontab -e...* * * * * /home/oracle/teste.sh >> /home/oracle/teste.log...

$ crontab -l

$ tail /home/oracle/teste.log$ tail -f /home/oracle/teste.log

79

79

Processos

Verifique os processos em execução.$ ps$ ps a$ ps aux$ ps aux | grep gnome$ pstreeQual a diferença entre estes comandos?

Finalize o seu processo bash.$ ps a$ kill 2120$ kill -9 2120O que aconteceu?

80

80

Desempenho

81

81

Desempenho

$ free

$ vmstat$ vmstat 2$ vmstat 5

$ iostat -xd$ iostat -xd 2$ iostat -xd 5

$ top

82

82

Logs

Verifique os logs mais atuais, e que informação eles têm.$ ls -lh /var/log$ su -# ls -lh /var/log# cat /var/log/messages

83

83

Virtualização Hard x Soft

84

84

Produtos de Virtualização Oracle

85

85

VMs e Containers

86

86

Produtos de Virtualização Oracle

87

87

Instalação Oracle VirtualBox

# ls -lh /root/# rpm -ivh /root/VirtualBox*

88

88

Criação VMs

89

89

Criação VMs

90

90

Criação VMs

91

91

Criação VMs

92

92

Criação VMs

93

93

Criação VMs

94

94

Criação VMs

95

95

Configuração VMs

96

96

Configuração VMs

97

97

Configuração VMs

98

98

Configuração VMs

99

99

Configuração VMs

100

100

Configuração VMs

101

101

Configuração VMs

102

102

Configuração VMs

103

103

Configuração VMs

104

104

Configuração VMs

105

105

Configuração VMs

106

106

Configuração VMs

107

107

Configuração VMs

108

108

Configuração VMs

109

109

Configuração VMs

110

110

Configuração VMs

111

111

Configuração VMs

112

112

Configuração VMs

113

113

PausePause VMs

114

114

Clone VMs

115

115

Clone VMs

116

116

Clone VMs

117

117

Clone VMs

118

118

Snapshot VMs

119

119

Snapshot VMs

120

120

Snapshot VMs

121

121

Export / Import Appliance

122

122

Export / Import Appliance

123

123

Export / Import Appliance

124

124

Export / Import Appliance

125

125

Export / Import Appliance

126

126

Redes TCP/IP● IP / Mask / Gateway / DNS – ifconfig / route / /etc/resolv.conf● VLAN● DHCP● Routing / Firewall / Proxy● IDS / IPSQual seu IP / Mask / Gateway / DNS?

127

Configure as placas de rede.

127

Configuração de Rede

128

128

ssh / scp / ftp

Execute logon remoto no computador do seu vizinho.# ssh [email protected]# exit

Copie um arquivo do computador do seu vizinho para o seu.# scp [email protected]:/root/install.log /tmp/# scp [email protected]:/root/install.log /tmp/install.log# scp [email protected]:/root/install.log /tmp/install.tmp# scp [email protected]:/root/install.log .

Copie um arquivo de seu computador para o do seu vizinho.# scp /root/install.log [email protected]:/root/Desktop/install.log

Copie um arquivo de seu vizinho para outro vizinho.# scp root@nerv02:/root/install.log root@nerv03:/tmp/install.new

129

129

mstsc / rdesktop

Execute logon remoto no Windows Server de sua VM.# rdesktop IpDaVMWindowsPor que não funciona?

130

130

VNC / Xserver

Execute logon remoto gráfico no computador do seu vizinho.# vncviewer 192.168.0.102:1Por que não funciona?

E’xecute logon remoto no computador do seu vizinho.# ssh -CX [email protected]# firefox

131

131

Windows Share

Crie um compartilhamento no Windows Server, em sua VM.Crie uma pasta (sem espaços no nome) no C:\.Clique com o botão direito em uma pasta -> Share -> Share → Yes -> Done.

Instale a compatibilidade com Samba em seu computador.# yum -y install samba-client samba-common cifs-utils

Monte este compartilhamento em seu computador.# mkdir /mnt/windows# mount -t cifs //192.168.0.99/temp -o username=Administrator,password=Nerv2019 /mnt/windows

132

132

Tecnologias Storage

- IDE, ATA, SATA, SCSI- SSD, Cache- RAID (próxima página)- SAN (Storage Area Network), NAS (Network Attached Storage)- Cluster Filesystems- LUN

Protocolos- iSCSI- Fiber Channel (FC)- ATA-over-Ethernet (AoE)- Fibre Channel over Ethernet (FCoE)- Fibre Channel over IP (FCIP)- HyperSCSI SCSI over Ethernet frames instead of IP (as iSCSI is)- ISCSI Extensions for RDMA (iSER)- Internet Fibre Channel Protocol (iFCP)- Internet Storage Name Service (iSNS)- The SCST Linux SCSI target software stack- Linux LIO Unified Target software stack- Service Location Protocol

133

133

RAID

134

Crie um diretório para o NFS Server.# yum install nfs-utils

Crie um diretório para o NFS Server.# mkdir /shared_data

Adicionar no arquivo /etc/exports a linha abaixo./shared_data *(rw,sync,no_wdelay,insecure_locks,no_root_squash)

Inicie o serviço NFS Server.# chkconfig nfs on# service nfs restart

134

NFS Server

135

Adicionar no arquivo /etc/fstab a linha abaixo.192.168.0.201:/shared_data /u01/oradata nfs rw,bg,hard,nointr,tcp,vers=3,timeo=600,rsize=32768,wsize=32768,actimeo=0 0 0

Monte o Filesystem NFS.# mkdir /u01/oradata# mount /u01/oradata# touch /u01/oradata/teste-nerv01.txt

O vizinho consegue vizualizar seu arquivo?O vizinho consegue alterar seu arquivo?

135

NFS Client

136

136

iSCSI Initiator

Instale e ative o pacote iSCSI Initiator.# yum -y install iscsi-initiator-utils# service iscsi start# chkconfig iscsi on

Verifique os Discos exportados no Storage.# iscsiadm -m discovery -t sendtargets -p 192.168.0.201 -l

Verifique se o disco foi configurado localmente.# fdisk -l

137

Particione o novo disco.# fdisk /dev/sdbDigite: n <Enter>Digite: p <Enter>Digite: 1 <Enter><Enter><Enter>Digite: w <Enter>

Formate, crie um ponto de montagem, e monte a partição deste novo disco.

iSCSI Initiator

138

MySQL

138

139

139

Por que MySQL?

140

140

Evolução MySQL

141

141

Edições - Community

142

142

Edições - Enterprise

143

143

Instalação

[root@Melquior ~]# yum -y install mysql-server...[root@Melquior ~]# rpm -qa | grep mysqlmysql-server-5.1.73-3.el6_5.x86_64mysql-libs-5.1.73-3.el6_5.x86_64mysql-5.1.73-3.el6_5.x86_64[root@Melquior ~]#

144

144

Instalação

145

145

Instalação

146

146

InstalaçãoInstale o MySQL.# yum -y install https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm# yum -y install mysql-server# chkconfig mysqld on# service mysqld start

# grep password /var/log/mysqld.log

# /usr/bin/mysqladmin -p -u root password 'Nerv2019.'# mysql -u root -pNerv2019.

147

147

Verificação

Acesse o MySQL.# mysql -u root -pNerv2019.mysql> exit;

Verifique se o MySQL está ativo.# mysqladmin -u root -pNerv2019. status

Verifique o Log do MySQL.# tail /var/log/mysqld.log

148

148

Programas Cliente

# mysql -u root -pNerv2019.mysql> SHOW STATUS;mysql> EXIT;

# mysql -u root -pNerv2019. -e “SHOW STATUS”

# mysql -u root -pNerv2019. -e “SHOW STATUS” > status.txt# cat status.txt# mysql -t -u root -pNerv2019. -e “SHOW STATUS” > status.txt# cat status.txt# mysql -E -u root -pNerv2019. -e “SHOW STATUS” > status.txt# cat status.txt

# echo “SHOW STATUS” >> script.sql# cat script.sql# mysql -t -u root -pNerv2019. < script.sql# mysql -u root -pNerv2019. < script.sql > status.txt# cat status.txt

149

149

Engines● MyISAM● InnoDB● Memory● Archive● CSV● Merge● Federated● NDB● Blackhole● Example● MariaDB / Aria● Percona XtraDB● Percona XtraDB Cluster● Percona TokuDB

mysql> CREATE TABLE teste (coluna1 int) Engine=InnoDB;mysql> CREATE TABLE teste2 (coluna1 int) Engine=MyISAM;

150

150

Processos e Threads

Execute um teste de carga no MySQL.# yum -y install mysql-test# mysqlslap --user=root --password=Nerv2019. --auto-generate-sql --concurrency=10 --iterations=10 --number-char-cols=10 --number-int-cols=5 --engine=innodb

Durante a execução do teste, acompanhe no Linux, via top.

Durante a execução do teste, acompanhe no MySQL, via mysqladmin.# mysqladmin -u root -pNerv2019. status

# mysql -u root -pNerv2019.mysql> SHOW PROCESSLIST;mysql> SHOW FULL PROCESSLIST;

http://dev.mysql.com/doc/refman/5.7/en/general-thread-states.html

151

151

Parâmetros de otimizaçãoAltere todos os parâmetros abaixo no arquivo de parâmetros, e reinicie o MySQL.# vi /etc/my.cnf...[mysqld]max_connections = 800thread_cache_size = 100

innodb_buffer_pool_size = 512Mkey_buffer_size = 128M

read_buffer_size = 2Mread_rnd_buffer_size = 2Msort_bufer_size = 2Mjoin_bufer_size = 2M

152

152

Parâmetros de recuperação

Altere todos os parâmetros abaixo no arquivo de parâmetros, e reinicie o MySQL.tmp_table_size = 8Mtmpdir = /tmp/

slow_query_log_file = /var/log/mysql-slow.loglong_query_time = 5

innodb_log_file_size = 32Minnodb_log_files_in_group = 7innodb_log_buffer_size = 64Minnodb_flush_log_at_trx_comit = 1

Verificar parâmetros:mysql> SHOW VARIABLES LIKE 'read%buffer_size';

153

153

Bancos de Dados

Crie um novo banco de dados.# mysql -u root -pNerv2019.mysql> show databases;mysql> create database nerv;mysql> show databases;mysql> use nerv;mysql> show tables;

154

154

Estruturas físicas

# ls -lh /var/lib/mysql/total 29M-rw-rw----. 1 mysql mysql 18M Jan 24 14:45 ibdata1-rw-rw----. 1 mysql mysql 5.0M Jan 24 14:45 ib_logfile0-rw-rw----. 1 mysql mysql 5.0M Jan 24 14:45 ib_logfile1drwx--x--x. 2 mysql mysql 4.0K Jan 24 14:43 mysqlsrwxrwxrwx. 1 mysql mysql 0 Jan 24 14:45 mysql.sockdrwx------. 2 mysql mysql 4.0K Jan 24 15:12 nervdrwx------. 2 mysql mysql 4.0K Jan 24 14:43 performance_schema-rw-rw----. 1 mysql mysql 6 Jan 24 14:45 Proni-PC.localdomain.pid-rw-r--r--. 1 root root 112 Jan 24 14:43 RPM_UPGRADE_HISTORY-rw-r--r--. 1 mysql mysql 112 Jan 24 14:43 RPM_UPGRADE_MARKER-LASTdrwxr-xr-x. 2 mysql mysql 4.0K Jan 24 14:43 test

# ls -lh /var/lib/mysql/nerv/total 4.0K-rw-rw----. 1 mysql mysql 65 Jan 24 15:12 db.opt

155

155

Tabelas

mysql> use nerv;mysql> CREATE TABLE teste (coluna1 int, coluna2 char(50), coluna3 varchar(255)) Engine=InnoDB;mysql> show tables;O que a criação desta tabela alterou nas estruturas físicas?

mysql> CREATE TABLE teste2 (coluna1 int, coluna2 char(50), coluna3 varchar(255)) Engine=MyISAM;mysql> show tables;O que a criação desta tabela alterou nas estruturas físicas?

156

156

Transações e Isolamento

Execute INSERT de 10 registros na tabela teste.mysql> INSERT INTO teste VALUES (1, ‘A’, ‘AAAAAAAAAA’);mysql> INSERT INTO teste VALUES (1, ‘A’, ‘AAAAAAAAAA’);mysql> INSERT INTO teste VALUES (1, ‘A’, ‘AAAAAAAAAA’);mysql> INSERT INTO teste VALUES (1, ‘A’, ‘AAAAAAAAAA’);mysql> INSERT INTO teste VALUES (1, ‘A’, ‘AAAAAAAAAA’);mysql> INSERT INTO teste VALUES (1, ‘A’, ‘AAAAAAAAAA’);mysql> INSERT INTO teste VALUES (1, ‘A’, ‘AAAAAAAAAA’);mysql> INSERT INTO teste VALUES (1, ‘A’, ‘AAAAAAAAAA’);mysql> INSERT INTO teste VALUES (1, ‘A’, ‘AAAAAAAAAA’);mysql> INSERT INTO teste2 SELECT * from teste;mysql> SELECT * FROM teste;mysql> SELECT * FROM teste2;

Execute um UPDATE em todas os registros da teste.

Abra outra sessão, e execute SELECT em todos os dados da tabela.O que aconteceu?

Repita a operação, mas antes do UPDATE, coloque como abaixo.mysql> START TRANSACTION;mysql> UPDATE ...O que aconteceu?

157

157

Importação e Exportação

Exemplosmysql> SELECT * FROM t1 INTO OUTFILE '/var/lib/mysql-files/t1.txt';mysql> LOAD DATA INFILE '/var/lib/mysql-files/t1.txt' INTO TABLE t1;

Execute este procedimento para as tabelas que você criou.

158

158

Bin Logs

Adicione no /etc/my.cnf a linha abaixo, e reinicie o mysql.server-id=1log-bin=mysql-binexpire_logs_days=7

O que aconteceu no diretório de dados?

159

159

mysqldump

Execute um backup via mysqldump.# mysqldump -u root -pNerv2019. nerv > nerv.sql# mysqldump -u root -pNerv2019. --all-databases > nerv01.sql

Edite o arquivo gerado.O que ele contém?Como utilizar este backup?Quais suas desvantagens?

160

160

Alta Disponibilidade

MySQL Replication

161

Alta Disponibilidade

DRBD / Pacemaker / Corosync

162

Alta Disponibilidade

Windows Server Failover Clustering

163

Alta Disponibilidade

MySQL Cluster

164

Alta Disponibilidade

MySQL Fabric

165

Oracle

165

166

166

Versões e Edições● Oracle Database Express Edition● Oracle Database Personal Edition● Oracle Database Standard Edition One (<= 11gR2)● Oracle Database Standard Edition (<= 11gR2)● Oracle Database Standard Edition 2● Oracle Database Enterprise Edition

167

167

Versões e Edições

168

Instalação Oracle

169

Com o usuário oracle, acrescenter ao final do arquivo /home/oracle/.bash_profile as linhas abaixo.export TMP=/tmpexport TMPDIR=$TMPexport ORACLE_HOSTNAME=nerv01.localdomainexport ORACLE_UNQNAME=ORCLexport ORACLE_BASE=/u01/app/oracleexport ORACLE_HOME=$ORACLE_BASE/product/12.2.0.1/db_1export ORACLE_SID=ORCLexport ORACLE_TERM=xtermexport PATH=/usr/sbin:$PATHexport PATH=$ORACLE_HOME/bin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/libexport CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlibulimit -u 16384 -n 65536

169

Instalação Oracle

170

Com o usuário root, execute os pré-requisitos de instalação.# yum -y install oracle-database-server-12cR2-preinstall# mkdir -p /u01/app/oracle/product/12.2.0.1/db_1# chown -R oracle:oinstall /u01# chmod -R 775 /u01

Com o usuário oracle, descompacte e execute o instalador do Oracle Database Software.$ cd /home/oracle$ unzip -q linuxx64_12201_database.zip$ cd database$ ./runInstaller

Instalação Oracle

171

Instalação Oracle

172

Instalação Oracle

173

Instalação Oracle

174

Instalação Oracle

175

Instalação Oracle

176

Instalação Oracle

177

Instalação Oracle

178

Instalação Oracle

179

Instalação Oracle

180

Instalação Oracle

# /u01/app/oraInventory/orainstRoot.sh# /u01/app/oracle/product/12.2.0.1/db_1/root.shEnter the full pathname of the local bin directory: [/usr/local/bin]:<ENTER>...Do you want to setup Oracle Trace File Analyzer (TFA) now ? yes|[no] :yes...

181

Instalação Oracle

182

Configuração Listener - netca

183

Configuração Listener

184

Configuração Listener

185

Configuração Listener

186

Configuração Listener

187

Configuração Listener

188

Configuração Listener

189

Configuração Listener

190

Criação do Banco de Dados - dbca

191

Criação do Banco de Dados

192

Criação do Banco de Dados

193

Criação do Banco de Dados

194

Criação do Banco de Dados

195

Criação do Banco de Dados

196

Criação do Banco de Dados

197

Criação do Banco de Dados

198

Criação do Banco de Dados

199

Criação do Banco de Dados

200

Criação do Banco de Dados

201

Criação do Banco de Dados

202

Criação do Banco de Dados

203

Criação do Banco de Dados

204

Criação do Banco de Dados

205

Criação do Banco de Dados

206

Criação do Banco de Dados

207

Criação do Banco de Dados

208

208

SQL*PlusVerifique o LISTENER.$ lsnrctl status$ lsnrctl stop$ lsnrctl status$ lsnrctl start$ lsnrctl status

Execute logon no SQL*Plus via Sistema Operacional.$ sqlplus / AS SYSDBAPor que isto funcionou?

Execute logon no SQL*Plus via SQL*Net.$ sqlplus SYSTEM/Nerv2019@ORCLPor que isto funcionou?Como executar logon no computador do vizinho?

Crie uma entrada no arquivo tnsnames.ora para executar logon no computador do vizinho.$ vi $ORACLE_HOME/network/admin/tnsnames.ora

209

209

SQL*PlusVerifique o status da instância.SQL> SELECT STATUS FROM V$INSTANCE;SQL> SELECT HOST_NAME FROM V$INSTANCE;SQL> /SQL> LIST

Salve o SQL de verificação da instância em um arquivo.SQL> DEFINE _EDITOR=viSQL> EDIT...SELECT STATUS, HOST_NAME FROM V$INSTANCE/...

Execute o arquivo no SQL*Plus.SQL> HOST OU SQL> !SQL> HOST vi verifica_host.sql OU SQL> !vi verifica_host.sql...SELECT STATUS, HOST_NAME FROM V$INSTANCE;...

SQL> START verifica_host.sql OU SQL> @verifica_host.sql

210

210

SQL*PlusExecute o SQL abaixo:SQL> SELECT FILE_ID, FILE_NAME FROM DBA_DATA_FILES;

Crie o arquivo abaixo, com os seguintes comandos.$ORACLE_HOME/sqlplus/admin/glogin.sql

SET LINESIZE 300SET PAGESIZE 1000COLUMN FILE_NAME FORMAT A40SET TIMING ONSET TIME ONSET SQLPROMPT '&_user@&_connect_identifier> 'DEFINE _EDITOR=vi

Execute logon no SQL*Plus, e verifique o que mudou.

211

211

Alert Log

Verifique o Alert Log.$ tail -f /u01/app/oracle/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log

$ tail -f $ORACLE_BASE/diag/rdbms/<BancoEmMinúsculo>/<Instância EmMaiúsculo>/trace/alert_<InstânciaEmMaiúsculo>.log

212

212

Parâmetros de memória

Verificando parâmetros:SQL> SHOW PARAMETER SGA

Alterando parâmetro dinâmico:SQL> ALTER SYSTEM SET SGA_TARGET=3G;

Alterando parâmetro estático:SQL> ALTER SYSTEM SET SGA_MAX_SIZE=5G;SQL> ALTER SYSTEM SET SGA_MAX_SIZE=5G SCOPE=SPFILE;SQL> SHOW PARAMETER SGA

213

213

STARTUP / SHUTDOWNEstados da InstânciaSHUTDOWNSTARTUPMOUNTOPEN

Comandos STARTSQL> STARTUP;SQL> STARTUP NOMOUNT;SQL> ALTER DATABASE MOUNT;SQL> STARTUP MOUNT;SQL> ALTER DATABASE OPEN;SQL> STARTUP RESTRICT;SQL> STARTUP FORCE;

Comandos SHUTDOWNSQL> SHUTDOWN NORMAL;SQL> SHUTDOWN TRANSACTIONAL;SQL> SHUTDOWN IMMEDIATE;SQL> SHUTDOWN ABORT;

214

214

Modo ARCHIVELOG

Altere o Banco de Dados para o modo NOARCHIVELOG.SQL> SELECT LOG_MODE FROM V$DATABASE;SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP MOUNT;SQL> ALTER DATABASE NOARCHIVELOG;SQL> ALTER DATABASE OPEN;SQL> SELECT LOG_MODE FROM V$DATABASE

Altere o Banco de Dados para o modo ARCHIVELOG.SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP MOUNT;SQL> ALTER DATABASE ARCHIVELOG;SQL> ALTER DATABASE OPEN;SQL> SELECT LOG_MODE FROM V$DATABASE;

215

215

Estruturas Físicas e Lógicas

216

216

Estruturas lógicas e físicas

TABLESPACE SEGMENTSEXTENTS DATA BLOCKS

DATAFILE

217

217

Estruturas lógicas e físicas

218

Verifique o Espaço Físico.SQL> SELECT TABLESPACE_NAME, FILE_NAME, TO_CHAR(BYTES/1024/1024) MBFROM DBA_DATA_FILES ORDER BY 1;

Verifique o Espaço Lógico.SQL> SELECT TABLESPACE_NAME, TO_CHAR(SUM(BYTES)/1024/1024) MBFROM DBA_SEGMENTS GROUP BY TABLESPACE_NAME ORDER BY 1;

Crie uma TABLESPACE, e verifique novamente os Espaços Físico e Lógico.SQL> CREATE TABLESPACE TESTE DATAFILE '/u01/app/oracle/oradata/ORCL/teste01.dbf' SIZE 10M;

Crie uma tabela na TABLESPACE, e verifique novamente os Espaços Físico e Lógico.SQL> CREATE TABLE TESTE TABLESPACE TESTE AS SELECT * FROM ALL_OBJECTS;O que aconteceu?

Tablespaces e Datafiles

219

Aumente o DATAFILE, crie a tabela, insira dados nela, e verifique novamente os Espaços Físico e Lógico.SQL> ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCL/teste01.dbf' RESIZE 100M;SQL> CREATE TABLE TESTE TABLESPACE TESTE AS SELECT * FROM ALL_OBJECTS;SQL> INSERT INTO TESTE SELECT * FROM TESTE;SQL> INSERT INTO TESTE SELECT * FROM TESTE;SQL> INSERT INTO TESTE SELECT * FROM TESTE;...SQL> COMMIT;O que aconteceu?

Altere o DATAFILE, crie a tabela, insira mais dados nela, e verifique novamente os Espaços Físico e Lógico.SQL> ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/ORCL/teste01.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

Adicione um DATAFILE, insira mais dados na tabela, e verifique novamente os Espaços Físico e Lógico.SQL> ALTER TABLESPACE TESTE ADD DATAFILE '/u01/app/oracle/oradata/ORCL/teste_02.dbf' SIZE 10M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;

Tablespaces e Datafiles

220

O que é um schema?

A coleção de objetos gerenciados por um usuário é um SCHEMA

221

Como SYSTEM, crie o usuário TESTE.SQL> CREATE USER TESTE IDENTIFIED BY MinhaSenha;

Como SYSTEM, altere a senha do usuário TESTE.SQL> ALTER USER TESTE ACCOUNT UNLOCK IDENTIFIED BY Nerv2019;

Tente conectar com o usuário TESTE.$ sqlplus TESTE/Nerv2019O que aconteceu?

Como SYSTEM, Conceda o privilégio CREATE SESSION para o usuário TESTE.Em seguida, tente se logar novamente no SQL*Plus com o usuário TESTE.SQL> GRANT CREATE SESSION TO TESTE;

Crie uma tabela com o usuário TESTE.SQL> CREATE TABLE TABELA_TESTE (C1 NUMBER);O que aconteceu?

Como SYSTEM, conceda o privilégio de sistema RESOURCE para o usuário TESTE.Em seguida, tente criar novamente a tabela com o usuário TESTE.SQL> GRANT RESOURCE TO TESTE;

Usuários e Permissões

222

Com o usuário TESTE, insira dados na tabela.SQL> INSERT INTO TABELA_TESTE VALUES (1);O que aconteceu?

Como SYSTEM, consulte o usuário criado.SQL> SELECT DEFAULT_TABLESPACE FROM DBA_USERS WHERE USERNAME='TESTE';

Como SYSTEM, altere a TABLESPACE padrão do usuário TESTE.SQL> ALTER USER TESTE DEFAULT TABLESPACE TESTE;SQL> ALTER USER TESTE QUOTA 200M ON TESTE;

Como usuário TESTE, mova a Tabela para a TABLESPACE TESTE.SQL> ALTER TABLE TABELA_TESTE MOVE TABLESPACE TESTE;

Com o usuário TESTE, insira dados na tabela.SQL> INSERT INTO TABELA_TESTE VALUES (1);

Como SYSTEM, consulte os Segmentos do usuário TESTE.SQL> SELECT SEGMENT_NAME, SEGMENT_TYPE, sum(BYTES) FROM DBA_SEGMENTSWHERE OWNER ='TESTE'GROUP BY SEGMENT_NAME, SEGMENT_TYPEORDER BY 3 DESC;

Usuários e Permissões

223

Como SYSTEM, conceda privilégios em uma tabela se outro SCHEMA ao usuário TESTE.SQL> GRANT INSERT, DELETE, UPDATE, SELECT ON SYSTEM.HELP TO TESTE;

Como TESTE, consulte a tabela SYSTEM.HELP.SQL> SELECT * FROM SYSTEM.HELP;

Como SYSTEM, consulte os privilégios concedidos para o TESTE.SQL> SELECT GRANTEE, OWNER, TABLE_NAME, PRIVILEGE, GRANTORFROM DBA_TAB_PRIVS WHERE GRANTEE='TESTE' AND OWNER='SYSTEM' AND TABLE_NAME='HELP';

Como SYSTEM, revogue os privilégios concedidos para o usuário TESTE, e verifique.SQL> REVOKE DELETE,INSERT,UPDATE,SELECT ON SYSTEM.HELP FROM TESTE;

Usuários e Permissões

224

224

V$SESSION_WAIT

Execute novamente o cenário de Transação e Isolamento, e veja o que há na V$SESSION_WAIT.SQL> SELECT SID, EVENT, SECONDS_IN_WAIT FROM V$SESSION_WAIT;SQL> SELECT SID, EVENT, SECONDS_IN_WAIT FROM V$SESSION_WAIT WHERE WAIT_CLASS != 'Idle';

SQL> CREATE TABLE T1 AS SELECT * FROM ALL_OBJECTS;SQL> INSERT INTO T1 SELECT * FROM T1;SQL> INSERT INTO T1 SELECT * FROM T1;SQL> INSERT INTO T1 SELECT * FROM T1;SQL> INSERT INTO T1 SELECT * FROM T1;SQL> INSERT INTO T1 SELECT * FROM T1;SQL> INSERT INTO T1 SELECT * FROM T1;SQL> INSERT INTO T1 SELECT * FROM T1;SQL> INSERT INTO T1 SELECT * FROM T1;SQL> COMMIT;

Qual a diferença da V$SESSION_WAIT antes, durante e após a execução?

225

225

exp / imp e expdp / impdp

Exemplosexp / imp$ exp '"/ AS SYSDBA"' FULL=Y FILE=/home/oracle/FULL.dmp$ exp '"/ AS SYSDBA"' OWNER=HR FILE=HR.dmp$ imp '"/ AS SYSDBA"' FILE=HR.dmp FROMUSER=HR TOUSER=TESTE

expdp / impdp (Data Pump: >= 10g)$ expdp '"/ AS SYSDBA"' FULL=Y DUMPFILE=FULL.dump$ expdp '"/ AS SYSDBA"' SCHEMAS=HR DUMPFILE=HR.dump

SQL> GRANT UNLIMITED TABLESPACE TO TESTE;

$ impdp '"/ AS SYSDBA"' REMAP_SCHEMA=HR:TESTE DUMPFILE=HR.dump

$ impdp '"/ AS SYSDBA"' TABLES=HR.EMPLOYEES REMAP_TABLE=HR.EMPLOYEES:EMPLOYEES2 DUMPFILE=HR.dump EXCLUDE=COMMENT,CONSTRAINT,INDEX,TRIGGER

226

226

Estruturas físicasSQL> SELECT FILE_NAME FROM DBA_DATA_FILES;SQL> SELECT FILE_NAME FROM DBA_TEMP_FILES;SQL> SELECT FILE_NAME FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = ‘UNDOTBS1’;SQL> SELECT NAME FROM V$CONTROLFILE;SQL> SELECT MEMBER FROM V$LOGFILE;SQL> SHOW PARAMETER SPFILE;

$ rman target /RMAN> LIST ARCHIVELOG ALL;

227

227

Configuração Básica RMAN

Execute os comandos abaixo no RMAN.$ rman target /RMAN> SHOW All;RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 7;RMAN> CONFIGURE BACKUP OPTIMIZATION ON;RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO COMPRESSED BACKUPSET;RMAN> CONFIGURE COMPRESSION ALGORITHM 'HIGH' OPTIMIZE FOR LOAD TRUE AS OF RELEASE 'DEFAULT';

228

228

Backup Básico RMAN

Execute os comandos abaixo no RMAN.RMAN> BACKUP DATABASE;

RMAN> LIST ARCHIVELOG ALL;RMAN> BACKUP ARCHIVELOG ALL;RMAN> LIST ARCHIVELOG ALL;RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT;RMAN> LIST ARCHIVELOG ALL;

RMAN> LIST ARCHIVELOG ALL;RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;RMAN> LIST ARCHIVELOG ALL;

229

229

Alta Disponibilidade• Oracle RAC• Oracle Data Guard• Oracle Golden Gate• Oracle Streams

230

Perguntas?

Ricardo Portilho [email protected]