DBA Júnior Ricardo Portlho Proni ricardo@nervinformatca.com.br Esta obra está licenciada sob a licença Creatve Commons Atribuição-SemDerivados 3.0 Brasil. Para ver uma cópia desta licença, visite htp://creatvecommons.org/licenses/by-nd/3.0/br/.
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? 2
Agenda Linux (Sistema Operacional, Virtualização, Redes, Storage) MySQL Oracle 3 3
Produtos utlizados no Treinamento Oracle Enterprise Linux x64 6 Oracle VirtualBox x64 5.1 Windows Server 2008 x32 MySQL Community Server x64 5.6 Oracle Database Enterprise Editon x64 12cR2 4
Linux Sistema Operacional, Virtualização, Redes, Storage 5 5
Alta x Baixa plataforma 6 6
Plataformas e Arquiteturas Alpha (64 bits) ARM 32 (32 bits) ARM 64 (64 bits) AVR32 (32 bits) Blackfn (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) 7 7
História do Unix 8 8
Distribuições, Edições, Versões htps://upload.wikimedia.org/wikipedia/commons/1/1b/linux_ddistributon_dtiimeline.svg htp://upload.wikimedia.org/wikipedia/commons/e/ed/linuxdistrotiimeline.png 9 9
Distribuições, Edições, Versões 10 10
Linux Homologados para Oracle Database 12cR2 11 11
Download OEL 6 12 12
Download OEL 6 13 13
Download OEL 6 14 14
Download OEL 6 15 15
Instalação OEL 6 16 16
Instalação OEL 6 17 17
Instalação OEL 6 18 18
Instalação OEL 6 19 19
Instalação OEL 6 20 20
Instalação OEL 6 21 21
Instalação OEL 6 22 22
Instalação OEL 6 23 23
Instalação OEL 6 24 24
Instalação OEL 6 25 25
Instalação OEL 6 26 26
Instalação OEL 6 27 27
Instalação OEL 6 28 28
Instalação OEL 6 29 29
Instalação OEL 6 30 30
Instalação OEL 6 31 31
Instalação OEL 6 32 32
Instalação 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
Manipulação de Arquivos Execute 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 Tierminal.) # yum -y update Abra outro terminal, e verifque 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 51 51
Manipulação de Arquivos # cd # pwd Em 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 O que estes comandos fzeram? 52 52
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.log ESC e depois i ESC e depois x ESC e depois dd ESC e depois :w ESC e depois :q ESC e depois :wq ESC e depois :q! --- insere texto. --- remove uma letra. --- remove uma linha. --- salva as alterações. --- sai do vi. --- salva as alterações, e sai do vi. --- sai do vi sem salvar as alterações. # clear O que a seta para cima faz? # cat.bash_history 53 53
Gerenciamento de Pacotes Coloque o DVD. Verifque 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++ 54 54
Partcionamento e Sistema de Arquivos Crie uma partção com o espaço livre. # fdisk -l # fdisk /dev/sda Digite: p <Enter> Digite: n <Enter> <Enter> <Enter> Digite: p <Enter> Digite: w <Enter> # fdisk -l Formate esta partção com o Sistema de Arquivos ext4. # mkfs.ext4 /dev/sda8 O que aconteceu? 55 55
Partcionamento e Sistema de Arquivos Crie um diretório, e monte o dispositvo nele. # mkdir /u01 # mount /dev/sda8 /u01 Faça este sistema de arquivos ser montado automatcamente. # vi /etc/fstab... /dev/sda8 /u01 ext4 defaults 1 2... Teste se o arquivo /etc/fstab está correto. # umount /u01 # mount /u01 56 56
Services Verifque se o Apache está confgurado para iniciar automatcamente. # 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 57 57
Usuários, Grupos, Permissões Verifque 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 58 58
Usuários, Grupos, Permissões Torne-se o usuário oracle, e verifque 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.log O que aconteceu? 59 59
Shell Com o usuário oracle, crie um script Bash. $ vi teste.sh... #!/bin/bash date echo Teste... Execute-o: $ teste.sh O que aconteceu? $ sh teste.sh $ /home/oracle/teste.sh $./teste.sh O que aconteceu? $ chmod +x /home/oracle/teste.sh $ /home/oracle/teste.sh $./teste.sh 60 60
Shell Execute-o diretamente desta vez. $ teste.sh $ echo $PATH $ export PATH=/home/oracle/:$PATH $ echo $PATH $ teste.sh O que aconteceu? 61 61
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 62 62
Processos Verifque os processos em execução. $ ps $ ps a $ ps aux $ ps aux grep gnome $ pstree Qual a diferença entre estes comandos? Finalize o seu processo bash. $ ps a $ kill 2120 $ kill -9 2120 O que aconteceu? 63 63
Desempenho 64 64
Desempenho $ free $ vmstat $ vmstat 2 $ vmstat 5 $ iostat -xd $ iostat -xd 2 $ iostat -xd 5 $ top 65 65
Logs Verifque os logs mais atuais, e que informação eles têm. $ ls -lh /var/log $ su # ls -lh /var/log # cat /var/log/messages 66 66
Virtualização Hard x Sof 67 67
Produtos de Virtualização Oracle 68 68
Produtos de Virtualização Oracle 69 69
Instalação Oracle VirtualBox # ls -lh /root # rpm -ivh /root/virtualbox* 70 70
Criação VMs 71 71
Criação VMs 72 72
Criação VMs 73 73
Criação VMs 74 74
Criação VMs 75 75
Criação VMs 76 76
Criação VMs 77 77
Confguração VMs 78 78
Confguração VMs 79 79
Confguração VMs 80 80
Confguração VMs 81 81
Confguração VMs 82 82
Confguração VMs 83 83
Confguração VMs 84 84
Confguração VMs 85 85
Confguração VMs 86 86
Confguração VMs 87 87
Confguração VMs 88 88
Confguração VMs 89 89
Confguração VMs 90 90
Confguração VMs 91 91
Confguração VMs 92 92
Confguração VMs 93 93
Confguração VMs 94 94
Clone VMs 95 95
Clone VMs 96 96
Clone VMs 97 97
Clone VMs 98 98
Snapshot VMs 99 99
Snapshot VMs 100 100
Snapshot VMs 101 101
Export / Import Appliance 102 102
Export / Import Appliance 103 103
Export / Import Appliance 104 104
Export / Import Appliance 105 105
Export / Import Appliance 106 106
Redes TCP/IP IP / Mask/ Gateway / DNS DHCP Routng / Firewall / Proxy IDS / IPS VLAN Qual seu IP / Mask / Gateway / DNS? 107 107
Confguração de Rede Confgure as placas de rede. 108 108
ssh / scp / fp 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 Copie um arquivo de seu computador para o do seu vizinho. # scp /root/install.log root@192.168.0.102:/root/desktop/install.log 109 109
mstsc / rdesktop Execute logon remoto no Windows Server de sua VM. # rdesktop IpDaVMWindows Por que não funciona? 110 110
VNC / Xserver Execute logon remoto gráfco no computador do seu vizinho. # vncviewer 192.168.0.102 Por que não funciona? Execute logon remoto no computador do seu vizinho. # ssh -CX root@192.168.0.102 # firefox 111 111
Windows Share Crie um compartlhamento 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 compatbilidade com Samba em seu computador. # yum -y install samba-client samba-common cifs-utils Monte este compartlhamento em seu computador. # mkdir /mnt/windows # mount -t cifs //192.168.0.40/temp -o username=administrator,password=nerv2017 /mnt/windows 112 112
Tecnologias Storage - IDE, ATiA, SATiA, SCSI - SSD, Cache - RAID (próxima página) - SAN (Storage Area Network), NAS (Network Atached Storage) - Cluster Filesystems Protocolos - iscsi - Fiber Channel (FC) - ATiA-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) - Tihe SCSTi Linux SCSI target sofware stack - Linux LIO Unifed Tiarget sofware stack - Service Locaton Protocol 113 113
RAID 114 114
NFS Server 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 chkconfig rpc on service nfs start service rpc start 115 115
NFS Client Adicionar no arquivo /etc/fstab a linha abaixo. nerv09:/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? 116 116
iscsi Initator Instale e atve o pacote iscsi Initator nos dois Nodes. # yum -y install iscsi-initiator-utils # service iscsid start # chkconfig iscsid on Verifque os Discos exportados no Storage, nos dois Nodes. # iscsiadm -m discovery -t sendtargets -p 192.168.0.201 -l Verifque se o disco foi confgurado localmente. # fdisk -l 117 117
iscsi Initator Partcione o novo disco. # fdisk /dev/sdb Digite: n <Enter> Digite: p <Enter> Digite: 1 <Enter> <Enter> <Enter> Digite: w <Enter> Formate, crie um ponto de montagem, e monte a partção deste novo disco. 118
MySQL 119 119
Por que MySQL? 120 120
Evolução MySQL 121 121
Edições - Community 122 122
Edições - Enterprise 123 123
Instalação [root@melquior ~]# yum -y install mysql-server... [root@melquior ~]# rpm -qa grep mysql mysql-server-5.1.73-3.el6_5.x86_64 mysql-libs-5.1.73-3.el6_5.x86_64 mysql-5.1.73-3.el6_5.x86_64 [root@melquior ~]# 124 124
Instalação 125 125
Instalação 126 126
Instalação Instale o MySQL. # yum -y install https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm # yum -y install mysql-server O que aconteceu? # vi /etc/yum.repos.d/mysql-community.repo... name=mysql 5.6 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/ enabled=1... name=mysql 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/ enabled=0 gpgcheck=1... # # # # yum -y install mysql-server chkconfig mysqld on service mysqld start /usr/bin/mysqladmin -u root password 'Nerv2017' 127 127
Verifcação Acesse o MySQL. # mysql -u root -pnerv2017 mysql> exit; Verifque se o MySQL está atvo. # mysqladmin -u root -pnerv2017 status Verifque o Log do MySQL. # tail /var/log/mysqld.log 128 128
Programas Cliente # mysql -u root -pnerv2017 mysql> SHOW STATUS; mysql> EXIT; # mysql -u root -pnerv2017 -e SHOW STATUS # # # # # # mysql -u root -pnerv2017 -e SHOW STATUS > status.txt cat status.txt mysql -t -u root -pnerv2017 -e SHOW STATUS > status.txt cat status.txt mysql -E -u root -pnerv2017 -e SHOW STATUS > status.txt cat status.txt # # # # # echo SHOW STATUS >> script.sql cat script.sql mysql -t -u root -pnerv2017 < script.sql mysql -u root -pnerv2017 < script.sql > status.txt cat status.txt 129 129
Engines MyISAM InnoDB Memory Archive CSV Merge Federated NDB Blackhole Example MariaDB / Aria Percona XtraDB Percona XtraDB Cluster Percona TiokuDB mysql> CREATE TABLE teste (coluna1 int) Engine=InnoDB; mysql> CREATE TABLE teste2 (coluna1 int) Engine=MyISAM; 130 130
Processos e Threads Execute um teste de carga no MySQL. # yum -y install mysql-test # mysqlslap --user=root --password=nerv2017 --auto-generatesql --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 -pnerv2017 status # mysql -u root -pnerv2017 mysql> SHOW PROCESSLIST; mysql> SHOW FULL PROCESSLIST; htp://dev.mysql.com/doc/refman/5.6/en/general-thread-states.html 131 131
Parâmetros de otmização Altere todos os parâmetros abaixo no arquivo de parâmetros, e reinicie o MySQL. # vi /etc/my.cnf... [mysqld] max_connections = 800 thread_cache_size = 100 innodb_buffer_pool_size key_buffer_size = 128M = 512M read_buffer_size = 2M read_rnd_buffer_size = 2M sort_bufer_size = 2M join_bufer_size = 2M Verifque o perfl de conexões no MySQL. mysql> SHOW STATUS LIKE 'Threads%'; 132 132
Parâmetros de recuperação Altere todos os parâmetros abaixo no arquivo de parâmetros, e reinicie o MySQL. tmp_table_size = 8M tmpdir = /tmp/ slow_query_log_file = /var/log/mysql-slow.log long_query_time = 5 innodb_log_file_size = 32M innodb_log_files_in_group = 7 innodb_log_buffer_size = 64M innodb_flush_log_at_trx_comit = 1 Verifque o perfl de tabelas temporárias no MySQL. mysql> SHOW STATUS LIKE 'Created_tmp%'; 133 133
Bancos de Dados Crie um novo banco de dados. # mysql -u root -pnerv2017 mysql> show databases; mysql> create database nerv; mysql> show databases; mysql> use nerv; mysql> show tables; 134 134
Estruturas fsicas # ls -lh /var/lib/mysql/ total 29M -rw-rw----. 1 mysql mysql -rw-rw----. 1 mysql mysql -rw-rw----. 1 mysql mysql drwx--x--x. 2 mysql mysql srwxrwxrwx. 1 mysql mysql drwx------. 2 mysql mysql drwx------. 2 mysql mysql -rw-rw----. 1 mysql mysql -rw-r--r--. 1 root root -rw-r--r--. 1 mysql mysql drwxr-xr-x. 2 mysql mysql 18M 5.0M 5.0M 4.0K 0 4.0K 4.0K 6 112 112 4.0K Jan Jan Jan Jan Jan Jan Jan Jan Jan Jan Jan 24 24 24 24 24 24 24 24 24 24 24 14:45 14:45 14:45 14:43 14:45 15:12 14:43 14:45 14:43 14:43 14:43 ibdata1 ib_logfile0 ib_logfile1 mysql mysql.sock nerv performance_schema Proni-PC.localdomain.pid RPM_UPGRADE_HISTORY RPM_UPGRADE_MARKER-LAST test # ls -lh /var/lib/mysql/nerv/ total 4.0K -rw-rw----. 1 mysql mysql 65 Jan 24 15:12 db.opt 135 135
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 fsicas? 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 fsicas? 136 136
Transações e Isolamento Execute INSERT de 10 registros em cada uma das tabelas que você criou. 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? 137 137
Importação e Exportação Exemplos mysql> 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. 138 138
Bin Logs Adicione no /etc/my.cnf a linha abaixo, e reinicie o mysql. log-bin=mysql-bin expire_logs_days=7 O que aconteceu no diretório de dados? 139 139
mysqldump Execute um backup via mysqldump. # mysqldump -u root -pnerv2017 nerv > nerv.sql # mysqldump -u root -pnerv2017 --all-databases > nerv01.sql Edite o arquivo gerado. O que ele contém? Como utlizar este backup? Quais suas desvantagens? 140 140
INFORMATION_SCHEMA Verifque as tabelas do banco de dados INFORMATION_SCHEMA. Quantas tabelas você possui em todo o MySQL? E em seu banco de dados? 141 141
Alta Disponibilidade MySQL Replicaton 142 142
Alta Disponibilidade DRBD / Pacemaker / Corosync 143
Alta Disponibilidade Windows Server Failover Clustering 144
Alta Disponibilidade MySQL Cluster 145
Alta Disponibilidade MySQL Fabric 146
Oracle 147 147
Versões e Edições Oracle Database Express Editon Oracle Database Personal Editon Oracle Database Standard Editon One (<= 11gR2) Oracle Database Standard Editon (<= 11gR2) Oracle Database Standard Editon 2 Oracle Database Enterprise Editon 148 148
Versões e Edições 149 149
Instalação Oracle 150
Instalação Oracle Com o usuário oracle, ACRESCENTAR NO FINAL do arquivo /home/oracle/.bash_profle as linhas abaixo. export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=nerv01.localdomain export ORACLE_UNQNAME=ORCL export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/12.2.0.1/db_1 export ORACLE_SID=ORCL export ORACLE_TERM=xterm export PATH=/usr/sbin:$PATH export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi 151 151
Instalação Oracle 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 Sofware. $ $ $ $ cd /home/oracle unzip -q linuxx64_12201_database.zip cd database./runinstaller 152
Instalação Oracle 153
Instalação Oracle 154
Instalação Oracle 155
Instalação Oracle 156
Instalação Oracle 157
Instalação Oracle 158
Instalação Oracle 159
Instalação Oracle 160
Instalação Oracle 161
Instalação Oracle # /u01/app/orainventory/orainstroot.sh # /u01/app/oracle/product/12.2.0.1/db_1/root.sh Enter 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 162...
Instalação Oracle 163
Confguração Listener - netca 164
Confguração Listener 165
Confguração Listener 166
Confguração Listener 167
Confguração Listener 168
Confguração Listener 169
Confguração Listener 170
Confguração Listener 171
Criação do Banco de Dados - dbca 172
Criação do Banco de Dados 173
Criação do Banco de Dados 174
Criação do Banco de Dados 175
Criação do Banco de Dados 176
Criação do Banco de Dados 177
Criação do Banco de Dados 178
Criação do Banco de Dados 179
Criação do Banco de Dados 180
Criação do Banco de Dados 181
Criação do Banco de Dados 182
Criação do Banco de Dados 183
Criação do Banco de Dados 184
Criação do Banco de Dados 185
Criação do Banco de Dados 186
Criação do Banco de Dados 187
Criação do Banco de Dados 188
Criação do Banco de Dados 189
Arquitetura Oracle 190 190
Enterprise Manager 191 191
Enterprise Manager 192 192
Enterprise Manager Express Execute logon no Enterprise Manager Express como SYSTEM. 193 193
Enterprise Manager Express Execute logon no Enterprise Manager Express como SYSTEM. 194 194
SQL Developer Execute o SQL Developer, e crie uma conexão ao seu banco de dados. $ $ORACLE_HOME/sqldeveloper/sqldeveloper.sh 195 195
SQL Developer 196 196
SQL*Plus Verifque o LISTENER. $ lsnrctl status $ lsnrctl stop $ lsnrctl status $ lsnrctl start $ lsnrctl status Execute logon no SQL*Plus via Sistema Operacional. $ sqlplus / AS SYSDBA Por que isto funcionou? Execute logon no SQL*Plus via SQL*Net. $ sqlplus SYSTEM/Nerv2017@ORCL Por 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 197 197
SQL*Plus Verifque 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 verifcação da instância em um arquivo. SQL> DEFINE _EDITOR=vi SQL> EDIT Execute o arquivo no SQL*Plus. SQL>!vi verifica_host.sql SQL> @verifica_host.sql SQL> START verifica_host.sql 198 198
SQL*Plus Crie o arquivo abaixo, com os seguintes comandos. $ORACLE_HOME/sqlplus/admin/glogin.sql SET LINESIZE 300 SET PAGESIZE 1000 COLUMN FILE_NAME FORMAT A40 SET TIMING ON SET TIME ON SET SQLPROMPT '&_user@&_connect_identifier> ' DEFINE _EDITOR=vi Execute logon no SQL*Plus, e verifque o que mudou. 199 199
Alert Log Verifque o Alert Log. $ vi /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log $ tail -f /u01/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log 200 200
Confguração de Memória SGA Manual e PGA Manual (< 9i) db_dcache_dsize = 10G shared_dpool_dsize = 2G large_dpool_dsize = 128M java_dpool_dsize = 128M streams_dpool_dsize = 128M sort_darea_dsize = 1M / sort_darea_dretained_dsize = 1M / hash_darea_dsize = 1M / bitmap_dmerge_darea_dsize = 1M / create_dbitmap_darea_dsize = 1M SGA Manual e PGA Automátca (>= 9i) sga_dmax_dsize = 15G db_dcache_dsize = 10G shared_dpool_dsize = 2G large_dpool_dsize = 128M java_dpool_dsize = 128M streams_dpool_dsize = 128M pga_daggregate_dtarget = 1G 201
Confguração de Memória Semi-automátco ASMM (Automatc Segment Memory Management) (>= 10g) sga_dmax_dsize = 15G sga_dtarget = 15G pga_daggregate_dtarget = 1G pga_daggregate_dlimit = 2G (>= 12c) db_dcache_dsize = 10G Automátco ASMM (Automatc Segment Memory Management) (>= 11g) memory_dmax_dtarget = 0 memory_dtarget = 0 sga_dmax_dsize = 15G sga_dtarget = 15G pga_daggregate_dtarget = 1G pga_daggregate_dlimit = 2G (>= 12c) Automátco AMM (Automatc Memory Management) (>= 11g) memory_dmax_dtarget = 16G memory_dtarget = 16G sga_dtarget = 0 pga_daggregate_dtarget = 0 pga_daggregate_dlimit = 2G (>= 12c) 202 202
Parâmetros de memória Verifcando parâmetros: SQL> SHOW PARAMETER SGA Alterando parâmetro dinâmico: SQL> ALTER SYSTEM SET SGA_TARGET=512M; Alterando parâmetro estátco: SQL> ALTER SYSTEM SET SGA_MAX_SIZE=1G SCOPE=SPFILE; 203 203
STARTUP / SHUTDOWN Estados da Instância SHUTDOWN STARTUP MOUNT OPEN Comandos SQL> STARTUP; SQL> STARTUP NOMOUNT; SQL> ALTER DATABASE MOUNT; SQL> STARTUP MOUNT; SQL> ALTER DATABASE OPEN; SQL> STARTUP RESTRICT; SQL> STARTUP FORCE; SQL> SQL> SQL> SQL> SHUTDOWN SHUTDOWN SHUTDOWN SHUTDOWN NORMAL; IMMEDIATE; TRANSACTIONAL; ABORT; 204 204
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; 205 205
Estruturas Físicas e Lógicas 206 206
Estruturas lógicas e fsicas TiABLESPACE SEGMENTiS EXTiENTiS DATiA BLOCKS DATiAFILE 207 207
Tablespaces e Datafles Verifque o Espaço Físico. SQL> SELECT TABLESPACE_NAME, FILE_NAME, TO_CHAR(BYTES) FROM DBA_DATA_FILES ORDER BY 1; Verifque o Espaço Lógico. SQL> SELECT TABLESPACE_NAME, TO_CHAR(SUM(BYTES)) FROM DBA_SEGMENTS GROUP BY TABLESPACE_NAME ORDER BY 1; Crie uma TABLESPACE, e verifque novamente os Espaços Físico e Lógico. SQL> CREATE TABLESPACE TESTE DATAFILE '/u01/app/oracle/oradata/orcl/teste01.dbf' SIZE 10M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED; Adicione um DATAFILE, e verifque 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; 208
Tablespaces e Datafles Reajuste o tamanho de um DATAFILE, e verifque novamente os Espaços Físico e Lógico. SQL> ALTER DATABASE DATAFILE '/u01/app/oracle/oradata/orcl/teste_02.dbf' RESIZE 20M; Exclua a TABLESPACE. SQL> DROP TABLESPACE TESTE INCLUDING CONTENTS AND DATAFILES; Crie novamente a TABLESPACE. 209
O que é um schema? A coleção de objetos gerenciados por um usuário é um SCHEMA 210
Usuários e Permissões 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 Nerv2017; Tente conectar com o usuário TESTE. $ sqlplus TESTE/Nerv2017 O 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; 211
Usuários e Permissões 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_SEGMENTS WHERE OWNER ='TESTE' GROUP BY SEGMENT_NAME, SEGMENT_TYPE 212 ORDER BY 3 DESC;
Usuários e Permissões 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, GRANTOR FROM 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 verifque. SQL> REVOKE DELETE,INSERT,UPDATE,SELECT ON SYSTEM.HELP FROM TESTE; 213
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'; Qual a diferença da V$SESSION_WAIT antes, durante e após a execução? 214 214
exp / imp e expdp / impdp Exemplos exp / imp $ exp FULL=Y $ exp SYSTEM/Nerv2017 OWNER=HR $ imp FILE=expdat.dmp FROMUSER=HR TOUSER=TESTE expdp / impdp (Data Pump: >= 10g) $ expdp FULL=Y DUMPFILE=FULL.dump $ expdp SYSTEM/Nerv2017 SCHEMAS=HR $ impdp SYSTEM/Nerv2017 REMAP_SCHEMA=HR:TESTE 215 215
Estruturas fsicas SQL> SELECTi FILE_DNAME FROM DBA_DDATiA_DFILES; SQL> SELECTi FILE_DNAME FROM DBA_DTiEMP_DFILES; SQL> SELECTi FILE_DNAME FROM DBA_DDATiA_DFILES WHERE TiABLESPACE_DNAME = UNDOTiBS1 ; SQL> SELECTi NAME FROM V$CONTiROLFILE; SQL> SELECTi MEMBER FROM V$LOGFILE; RMAN> LISTi ARCHIVELOG ALL; SQL> SHOW PARAMETiER SPFILE; 216 216
Confguraçã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'; 217 217
Backup Básico RMAN Execute os comandos abaixo no RMAN. RMAN> BACKUP DATABASE; RMAN> RMAN> RMAN> RMAN> RMAN> LIST ARCHIVELOG ALL; BACKUP ARCHIVELOG ALL; LIST ARCHIVELOG ALL; BACKUP ARCHIVELOG ALL DELETE INPUT; LIST ARCHIVELOG ALL; RMAN> LIST ARCHIVELOG ALL; RMAN> BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT; RMAN> LIST ARCHIVELOG ALL; 218 218
Alta Disponibilidade Oracle RAC Oracle Data Guard Oracle Golden Gate Oracle Streams 219 219
Perguntas? Ricardo Portlho Proni ricardo@nervinformatca.com.br 220