DBA Júnior - NERV

Preview:

Citation preview

DBA Júnior

Ricardo Portilho Proniricardo@nervinformatica.com.br

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.10● Oracle VirtualBox x64 6.1.2● 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, Powershell.● 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

Comunidades

List Yahoo Oracle Brhttps://www.mail-archive.com/oracle_br@yahoogrupos.com.br/

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

15

Treinamentos NervQuero ser um DBATreinamento 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

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

19

Brain Dumps

20

Múltiplos Bancos de Dados

21

Múltiplos Bancos de Dados

22

Linux

Sistema Operacional, Virtualização, Redes, Storage

23

Alta x Baixa plataforma

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)

2525

História do Unix

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

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

28

Linux Homologados para Oracle Database 12cR2

29

Download OEL 6

30

Download OEL 6

31

Download OEL 6

32

Download OEL 6

33

Instalação OEL 6

34

Instalação OEL 6

35

Instalação OEL 6

36

Instalação OEL 6

37

Instalação OEL 6

38

Instalação OEL 6

39

Instalação OEL 6

40

Instalação OEL 6

41

Instalação OEL 6

42

Instalação OEL 6

43

Instalação OEL 6

44

Instalação OEL 6

45

Instalação OEL 6

46

Instalação OEL 6

47

Instalação OEL 6

48

Instalação OEL 6

4949

Instalação OEL 6

50

Instalação OEL 6

51

Instalação OEL 6

52

Instalação OEL 6

53

Instalação OEL 6

54

Instalação OEL 6

55

Diretórios Linux

56

Instalação OEL 6

57

Instalação OEL 6

58

Instalação OEL 6

59

Instalação OEL 6

60

Instalação OEL 6

61

Instalação OEL 6

62

Instalação OEL 6

63

Instalação OEL 6

64

Instalação OEL 6

65

Instalação OEL 6

66

Instalação OEL 6

67

Instalação OEL 6

68

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

69

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 teste# ls -lh testeO que estes comandos fizeram?

70

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# grep -E 'fonts|gedit' install.log

# 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

71

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++

72

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?

73

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

74

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

75

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

76

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?

77

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

78

Shell

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

79

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

80

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?

81

Desempenho

82

Desempenho

$ free

$ vmstat$ vmstat -w$ vmstat 2$ vmstat -w 2$ vmstat -w 5

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

$ top

83

Logs

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

84

Virtualização Hard x Soft

85

Produtos de Virtualização Oracle

86

VMs e Containers

87

Produtos de Virtualização Oracle

88

Instalação Oracle VirtualBox

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

89

Criação VMs

90

Criação VMs

91

Criação VMs

92

Criação VMs

93

Criação VMs

94

Criação VMs

95

Criação VMs

96

Configuração VMs

97

Configuração VMs

98

Configuração VMs

99

Configuração VMs

100

Configuração VMs

101

Configuração VMs

102

Configuração VMs

103

Configuração VMs

104

Configuração VMs

105

Configuração VMs

106

Configuração VMs

107

Configuração VMs

108

Configuração VMs

109

Configuração VMs

110

Configuração VMs

111

Configuração VMs

112

Configuração VMs

113

Configuração VMs

114

PausePause VMs

115

Clone VMs

116

Clone VMs

117

Clone VMs

118

Clone VMs

119

Snapshot VMs

120

Snapshot VMs

121

Snapshot VMs

122

Export / Import Appliance

123

Export / Import Appliance

124

Export / Import Appliance

125

Export / Import Appliance

126

Export / Import Appliance

127

Redes TCP/IP

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

128

Configure as placas de rede.

Configuração de Rede

129

ssh / scp / ftp

Execute logon remoto no computador do seu vizinho.# ssh root@192.168.0.102# exit

Copie um arquivo do computador do seu vizinho para o seu.# scp root@192.168.0.102:/root/install.log /tmp/# scp root@192.168.0.102:/root/install.log /tmp/install.log# scp root@192.168.0.102:/root/install.log /tmp/install.tmp# scp root@192.168.0.102:/root/install.log .

