Upload
others
View
14
Download
0
Embed Size (px)
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.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/[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
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 [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
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 [email protected]# 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