Copie um arquivo de seu computador para o do seu vizinho.# scp /root/install.log root@192.168.0.102:/root/Desktop/install.log

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

130

mstsc / rdesktop

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

131

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 root@192.168.0.102# firefox

132

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=Nerv2021 /mnt/windows

133

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

134

RAID

135

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

NFS Server

136

Adicionar no arquivo /etc/fstab a linha abaixo.# vi /etc/fstab

...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?

NFS Client

137

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

138

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

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

iSCSI Initiator

139

MySQL

140

Por que MySQL?

141

Evolução MySQL

142

Edições - Community

143

Edições - Enterprise

144

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 ~]#

145

Instalação

146

Instalação

147

Instalação

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

# grep password /var/log/mysqld.log

# /usr/bin/mysqladmin -p -u root password 'Nerv2021.'# mysql -u root -pNerv2021.

148

Verificação

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

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

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

149

Programas Cliente

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

# mysql -u root -pNerv2021. -e "SHOW STATUS"

# mysql -u root -pNerv2021. -e "SHOW STATUS" > status.txt# cat status.txt# mysql -t -u root -pNerv2021. -e "SHOW STATUS" > status.txt# cat status.txt# mysql -E -u root -pNerv2021. -e "SHOW STATUS" > status.txt# cat status.txt

# echo "SHOW STATUS" >> script.sql# cat script.sql# mysql -t -u root -pNerv2021. < script.sql# mysql -t -u root -pNerv2021. < script.sql > status.txt# cat status.txt

150

Engines

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

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

151

Processos e Threads

Execute um teste de carga no MySQL.# yum -y install mysql-test# mysqlslap --user=root --password=Nerv2021. --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 -pNerv2021. status

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

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

152

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 = 2Mshort_bufer_size = 2Mjoin_bufer_size = 2M

153

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';

154

Bancos de Dados

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

155

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

156

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?

157

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 todos 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?

158

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.

159

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?

160

mysqldump

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

# mysqldump -u root -pNerv2021. --single-transaction --master-data=2 --all-databases > nerv01.sql

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

161

Alta Disponibilidade

MySQL Replication

162

Alta Disponibilidade

DRBD / Pacemaker / Corosync

163

Alta Disponibilidade

Windows Server Failover Clustering

164

Alta Disponibilidade

MySQL Cluster

165

Alta Disponibilidade

InnoDB Cluster

166

Oracle

167

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

168

Versões e Edições

169

Instalação Oracle

170

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/jlib

ulimit -u 16384 -n 65536

Instalação Oracle

171

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

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

181

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...

182

Instalação Oracle

183

Configuração Listener - netca

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

Configuração Listener

191

Criação do Banco de Dados - dbca

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

/u01/oradata/nerv01/FRA/{DB_UNIQUE_NAME}

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

Criação do Banco de Dados

209

SQL*Plus

Verifique 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/Nerv2021@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

210

SQL*Plus

Verifique 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

211

SQL*Plus

Execute 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.

212

Alert Log

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

$ORACLE_BASE/diag/rdbms/<BancoEmMinúsculo>/<Instância>/trace/alert_<Instância>.log

213

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

214

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;

215

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;

216

Estruturas Físicas e Lógicas

217

Estruturas lógicas e físicas

TABLESPACE SEGMENTSEXTENTSDATA BLOCKS

DATAFILE

218

Estruturas lógicas e físicas

219

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

220

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

221

O que é um schema?

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

222

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 Nerv2021;

Tente conectar com o usuário TESTE.$ sqlplus TESTE/Nerv2021O 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

223

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

224

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

225

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?

226

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

227

Estruturas físicas

SQL> 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;

228

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';RMAN> SHOW All;

229

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;

230

Alta Disponibilidade

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

231

Perguntas?

Ricardo Portilho Proniricardo@nervinformatica.com.br