Instalando Oracle 11g R2 Standalone com ASM Grid Infrastructure no Linux 6.6
Para os desavisados de plantão, apartir do Oracle 11gR2, a utilização do ASM no banco de dados Oracle, é necessário instalar o Grid Infrastructure, não sendo mais possível com os binários do Oracle 11g.
No Oracle 11g R2 o ASM (Automatic Storage Management) e o software de Clusterware para uso de banco de dados em RAC (Real Application Clusters) tiveram suas instalações unificadas em um único setup na qual foi chamado de Oracle Grid Infrastructure.
Automatic Storage Management (ASM) é um recurso fornecido pela Oracle no banco de dados Oracle 10g release 1 em diante. ASM tem como objetivo simplificar o gerenciamento de arquivos de banco de dados. Para isso, fornece ferramentas para gerenciar file systems e volumes diretamente do banco de dados, permitindo que os DBAs, possam controlar volumes e discos com instruções de SQL. Assim, os DBAs não precisam de ter habilidades extras em file systems específico ou gerenciadores de volume (que normalmente operam no nível do sistema operacional).
O intuito deste post é mostra a instalação do Grid Infrastructure do Oracle, em um ambiente Linux com um banco de dados Standalone, utilizando o virtualbox o principal motivo é criar um ambiente onde se possa estudar melhor os recursos do ASM sem a necessidade de criar um RAC. Mais nada impede que você possa encontrar um ambiente de produção Standalone com ASM.
Software usado:
- Oracle Virtual Box – 64 bit
- Oracle Enterprise Linux 6.6 – 64 bit
- Oracle Database 11G Release 2(11.2.0.3) – 64 bit for Linux
Binarios
versão 11.2.0.3 – 64bits
O binário utilizado 11.2.0.3 somente está disponível para quem tem acesso no metalink da oracle, caso você não possua acesso pode utilizar a versão 11.2.0.1
p10404530_112030_Linux-x86-64_1of7.zip – database software
p10404530_112030_Linux-x86-64_2of7.zip – database software
p10404530_112030_Linux-x86-64_3of7.zip – grid software
versão 11.2.0.1 – 64bits
Página da oracle para baixar os arquivos clique aqui.
linux.x64_11gR2_database_1of2.zip – database software
linux.x64_11gR2_database_2of2.zip – database software
linux.x64_11gR2_grid.zip – grid software
Bibliotecas do ASM:
Página da oracle para baixar os arquivos clique aqui.
Obs: Toda instalação ASMLib requer os pacotes oraclesamlib e oracleasm-support
apropriados para a máquina onde vai ser instalado.
O oracleasm kernel driver é construido dentro do Unbreakable Enterprise Kernel para Oracle Linux 6 e não precisa ser instalado manualmente.
The oracleasm kernel driver for the 64-bit (x86_64) Red Hat Compatible Kernel for Oracle Linux 6 can be installed manually from ULN or http://public-yum.oracle.com using the yum tool:
# yum install kmod-oracleasm
This kernel driver is not version-specific and does not need to be upgraded when the kernel is upgraded.
Arquivo necessários para ASM
oracleasmlib-2.0.12-1.el6.x86_64.rpm
oracleasm-support-2.1.8-1.el6.x86_64.rpm
Dados do Host:
hostame – oraclegrid
ip – 192.168.0.18
- 30G disco local
- 3G memoria ram
Abaixo alguns posts para ajuda-lo na instalação do virtualbox e do linux.
Uma vez o Oracle Linux 6.6 instalado podemos criar os discos na máquina virtual que será utilizando pelo ASM, devemos dar um shutdown no linux e ir na configuração da máquina virtual para adicionar os novos discos.
Discos adicionados:
CRSDISK1 – 500MB
CRSDISK2 – 500MB
– for CRSVOL1 disk where Cluster Ready Services (CRS) files will be stored. CRS provides many system management services and interacts with the vendor clusterware to coordinate cluster membership information.
AMSDISK1 – 5GB
ASMDISK2 – 5GB
– disk for DATAVOL1 disk. Here database will keep all datafiles, control files, log files…
FRADISK1 – 2GB
FRADISK2 – 2GB
FRADISK3 – 2GB
– disk for FRAVOL1 disk for database Fast Recovery Area (FRA) files. For example: database backup files, copy of database control files.
No virtualbox selecione a máquina virtual que você vai trabalhar e vá em configurações, vai em armazenamento, clique em adiciona disco rígido e vá adicionando os discos conforme abaixo, repetido o processo para cada disco e configurando seu tamanho.
Ficará da seguinte forma:
Com o discos adicionados na máquina virtual, já podemos começar o processo de configuração e instalação do Oracle grid.
1 – Configurando o usuário do ASM (Grid) e do Oracle
Para uma instancia ASM é recomendado usar um usuário separado do usuário Oracle
Criar um usuário “grid”, criando um diretório ASM_HOME para o software do clusterware.
# Criando um usuário oracle
[root@oraclegrid:~]#
groupadd -g 501 oinstall |
[root@oraclegrid:~]# id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba),503(oper)
# Crie um password para o usuário oracle
[root@oraclegrid:~]# passwd oracle |
Changing password for user oracle.
New password: xxxxxxxxxxx
Retype new password: xxxxxxxxxxx
passwd: all authentication tokens updated successfully.
# Criando os diretórios para o usuário oracle
[root@oraclegrid ~]#
mkdir -p /u01/app/oracle
chown oracle:oinstall /u01/app/oracle
chmod -R 775 /u01
# Criando um usuário para o grid
[root@oraclegrid ~]#
groupadd -g 1200 asmadmin groupadd -g 1201 asmdba groupadd -g 1202 asmoper useradd -m -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,dba -d /home/grid -s /bin/bash grid [root@oraclegrid ~]# id grid uid=1100(grid) gid=1000(oinstall) groups=1000(oinstall),1200(asmadmin), 1201(asmdba),1202(asmoper)
# Setando a senha para novo usuário grid [root@oraclegrid]# passwd grid Changing password for user grid. New UNIX password: xxxxxxxxxxx Retype new UNIX password: xxxxxxxxxxx passwd: all authentication tokens updated successfully. # Criando diretórios para grid home [root@oraclegrid ~]# mkdir -p /u01/app/grid mkdir -p /u01/app/11.2.0/grid chown -R grid:oinstall /u01 chown oracle:oinstall /u01/app/oracle
##################################################################################
Caso você não queira criar um usuário separado para o grid você pode seguir os
passos abaixo:
Com a instalação do Grid, ele requer três novos grupos, vamos criar ele e adicionar estes grupos ao usuário Oracle.
groupadd -g 1200 asmadmin groupadd -g 1201 asmdba groupadd -g 1202 asmoperusermod -G asmdba,asmoper,asmadmin,dba,oper -g oinstall oracle
Como terá várias instâncias e versões de oracle diferentes no mesmo servidor, aconselho a colocar os dados no .bash_profile e criar scripts no home do oracle. Segue o meu script do asm. Logo em seguida, executo o comando source, para ler as variaveis.
[oracle@oracle11g ~]$ cat oracle_asm.sh
### Variaveis do ASM
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/grid
export ORACLE_SID=+ASM
export PATH=$PATH:$ORACLE_HOME/bin
export TNS_ADMIN=$ORACLE_HOME/network/admin[oracle@oracle11g ~]$ source oracle_asm
Toda vez que você precisar instalar ou acessar a instancia ASM execute o script
oracle_asm.sh.
##################################################################################
Nota: Nos temos que alinhar o usuário oracle também com o grupo asmdba em ordem para permitir o usuário oracle a descobrir os discos asm durante a criação do database. O grupo oper vai ser usado pelo software oracle.
A solução para que o dbca não veja o ASM disk, isso acontece quando nos usamos contas separadas para gerenciar o ASM com um grid e um conta oracle para gerenciar o database, execute os comandos abaixo.
[root@oraclegrid ~]# usermod -g oinstall -G dba,oper,asmdba oracle
[root@oraclegrid app]# id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba),503(oper),1201(asmdba)
2. Criando login scripts para usuário grid e oracle
-
Login script para usuário oracle:
Altere o arquivo .bash_profile do usuário oracle com o conteudo abaixo.
[root@oraclegrid ~]# su – oracle [oracle@oraclegrid ~]$ echo > .bash_profile [oracle@oraclegrid ~]$ vi .bash_profile
Cole as seguintes linha dentro do arquivo .bash_profile e salve.
# --------------------------------------------------- # .bash_profile # --------------------------------------------------- # OS User: oracle # Marcio Rocha. # Application: Oracle Database Software Owner # Version: Oracle 11g Release 2 # --------------------------------------------------- # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # --------------------------------------------------- # ORACLE_SID # --------------------------------------------------- # Specifies the Oracle system identifier (SID) for # the Oracle instance running on this node. ORACLE_SID=TESTEDB1; export ORACLE_SID # --------------------------------------------------- # ORACLE_UNQNAME # --------------------------------------------------- # In previous releases of Oracle Database, you were # required to set environment variables for # ORACLE_HOME and ORACLE_SID to start, stop, and # check the status of Enterprise Manager. With # Oracle Database 11g release 2 (11.2) and later, you # need to set the environment variables ORACLE_HOME # and ORACLE_UNQNAME to use Enterprise Manager. # Set ORACLE_UNQNAME equal to the database unique # name. # --------------------------------------------------- ORACLE_UNQNAME=TESTDB1; export ORACLE_UNQNAME # --------------------------------------------------- # JAVA_HOME # --------------------------------------------------- # Specifies the directory of the Java SDK and Runtime # Environment. # --------------------------------------------------- JAVA_HOME=/usr/local/java; export JAVA_HOME # --------------------------------------------------- # ORACLE_BASE # --------------------------------------------------- # Specifies the base of the Oracle directory structure # for Optimal Flexible Architecture (OFA) compliant # database software installations. # --------------------------------------------------- ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE # --------------------------------------------------- # ORACLE_HOME # --------------------------------------------------- # Specifies the directory containing the Oracle # Database software. # --------------------------------------------------- ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 export ORACLE_HOME # --------------------------------------------------- # ORACLE_TERM # --------------------------------------------------- # Defines a terminal definition. If not set, it # defaults to the value of your TERM environment # variable. Used by all character mode products. # --------------------------------------------------- ORACLE_TERM=xterm; export ORACLE_TERM # --------------------------------------------------- # NLS_DATE_FORMAT # --------------------------------------------------- # Specifies the default date format to use with the # TO_CHAR and TO_DATE functions. The default value of # this parameter is determined by NLS_TERRITORY. The # value of this parameter can be any valid date # format mask, and the value must be surrounded by # double quotation marks. For example: # # NLS_DATE_FORMAT = "MM/DD/YYYY" # # --------------------------------------------------- NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS" export NLS_DATE_FORMAT # --------------------------------------------------- # TNS_ADMIN # --------------------------------------------------- # Specifies the directory containing the Oracle Net # Services configuration files like listener.ora, # tnsnames.ora, and sqlnet.ora. # --------------------------------------------------- TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN # --------------------------------------------------- # ORA_NLS11 # --------------------------------------------------- # Specifies the directory where the language, # territory, character set, and linguistic definition # files are stored. # --------------------------------------------------- ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11 # --------------------------------------------------- # PATH # --------------------------------------------------- # Used by the shell to locate executable programs; # must include the $ORACLE_HOME/bin directory. # --------------------------------------------------- PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin PATH=${PATH}:/u01/app/common/oracle/bin export PATH # --------------------------------------------------- # LD_LIBRARY_PATH # --------------------------------------------------- # Specifies the list of directories that the shared # library loader searches to locate shared object # libraries at runtime. # --------------------------------------------------- LD_LIBRARY_PATH=$ORACLE_HOME/lib LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib export LD_LIBRARY_PATH # --------------------------------------------------- # CLASSPATH # --------------------------------------------------- # Specifies the directory or list of directories that # contain compiled Java classes. # --------------------------------------------------- CLASSPATH=$ORACLE_HOME/JRE CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib export CLASSPATH # --------------------------------------------------- # THREADS_FLAG # --------------------------------------------------- # All the tools in the JDK use green threads as a # default. To specify that native threads should be # used, set the THREADS_FLAG environment variable to # "native". You can revert to the use of green # threads by setting THREADS_FLAG to the value # "green". # --------------------------------------------------- THREADS_FLAG=native; export THREADS_FLAG # --------------------------------------------------- # TEMP, TMP, and TMPDIR # --------------------------------------------------- # Specify the default directories for temporary # files; if set, tools that create temporary files # create them in one of these directories. # --------------------------------------------------- export TEMP=/tmp export TMPDIR=/tmp # --------------------------------------------------- # UMASK # --------------------------------------------------- # Set the default file mode creation mask # (umask) to 022 to ensure that the user performing # the Oracle software installation creates files # with 644 permissions. # --------------------------------------------------- umask 022
-
Login script para usuário grid:
Altere o arquivo .bash_profile do usuário grid com o conteúdo abaixo.
[oracle@test-host ~]$ su – grid Password: [grid@test-host ~]$ echo > .bash_profile [grid@test-host ~]$ vi .bash_profile
Cole as seguintes linha dentro do arquivo .bash_profile e salve.
# --------------------------------------------------- # .bash_profile # --------------------------------------------------- # OS User: grid # Marcio Rocha. # Application: Oracle Grid Infrastructure # Version: Oracle 11g Release 2 # --------------------------------------------------- # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # --------------------------------------------------- # ORACLE_SID # --------------------------------------------------- # Specifies the Oracle system identifier (SID) # for the Automatic Storage Management (ASM)instance # running on this node. # --------------------------------------------------- ORACLE_SID=+ASM; export ORACLE_SID # --------------------------------------------------- # JAVA_HOME # --------------------------------------------------- # Specifies the directory of the Java SDK and Runtime # Environment. # --------------------------------------------------- JAVA_HOME=/usr/local/java; export JAVA_HOME # --------------------------------------------------- # ORACLE_BASE # --------------------------------------------------- # Specifies the base of the Oracle directory structure # for Optimal Flexible Architecture (OFA) compliant # installations. The Oracle base directory for the # grid installation owner is the location where # diagnostic and administrative logs, and other logs # associated with Oracle ASM and Oracle Clusterware # are stored. # --------------------------------------------------- ORACLE_BASE=/u01/app/grid; export ORACLE_BASE # --------------------------------------------------- # ORACLE_HOME # --------------------------------------------------- # Specifies the directory containing the Oracle # Grid Infrastructure software. For grid # infrastructure for a cluster installations, the Grid # home must not be placed under one of the Oracle base # directories, or under Oracle home directories of # Oracle Database installation owners, or in the home # directory of an installation owner. During # installation, ownership of the path to the Grid # home is changed to root. This change causes # permission errors for other installations. # --------------------------------------------------- ORACLE_HOME=/u01/app/11.2.0/grid; export ORACLE_HOME # --------------------------------------------------- # ORACLE_PATH # --------------------------------------------------- # Specifies the search path for files used by Oracle # applications such as SQL*Plus. If the full path to # the file is not specified, or if the file is not # in the current directory, the Oracle application # uses ORACLE_PATH to locate the file. # This variable is used by SQL*Plus, Forms and Menu. # --------------------------------------------------- # ORACLE_TERM # --------------------------------------------------- # Defines a terminal definition. If not set, it # defaults to the value of your TERM environment # variable. Used by all character mode products. # --------------------------------------------------- ORACLE_TERM=xterm; export ORACLE_TERM # --------------------------------------------------- # NLS_DATE_FORMAT # --------------------------------------------------- # Specifies the default date format to use with the # TO_CHAR and TO_DATE functions. The default value of # this parameter is determined by NLS_TERRITORY. The # value of this parameter can be any valid date # format mask, and the value must be surrounded by # double quotation marks. For example: # # NLS_DATE_FORMAT = "MM/DD/YYYY" # # --------------------------------------------------- NLS_DATE_FORMAT="DD-MON-YYYY HH24:MI:SS"; export NLS_DATE_FORMAT # --------------------------------------------------- # TNS_ADMIN # --------------------------------------------------- # Specifies the directory containing the Oracle Net # Services configuration files like listener.ora, # tnsnames.ora, and sqlnet.ora. # --------------------------------------------------- TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN # --------------------------------------------------- # ORA_NLS11 # --------------------------------------------------- # Specifies the directory where the language, # territory, character set, and linguistic definition # files are stored. # --------------------------------------------------- ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11 # --------------------------------------------------- # PATH # --------------------------------------------------- # Used by the shell to locate executable programs; # must include the $ORACLE_HOME/bin directory. # --------------------------------------------------- PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin PATH=${PATH}:/u01/app/common/oracle/bin export PATH # --------------------------------------------------- # LD_LIBRARY_PATH # --------------------------------------------------- # Specifies the list of directories that the shared # library loader searches to locate shared object # libraries at runtime. # --------------------------------------------------- LD_LIBRARY_PATH=$ORACLE_HOME/lib LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib export LD_LIBRARY_PATH # --------------------------------------------------- # CLASSPATH # --------------------------------------------------- # Specifies the directory or list of directories that # contain compiled Java classes. # --------------------------------------------------- CLASSPATH=$ORACLE_HOME/JRE CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib export CLASSPATH # --------------------------------------------------- # THREADS_FLAG # --------------------------------------------------- # All the tools in the JDK use green threads as a # default. To specify that native threads should be # used, set the THREADS_FLAG environment variable to # "native". You can revert to the use of green # threads by setting THREADS_FLAG to the value # "green". # --------------------------------------------------- THREADS_FLAG=native; export THREADS_FLAG # --------------------------------------------------- # TEMP, TMP, and TMPDIR # --------------------------------------------------- # Specify the default directories for temporary # files; if set, tools that create temporary files # create them in one of these directories. # --------------------------------------------------- export TEMP=/tmp export TMPDIR=/tmp # --------------------------------------------------- # UMASK # --------------------------------------------------- # Set the default file mode creation mask # (umask) to 022 to ensure that the user performing # the Oracle software installation creates files # with 644 permissions. # --------------------------------------------------- umask 022
3. Particionado os discos para o ASM
Para localizarmos os discos que nos adicionamos na máquina virtual podemos consultar o diretório /dev/sd*, isso ira nós mostrar os discos que foram adicionados.
[root@oraclegrid ~]# ls -l /dev/sd*
brw-rw—-. 1 root disk 8, 0 Mar 3 10:51 /dev/sda
brw-rw—-. 1 root disk 8, 1 Mar 3 10:51 /dev/sda1
brw-rw—-. 1 root disk 8, 2 Mar 3 10:51 /dev/sda2
brw-rw—-. 1 root disk 8, 16 Mar 3 10:51 /dev/sdb
brw-rw—-. 1 root disk 8, 32 Mar 3 10:51 /dev/sdc
brw-rw—-. 1 root disk 8, 48 Mar 3 10:51 /dev/sdd
brw-rw—-. 1 root disk 8, 64 Mar 3 10:51 /dev/sde
brw-rw—-. 1 root disk 8, 80 Mar 3 10:51 /dev/sdf
brw-rw—-. 1 root disk 8, 96 Mar 3 10:51 /dev/sdg
brw-rw—-. 1 root disk 8, 112 Mar 3 10:51 /dev/sdh
Os discos que ainda não possuem número em sua partição são os possíveis discos que foram adicionados, para confirmarmos podemos executar o comando fdisk -l, onde podemos vê o tamanho que cada disco em relação ao tamanho que criamos.
[root@oraclegrid ~]# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00025c04
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 3917 30944256 8e Linux LVM
Disk /dev/sdb: 524 MB, 524288000 bytes
255 heads, 63 sectors/track, 63 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdc: 524 MB, 524288000 bytes
255 heads, 63 sectors/track, 63 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdd: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sde: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdf: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdg: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdh: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Agora devemos particionar os discos que foram adicionados utilizando o fdisk.
Para cada disco efetuamos o procedimento parecido com o de baixo.
[root@oraclegrid ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x97a76e3a.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won’t be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to
switch off the mode (command ‘c’) and change display units to
sectors (command ‘u’).
Command (m for help): n —- n para uma nova partição
Command action
e extended
p primary partition (1-4)
p — digite p para criar um partição primaria
Partition number (1-4): 1 —- digite 1 depois <enter> <enter>
First cylinder (1-63, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-63, default 63):
Using default value 63
Command (m for help): w — digite w para escrever a partição
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@oraclegrid ~]#
Repita este processo para cada disco.
# Verificando as partições criadas.
[root@oraclegrid ~]# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes
255 heads, 63 sectors/track, 3916 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00025c04
Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 64 3917 30944256 8e Linux LVM
Disk /dev/sdb: 524 MB, 524288000 bytes
255 heads, 63 sectors/track, 63 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x97a76e3a
Device Boot Start End Blocks Id System
/dev/sdb1 1 63 505023+ 83 Linux
Disk /dev/sdc: 524 MB, 524288000 bytes
255 heads, 63 sectors/track, 63 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x29b13634
Device Boot Start End Blocks Id System
/dev/sdc1 1 63 506016 83 Linux
Disk /dev/sdd: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xdce3dd25
Device Boot Start End Blocks Id System
/dev/sdd1 1 652 5237158+ 83 Linux
Disk /dev/sde: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6b11a927
Device Boot Start End Blocks Id System
/dev/sde1 1 261 2096451 83 Linux
Disk /dev/sdf: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x9898c953
Device Boot Start End Blocks Id System
/dev/sdf1 1 261 2096451 83 Linux
Disk /dev/sdg: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6a0d6f17
Device Boot Start End Blocks Id System
/dev/sdg1 1 261 2096451 83 Linux
Disk /dev/sdh: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xaee9de84
Device Boot Start End Blocks Id System
/dev/sdh1 1 652 5237158+ 83 Linux
[root@oraclegrid ~]#
# Consultando o /dev para verificar os discos
[root@oraclegrid ~]# ls -l /dev/sd*
brw-rw—-. 1 root disk 8, 0 Mar 3 10:51 /dev/sda
brw-rw—-. 1 root disk 8, 1 Mar 3 10:51 /dev/sda1
brw-rw—-. 1 root disk 8, 2 Mar 3 10:51 /dev/sda2
brw-rw—-. 1 root disk 8, 16 Mar 3 12:27 /dev/sdb
brw-rw—-. 1 root disk 8, 17 Mar 3 12:27 /dev/sdb1
brw-rw—-. 1 root disk 8, 32 Mar 3 12:33 /dev/sdc
brw-rw—-. 1 root disk 8, 33 Mar 3 12:33 /dev/sdc1
brw-rw—-. 1 root disk 8, 48 Mar 3 12:33 /dev/sdd
brw-rw—-. 1 root disk 8, 49 Mar 3 12:33 /dev/sdd1
brw-rw—-. 1 root disk 8, 64 Mar 3 12:34 /dev/sde
brw-rw—-. 1 root disk 8, 65 Mar 3 12:34 /dev/sde1
brw-rw—-. 1 root disk 8, 80 Mar 3 12:35 /dev/sdf
brw-rw—-. 1 root disk 8, 81 Mar 3 12:34 /dev/sdf1
brw-rw—-. 1 root disk 8, 96 Mar 3 12:35 /dev/sdg
brw-rw—-. 1 root disk 8, 97 Mar 3 12:35 /dev/sdg1
brw-rw—-. 1 root disk 8, 112 Mar 3 12:35 /dev/sdh
brw-rw—-. 1 root disk 8, 113 Mar 3 12:35 /dev/sdh1
CRSDISK1 /dev/sdb1 524 MB CRSDISK2 /dev/sdc1 524 MB
AMSDISK1 /dev/sdd1 5368 MB ASMDISK2 /dev/sdh1 5368 MB
FRADISK1 /dev/sde1 2147 MB FRADISK2 /dev/sdf1 2147 MB FRADISK3 /dev/sdg1 2147 MB
4. Configurando os parâmetros do kernel do linux para o oracle
As configurações dos parâmetros de kernel do oracle e a instalação de algumas libs necessárias para instalação do oracle você pode fazer manual ou utilizando o script oracle-rdbms-server-11gR2-preinstall no yum.
Antes de iniciar a instalação do Oracle 11g no sistema operacional, você deve preparar o ambiente com todos os pré-requisitos necessários, como por exemplo, pacotes, bibliotecas, parâmetros do kernel, versão do pacote e criação de usuário e grupos (oinstall e dba).
Sabendo desses pré-requisitos, a Oracle criou um pacote chamado oracle-valitated ou oracle-rdbms-server-11gR2-preinstall que faz todo este trabalho “sujo”. O que esta em incluso neste pacote:
– Cria o usuário oracle, os grupos oinstall e dba, que estão serão usados na instalação da database.
– Modifica os parametros do kernel (/etc/sysconfig.conf), mudando configurações de memória, semaforos, etc.
– Configura recursos do sistema tanto os valores soft e hard dentro do /etc/limits.conf, tal como uso espaço de uso de memória, aumenta o número de arquivos abertos e de processos.
– Configura numa=off em kernel`s com rodando x86_64.
Como criamos os usuários manualmente o script vai ignorar nesta parte.
Estarei utilizando o script oracle-rdbms-server-11gR2-preinstall no yum.
Antes de você executar este script, execute um update no yum para atualizar o SO.
yum update
[root@oraclegrid ~]# yum isntall oracle-rdbms-server-11gR2-preinstall Loaded plugins: refresh-packagekit, security, ulninfo No such command: isntall. Please use /usr/bin/yum --help [root@oraclegrid ~]# yum install oracle-rdbms-server-11gR2-preinstall Loaded plugins: refresh-packagekit, security, ulninfo Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package oracle-rdbms-server-11gR2-preinstall.x86_64 0:1.0-12.el6 will be installed --> Processing Dependency: gcc-c++ for package: oracle-rdbms-server-11gR2- preinstall-1.0-12.el6.x86_64 --> Processing Dependency: compat-libcap1 for package: oracle-rdbms-server-11gR2- preinstall-1.0-12.el6.x86_64 --> Processing Dependency: ksh for package: oracle-rdbms-server-11gR2-preinstall- 1.0-12.el6.x86_64 --> Processing Dependency: libaio-devel for package: oracle-rdbms-server-11gR2- preinstall-1.0-12.el6.x86_64 --> Processing Dependency: compat-libstdc++-33 for package: oracle-rdbms-server- 11gR2-preinstall-1.0-12.el6.x86_64 --> Processing Dependency: libstdc++-devel for package: oracle-rdbms-server-11gR2 -preinstall-1.0-12.el6.x86_64 --> Running transaction check ---> Package compat-libcap1.x86_64 0:1.10-1 will be installed ---> Package compat-libstdc++-33.x86_64 0:3.2.3-69.el6 will be installed ---> Package gcc-c++.x86_64 0:4.4.7-16.el6 will be installed ---> Package ksh.x86_64 0:20120801-28.el6_7.3 will be installed ---> Package libaio-devel.x86_64 0:0.3.107-10.el6 will be installed ---> Package libstdc++-devel.x86_64 0:4.4.7-16.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ==================================================================================================================================================================================================== Package Arch Version Repository Size ==================================================================================================================================================================================================== Installing: oracle-rdbms-server-11gR2-preinstall x86_64 1.0-12.el6 public_ol6_latest 18 k Installing for dependencies: compat-libcap1 x86_64 1.10-1 public_ol6_latest 17 k compat-libstdc++-33 x86_64 3.2.3-69.el6 public_ol6_latest 183 k gcc-c++ x86_64 4.4.7-16.el6 public_ol6_latest 4.7 M ksh x86_64 20120801-28.el6_7.3 public_ol6_latest 760 k libaio-devel x86_64 0.3.107-10.el6 public_ol6_latest 13 k libstdc++-devel x86_64 4.4.7-16.el6 public_ol6_latest 1.6 M Transaction Summary ==================================================================================================================================================================================================== Install 7 Package(s) Total download size: 7.3 M Installed size: 23 M Is this ok [y/N]: y
Para melhorar a performance do software no sistema linux, você deve aumentar o seguinte limite de recurso para o usuário grid do software oracle. Adicione a seguinte linha no arquivo /etc/security/limits.conf (o seguinte exemplo mostra o grid dono da conta do software)
[root@oraclegrid ~]# cat >> /etc/security/limits.conf <<EOF grid soft nproc 2047 grid hard nproc 16384 grid soft nofile 1024 grid hard nofile 65536 EOF
Adicione ou edit a seguinte linha no arquivo /etc/pam.d/login, se não existir. [root@oraclegrid ~]# cat >> /etc/pam.d/login <<EOF session required pam_limits.so EOF
Dependendo do seu ambiente shell, faça a seguinte mudança no arquivo startup do shell default, mudar o ulimit setando para todos da instalação oracle ( note que esse exemplo mostra os usuários oracle e grid) Para o shell Bourne, Bash ou Korn, adicione a linha no seguinte arquivo /etc/profile file executando o seguinte comando: [root@oraclegrid ~]# cat >> /etc/profile <<EOF if [ \$USER = "oracle" ] || [ \$USER = "grid" ]; then if [ \$SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi umask 022 fi EOF
5. Ajuste o arquivo hosts
Adicione o ip do seu servidor no arquivo hosts.
[root@oraclegrid ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.18 oraclegrid.localdomain oraclegrid
5. Instalar o pacote do Oracle ASM e criar os discos grupos ASM
Utilizando pacotes do DVD ou baixando no site do suporte Linux da Oracle você deverá possuir os seguinte arquivos.
rpm -ivh kmod-oracleasm-2.0.8-4.el6_6.x86_64.rpm
rpm -ivh oracleasmlib-2.0.4-1.el6.x86_64.rpm
rpm -ivh oracleasm-support-2.1.8-1.el6.x86_64.rpm
Como vou está utilizando o yum para instalar os pacotes seguirei os passos abaixo:
Instalação da ASMLib
Utilizando o yum e rpm conforme inicio deste post:
yum install kmod-oracleasm
rpm -ivh oracleasmlib-2.0.12-1.el6.x86_64.rpm
rpm -ivh oracleasm-support-2.1.8-1.el6.x86_64.rpm
[root@oraclegrid ~]# yum install kmod-oracleasm
Loaded plugins: refresh-packagekit, security, ulninfo
Setting up Install Process
Resolving Dependencies
–> Running transaction check
—> Package kmod-oracleasm.x86_64 0:2.0.8-6.el6_7 will be installed
–> Finished Dependency Resolution
Dependencies Resolved
======================================================================================================================
Package Arch Version Repository Size
======================================================================================================================
Installing:
kmod-oracleasm x86_64 2.0.8-6.el6_7 public_ol6_latest 35 k
Transaction Summary
======================================================================================================================
Install 1 Package(s)
Total download size: 35 k
Installed size: 117 k
Is this ok [y/N]: y
Downloading Packages:
kmod-oracleasm-2.0.8-6.el6_7.x86_64.rpm | 35 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : kmod-oracleasm-2.0.8-6.el6_7.x86_64 1/1
Verifying : kmod-oracleasm-2.0.8-6.el6_7.x86_64 1/1
Installed:
kmod-oracleasm.x86_64 0:2.0.8-6.el6_7
Complete!
[root@oraclegrid Library – ASM – linux6.6]# rpm -ivh oracleasmlib-2.0.12-1.el6.x86_64.rpm
Preparing… ########################################### [100%]
1:oracleasmlib ########################################### [100%]
[root@oraclegrid Library – ASM – linux6.6]# rpm -ivh oracleasm-support-2.1.8-1.el6.x86_64.rpm
Preparing… ########################################### [100%]
1:oracleasm-support ##################################### [100%]
# Configurando e carregando o modulo do kernel ASM (como usuário “root”)
/usr/sbin/oracleasm configure -i [root@oraclegrid ~]# /usr/sbin/oracleasm configure -i Configuring the Oracle ASM library driver. This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting <ENTER> without typing an answer will keep that current value. Ctrl-C will abort. Default user to own the driver interface []: grid Default group to own the driver interface []: asmadmin Start Oracle ASM library driver on boot (y/n) [n]: y Scan for Oracle ASM disks on boot (y/n) [y]: y Writing Oracle ASM library driver configuration: done
The script completes the following tasks:
- Creates the /etc/sysconfig/oracleasm configuration file
- Creates the /dev/oracleasm mount point
- Mounts the ASMLib driver file system
Enter the following command to load the oracleasm kernel module:
[root@oraclegrid]# /usr/sbin/oracleasm init Creating /dev/oracleasm mount point: /dev/oracleasm Loading module "oracleasm": oracleasm Mounting ASMlib driver filesystem: /dev/oracleasm # Criando os discos ASM
CRSDISK1 /dev/sdb1 524 MB CRSDISK2 /dev/sdc1 524 MB
AMSDISK1 /dev/sdd1 5368 MB ASMDISK2 /dev/sdh1 5368 MB
FRADISK1 /dev/sde1 2147 MB FRADISK2 /dev/sdf1 2147 MB FRADISK3 /dev/sdg1 2147 MB
/usr/sbin/oracleasm createdisk CRSDISK1 /dev/sdb1
/usr/sbin/oracleasm createdisk CRSDISK2 /dev/sdc1
/usr/sbin/oracleasm createdisk ASMDISK1 /dev/sdd1
/usr/sbin/oracleasm createdisk FRADISK1 /dev/sde1
/usr/sbin/oracleasm createdisk FRADISK2 /dev/sdf1
/usr/sbin/oracleasm createdisk FRADISK3 /dev/sdg1
/usr/sbin/oracleasm createdisk ASMDISK2 /dev/sdh1
/usr/sbin/oracleasm listdisks
[root@oraclegrid ~]# /usr/sbin/oracleasm createdisk CRSDISK1 /dev/sdb1 Writing disk header: done Instantiating disk: done [root@oraclegrid ~]# /usr/sbin/oracleasm createdisk CRSDISK2 /dev/sdc1 Writing disk header: done Instantiating disk: done [root@oraclegrid ~]# /usr/sbin/oracleasm createdisk ASMDISK1 /dev/sdd1 Writing disk header: done Instantiating disk: done [root@oraclegrid ~]# /usr/sbin/oracleasm createdisk FRADISK1 /dev/sde1 Writing disk header: done Instantiating disk: done [root@oraclegrid ~]# /usr/sbin/oracleasm createdisk FRADISK2 /dev/sdf1 Writing disk header: done Instantiating disk: done [root@oraclegrid ~]# /usr/sbin/oracleasm createdisk FRADISK3 /dev/sdg1 Writing disk header: done Instantiating disk: done [root@oraclegrid ~]# /usr/sbin/oracleasm createdisk ASMDISK2 /dev/sdh1 Writing disk header: done Instantiating disk: done [root@oraclegrid ~]# [root@oraclegrid ~]# [root@oraclegrid ~]# /usr/sbin/oracleasm listdisks ASMDISK1 ASMDISK2 CRSDISK1 CRSDISK2 FRADISK1 FRADISK2 FRADISK3
Test disks discovery (oracle-discovery is being used by the oracle database creation assistant (dbca)) [root@oraclegrid ~]# oracleasm-discover Using ASMLib from /opt/oracle/extapi/64/asm/orcl/1/libasm.so [ASM Library - Generic Linux, version 2.0.12 (KABI_V2)] Discovered disk: ORCL:ASMDISK1 [10474317 blocks (5362850304 bytes), maxio 1024, integrity none] Discovered disk: ORCL:ASMDISK2 [10474317 blocks (5362850304 bytes), maxio 1024, integrity none] Discovered disk: ORCL:CRSDISK1 [1010047 blocks (517144064 bytes), maxio 1024, integrity none] Discovered disk: ORCL:CRSDISK2 [1012032 blocks (518160384 bytes), maxio 1024, integrity none] Discovered disk: ORCL:FRADISK1 [4192902 blocks (2146765824 bytes), maxio 1024, integrity none] Discovered disk: ORCL:FRADISK2 [4192902 blocks (2146765824 bytes), maxio 1024, integrity none] Discovered disk: ORCL:FRADISK3 [4192902 blocks (2146765824 bytes), maxio 1024, integrity none] [root@oraclegrid ~]#
6. Instalação do Oracle Grid
O usuário grid deve possuir permissão para acessar o diretório grid para instalação do binário.
-rw-r–r–. 1 grid oinstall 979195792 Mar 2 21:10 p10404530_112030_Linux-x86-64_3of7.zip
drwxr-xr-x. 8 grid oinstall 4096 Sep 22 2011 grid
cd grid
Já dentro do diretório de instalação do Oracle grid.
drwxr-xr-x. 9 grid oinstall 4096 Sep 22 2011 doc
drwxr-xr-x. 4 grid oinstall 4096 Sep 22 2011 install
-rwxr-xr-x. 1 grid oinstall 28122 Sep 22 2011 readme.html
drwxr-xr-x. 2 grid oinstall 4096 Sep 22 2011 response
drwxr-xr-x. 2 grid oinstall 4096 Sep 22 2011 rpm
-rwxr-xr-x. 1 grid oinstall 4878 Sep 22 2011 runcluvfy.sh
-rwxr-xr-x. 1 grid oinstall 3227 Sep 22 2011 runInstaller
drwxr-xr-x. 2 grid oinstall 4096 Sep 22 2011 sshsetup
drwxr-xr-x. 14 grid oinstall 4096 Sep 22 2011 stage
-rwxr-xr-x. 1 grid oinstall 4326 Sep 2 2011 welcome.html
[grid@oraclegrid grid]$
[grid@oraclegrid grid]$
[grid@oraclegrid grid]$ ./runInstaller
[root@oraclegrid ~]# ps -ef | grep grid
root 5319 9579 0 16:01 pts/1 00:00:00 su – grid
grid 5320 5319 0 16:01 pts/1 00:00:00 -bash
grid 8890 1 0 16:28 ? 00:00:04 /u01/app/11.2.0/grid/bin/ohasd.bin reboot
grid 9047 1 0 16:28 ? 00:00:00 /u01/app/11.2.0/grid/bin/oraagent.bin
grid 9061 1 0 16:28 ? 00:00:00 /u01/app/11.2.0/grid/bin/evmd.bin
grid 9101 9061 0 16:28 ? 00:00:00 /u01/app/11.2.0/grid/bin/evmlogger.bin -o /u01/app/11.2.0/grid/evm/log/evmlogger.info -l /u01/app/11.2.0/grid/evm/log/evmlogger.log
grid 9447 1 0 16:32 ? 00:00:00 /u01/app/11.2.0/grid/bin/tnslsnr LISTENER -inherit
grid 9640 1 0 16:32 ? 00:00:00 /u01/app/11.2.0/grid/bin/cssdagent
grid 9666 1 0 16:32 ? 00:00:00 /u01/app/11.2.0/grid/bin/ocssd.bin
grid 9854 1 0 16:32 ? 00:00:00 asm_pmon_+ASM
grid 9856 1 0 16:32 ? 00:00:00 asm_psp0_+ASM
grid 9858 1 5 16:32 ? 00:00:09 asm_vktm_+ASM
grid 9862 1 0 16:32 ? 00:00:00 asm_gen0_+ASM
grid 9864 1 0 16:32 ? 00:00:00 asm_diag_+ASM
grid 9866 1 0 16:32 ? 00:00:00 asm_dia0_+ASM
grid 9868 1 0 16:32 ? 00:00:00 asm_mman_+ASM
grid 9870 1 0 16:32 ? 00:00:00 asm_dbw0_+ASM
grid 9872 1 0 16:32 ? 00:00:00 asm_lgwr_+ASM
grid 9874 1 0 16:32 ? 00:00:00 asm_ckpt_+ASM
grid 9876 1 0 16:32 ? 00:00:00 asm_smon_+ASM
grid 9878 1 0 16:32 ? 00:00:00 asm_rbal_+ASM
grid 9880 1 0 16:32 ? 00:00:00 asm_gmon_+ASM
grid 9882 1 0 16:32 ? 00:00:00 asm_mmon_+ASM
grid 9884 1 0 16:32 ? 00:00:00 asm_mmnl_+ASM
grid 9886 1 0 16:32 ? 00:00:00 oracle+ASM (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
root 9923 8569 0 16:36 pts/2 00:00:00 grep grid
[root@oraclegrid ~]#
7. Criando o ASM grupo para utilização no Banco de dados
Nos iremos agora configurar o ASM disk group para instalação do Oracle Database (+DATA e +FRA)
Novamente conectado no usuário grid execute asmca (ASM Configuration Assistant)
asmca
8. Instalando o software Oracle database e criar a instancia database escolhendo o ASM disk para armazenamento de dados.
Conectado com o usuário oracle vá na pasta onde conta o binário de instalação, lembrando que o arquivo zip e o diretório descompactado devem está apto para acesso pelo usuário oracle.
-rw-r–r–. 1 oracle oinstall 1358454646 Mar 2 21:04 p10404530_112030_Linux-x86-64_1of7.zip
-rw-r–r–. 1 oracle oinstall 1142195302 Mar 2 21:07 p10404530_112030_Linux-x86-64_2of7.zip
drwxr-xr-x. 8 oracle oinstall 4096 Sep 22 2011 database
cd database
[oracle@oraclegrid database]$
[oracle@oraclegrid database]$ ls -l
total 64
drwxr-xr-x. 12 oracle oinstall 4096 Sep 19 2011 doc
drwxr-xr-x. 4 oracle oinstall 4096 Sep 22 2011 install
-rwxr-xr-x. 1 oracle oinstall 28122 Sep 22 2011 readme.html
drwxr-xr-x. 2 oracle oinstall 4096 Sep 22 2011 response
drwxr-xr-x. 2 oracle oinstall 4096 Sep 22 2011 rpm
-rwxr-xr-x. 1 oracle oinstall 3226 Sep 22 2011 runInstaller
drwxr-xr-x. 2 oracle oinstall 4096 Sep 22 2011 sshsetup
drwxr-xr-x. 14 oracle oinstall 4096 Sep 22 2011 stage
-rwxr-xr-x. 1 oracle oinstall 5466 Aug 23 2011 welcome.html
[oracle@oraclegrid database]$
[oracle@oraclegrid database]$ ./runInstaller
# Criando o Database com dbca
Conectado como usuário oracle execute o dbca
Criando um recovery Catalog no RMAN
O primeiro passo para se criar um recovery catalog no Rman é criar um usuário o qual vai residir todos os objetos que compõem o catalog do rman, views, pacotes entres outros…
# Caso não possua uma tablespace já criada para armazenar os dados do usuário crie uma.
create tablespace tbs_catalog datafile ‘/u01/app/oracle/oradata/rman/tbs_catalog.dbf’ size 130M autoextend on next 50M maxsize 1G;
# Criando o usuário:
create user rcat_user identified by rcat_password default tablespace tbs_catalog temporary tablespace temp;
# Grants do usuário: (connect / resource / recovery_catalog_owner)
grant connect, resource, recovery_catalog_owner to rcat_user;
grant unlimited tablespace to rcat_user;
# Efetuando a criação do catalog no usuário recém criado:
Conecte no usuário recém criado através do executável do rman.
rman catalog rcat_user/rcat_password@dbrman
depois execute create catalog;
[oracle@RMAN:~]$ rman catalog rcat_user/rcat_password@dbrman
Recovery Manager: Release 11.2.0.3.0 – Production on Mon Jan 25 11:23:27 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to recovery catalog database
RMAN> create catalog;
recovery catalog created
Com o recovery catalog criado já podemos registrar banco de dados no mesmo.
Para registrar o banco de dados no catalog é necessário efetuar um conexão tanto no seu banco target (banco alvo que vai sofre backup) como no seu catalog ( recovery catalog criado)
Ao conectar devemos executar o seguinte comando: register database;
Vou mostrar 2 formas de conectar para efetuar o registro.
Primeiro conectando de um servidor onde consta instalado o banco de dados target, necessário que exista um nome de serviço criado no tnsnames.ora para o banco de dados do rman.
Conectado no banco target:
rman target / catalog rcat_user/rcat_password@dbrman
Segundo é conectando de uma servidor que consta o usuário que possui o catalog, necessário que tenha criado um serviço que a ponta para o banco de dados target.
Conectado no servidor do banco do catalog
rman target sys/senhasys@db11g catalog rcat_user/rcat_password@dbrman
Usaremos o primeiro exemplo, estando conectando no servidor do banco de dados db11g.
[oracle@oraclelnx6 ~]$ rman target / catalog rcat_user/rcat_password@dbrman
Recovery Manager: Release 11.2.0.3.0 – Production on Mon Jan 25 11:43:07 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: DB11G (DBID=340229516)
connected to recovery catalog database
RMAN> register database;
database registered in recovery catalog
starting full resync of recovery catalog
full resync complete
RMAN>
Verificando se o banco está registrado com o comando list incarnation;
RMAN> list incarnation;
List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
——- ——- ——– —————- — ———- ———-
1 2 DB11G 340229516 CURRENT 1 01-FEB-15
ou conectando diretamente no usuário que possui o catalog criado e consultando a view RC_DATABASE.
ex:
[oracle@oraclelnx6 ~]$ sqlplus rcat_user/rcat_password@dbrman
SQL*Plus: Release 11.2.0.3.0 Production on Mon Jan 25 11:49:30 2016
Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select * from RC_DATABASE;
DB_KEY DBINC_KEY DBID NAME RESETLOGS_CHANGE# RESETLOGS
———- ———- ———- ——– —————– ———
1 2 340229516 DB11G 1 01-FEB-15
A partir desse momento já podemos efetuar backup do banco de dados target, utilizando o catalog como repositório de seus metadados.
Importante:
O Banco de Dados target deve está em estado de ARCHIVELOG, senão você vai receber a seguinte mensagem de erro quanto tentar efetuar qualquer tipo de backup utilizando o rman.
RMAN> backup as backupset database archivelog all;
Starting backup at 25-JAN-16
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=23 device type=DISK
specification does not match any archived log in the repository
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 01/25/2016 11:54:55
ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
continuing other job steps, job failed will not be re-run
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 25-JAN-16
channel ORA_DISK_1: finished piece 1 at 25-JAN-16
piece handle=/u01/app/oracle/fast_recovery_area/DB11G/backupset/2016_01_25/o1_mf_ncsnf_TAG20160125T115455_cbdb9kbg_.bkp tag=TAG20160125T115455 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 01/25/2016 11:54:55
ORA-19602: cannot backup or copy active file in NOARCHIVELOG mode
Backup realização com sucesso.
[oracle@RMAN:~]$ rman target sys/oracle@db11g catalog rcat_user/rcat_password@dbrman
Recovery Manager: Release 11.2.0.3.0 – Production on Mon Jan 25 12:02:40 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
connected to target database: DB11G (DBID=340229516)
connected to recovery catalog database
RMAN> backup as backupset database archivelog all;
Starting backup at 25-JAN-16
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=38 device type=DISK
specification does not match any archived log in the repository
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00003 name=/u01/app/oracle/oradata/DB11G/undotbs01.dbf
input datafile file number=00001 name=/u01/app/oracle/oradata/DB11G/system01.dbf
input datafile file number=00002 name=/u01/app/oracle/oradata/DB11G/sysaux01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/DB11G/users01.dbf
channel ORA_DISK_1: starting piece 1 at 25-JAN-16
channel ORA_DISK_1: finished piece 1 at 25-JAN-16
piece handle=/u01/app/oracle/fast_recovery_area/DB11G/backupset/2016_01_25/o1_mf_nnndf_TAG20160125T120255_cbdbrhx6_.bkp tag=TAG20160125T120255 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:45
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 25-JAN-16
channel ORA_DISK_1: finished piece 1 at 25-JAN-16
piece handle=/u01/app/oracle/fast_recovery_area/DB11G/backupset/2016_01_25/o1_mf_ncsnf_TAG20160125T120255_cbdbsy3m_.bkp tag=TAG20160125T120255 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 25-JAN-16
RMAN>
Os números de 2015
Os duendes de estatísticas do WordPress.com prepararam um relatório para o ano de 2015 deste blog.
Aqui está um resumo:
A sala de concertos em Sydney, Opera House tem lugar para 2.700 pessoas. Este blog foi visto por cerca de 9.700 vezes em 2015. Se fosse um show na Opera House, levaria cerca de 4 shows lotados para que muitas pessoas pudessem vê-lo.
Instalação do Oracle 12c sobre o Oracle Linux 6
Bom, o procedimento de instalação abaixo pode ser aplicado em qualquer update do Oracle Linux 6, a minha versão é Oracle Linux 6.6, como estarei explicando dois tipos de instalação ambas utilizando yum, caso você efetue a instalação através de biblioteca rpm aconselho você buscar estas bibliotecas dentro dentro da mídia de Dvd caso possua uma.
Descrição do Ambiente
Versão SO => Oracle Linux 6.6 64-bit
Hostname – ora12c
Ip host – 192.168.0.17
Versão Database => Oracle 12c 12.1.0.2 64-bit
Este artigo descreve a instalação do Oracle database 12c release 1 (12.1) (64-bit) sobre o Oracle Linux 6.6 (64-bit). O artigo é baseado sobre uma instalação servidora com um miníno de 2G swap, com SELinux setado para permissive e o firewall desabilitado. Os seguintes grupos de pacotes foram incluídos nesta instalação.
Na instalação do SO foi feita a instalação dos seguintes grupos.
- Base System > Base
- Base System > Compatibility libraries
- Base System > Hardware monitoring utilities
- Base System > Large Systems Performance
- Base System > Network file system client
- Base System > Performance Tools
- Base System > Perl Support
- Servers > Server Platform
- Servers > System administration tools
- Desktops > Desktop
- Desktops > Desktop Platform
- Desktops > Fonts
- Desktops > General Purpose Desktop
- Desktops > Graphical Administration Tools
- Desktops > Input Methods
- Desktops > X Window System
- Applications > Internet Browser
- Development > Additional Development
- Development > Development Tools
Um exemplo desta instalação você pode acompanhar aqui.
Download do Software Oracle
Para baixar os arquivo do database aqui está um link direto para os arquivos clique aqui
Oracle Database 12c Release 1 (12.1.0.2.0) for Linux x86-64 |
||
linuxamd64_12c_database_1of2.zip (1,673,544,724 bytes) (cksum – 839029806) | ||
linuxamd64_12c_database_2of2.zip (1,014,530,602 bytes) (cksum – 1187131466) |
Ao baixar os arquivos você deve descompacta-los em um único diretório chamado database, eu aconselho a você somente descompactar o arquivo quando possuir no servidor o usuário oracle, onde o mesmo deve ser dono deste arquivo.
unzip linuxamd64_12102_database_1of2.zip unzip linuxamd64_12102_database_2of2.zip
Ao descompactar o arquivo vai existir uma pasta chamada database
Arquivo Host
O arquivo “/etc/hosts” deve conter o nome completo para o servidor .
<IP-address> <fully-qualified-machine-name> <machine-name>
Exemplo.
127.0.0.1 localhost.localdomain localhost 192.168.0.17 ora12c.localdomain ora12c
A partir do Oracle 11g podemos utilizar dois tipos de instalação, uma instalação Automática e uma instalação Manual, estarei utilizando a instalação Automática, mais abaixo estarei passando as informações da instalação manual como se estivesse utilizando-a.
Pré-requisito para instalação Oracle
*************************************
Instalação Automática
*************************************
Nesta instalação automática podemos utilizar um novo pacote que a Oracle disponibilizou a partir do Oracle 11g, para versão Oracle 12c este pacote chamasse “oracle-rdbms-server-12cR1-preinstall” , o procedimento que estariamos fazendo manualmente este pacote já faz, ou seja, as configurações do SO para instalarmos o Oracle, lembrando que devemos fazer um pequeno ajuste para o que queremos depois de sua execução, já que o arquivo se baseia nas configurações dele. Um exemplo é o parâmetro shmmax, se eu quero um tamanho o arquivo pode setar outro.
Para mais informações sobre este novo pacote clique aqui.
O Oracle Linux Yum Server já é pré-configurado na sua instalação Linux caso você não tenha configurado no seu SO segue o link para informações dos repositórios http://public-yum.oracle.com/.
Efetuando a instalação do pacote
conectado como root
# yum update
# yum install oracle-rdbms-server-12cR1-preinstall -y
Modificação que efetuei no meu caso após execução da linha acima.
- dentro do arquivo /etc/sysctl.conf
# oracle-rdbms-server-12cR1-preinstall setting for kernel.shmmax is 4398046511104 on x86_64
kernel.shmmax = 4398046511104
Como estarei reservando para o Oracle 1Gb de memória então modificarei o kernel.shmmax para um 1Gb e pouco
kernel.shmmax = 1444167680
Já o kernel.shmall estava com 4Gb coloquei para 500Mb em muitas instalações você vera para este parâmetro 1Gb pode deixar default se quiser.
kernel.shmall = 536870912
- Alterar o arquivo /etc/group conforme abaixo
Alterar a linha
oper:x:54323:
para
oper:x:54323:oracle
*****************************************
Na Instalação Manual
*****************************************
O procedimento que foi efetuado na instalação automática agora podemos vê-los passo a passo.
Se você não usou o pacote “oracle-rdbms-server-12cR1-preinstall” para configurar os pré-requisitos, você deverá configurar manualmente os seguintes passos.
1 – Adicionar ou alterar os seguintes parâmetro no arquivo “/etc/sysctl.conf”
fs.file-max = 6815744 kernel.sem = 250 32000 100 128 kernel.shmmni = 4096 kernel.shmall = 1073741824 kernel.shmmax = 4398046511104 ----- você deve alterar conforme ao tamanho que deseja net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 fs.aio-max-nr = 1048576 net.ipv4.ip_local_port_range = 9000 65500
Neste passo devemos ter atenção no parâmetro kernel.shmmax o qual se relaciona ao tamanho da memória que queremos reservar para o Oracle, se eu tenho um servidor com 3Gb de memória e pretendo utilizar no Oracle 1 a 1,5Gb na configuração automática tenho que dar atenção a este parâmetro.
Em seguida execute o seguinte comando para a configuração entrar em vigor no kernel.
/sbin/sysctl -p
2 – Adicione a seguinte linha no arquivo “/etc/security/limits.conf“
oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 16384 oracle hard nproc 16384 oracle soft stack 10240 oracle hard stack 32768
3 – Instale os seguintes pacotes no SO se eles ainda não está presentes
# From Public Yum or ULN yum install binutils -y yum install compat-libcap1 -y yum install compat-libstdc++-33 -y yum install compat-libstdc++-33.i686 -y yum install gcc -y yum install gcc-c++ -y yum install glibc -y yum install glibc.i686 -y yum install glibc-devel -y yum install glibc-devel.i686 -y yum install ksh -y yum install libgcc -y yum install libgcc.i686 -y yum install libstdc++ -y yum install libstdc++.i686 -y yum install libstdc++-devel -y yum install libstdc++-devel.i686 -y yum install libaio -y yum install libaio.i686 -y yum install libaio-devel -y yum install libaio-devel.i686 -y yum install libXext -y yum install libXext.i686 -y yum install libXtst -y yum install libXtst.i686 -y yum install libX11 -y yum install libX11.i686 -y yum install libXau -y yum install libXau.i686 -y yum install libxcb -y yum install libxcb.i686 -y yum install libXi -y yum install libXi.i686 -y yum install make -y yum install sysstat -y yum install unixODBC -y yum install unixODBC-devel -y
4 – Crie os novos grupos e o usuários
groupadd -g 54321 oinstall groupadd -g 54322 dba groupadd -g 54323 oper #groupadd -g 54324 backupdba #groupadd -g 54325 dgdba #groupadd -g 54326 kmdba #groupadd -g 54327 asmdba #groupadd -g 54328 asmoper #groupadd -g 54329 asmadmin useradd -u 54321 -g oinstall -G dba,oper oracle
Caso precise dos outros usuários descomente as linhas.
====================================================================
Instalação Adicional que deve ser feita tanto automático como manual
====================================================================
O seguintes procedimentos devem ser feitos tanto na instalação Manual como na Automática.
1 – Setar a senha para o usuário Oracle
passwd oracle
2 – Efetuar a alteração no arquivo “/etc/security/limits.d/90-nproc.conf” conforme abaixo – Veja MOS Note [ID 1487773.1]
# Change this * soft nproc 1024 # To this * - nproc 16384
3 – Setar o Linux Secure para permissive editando o arquivo “/etc/selinux/config”, certificasse que o parâmetro SELINUX esta setado conforme abaixo.
SELINUX=permissive
Uma vez feita a mudança, restart o servidor e execute o seguinte comando.
# setenforce Permissive
4 – Certifique que o Firewall esteja desabilitado
-- ipv4 # service iptables stop # chkconfig iptables off
-- ipv6 # service ip6tables stop # chkconfig ip6tables off
5 – Crie o diretório para instalação do software oracle e altere sua permissão para o usuário oracle
mkdir -p /u01/app/oracle/product/12.1.0.2/db_1 chown -R oracle:oinstall /u01 chmod -R 775 /u01
Colocar o ponto de montagem abaixo do root “/” é tipicamente um má ideia, é aconselhável criar um ponto de montagem reservado para o software oracle, para um instalação real “/” deve ser reservado para o SO.
Trabalhando de console, ou usando SSH, logue com root e emita o seguinte comando.
xhost +<machine-name>
6 – Adicione a seguinte linha no final do arquivo “/home/oracle/.bash_profile“
# Oracle Settings export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=ora12c.localdomain export ORACLE_UNQNAME=cdb1 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/12.1.0.2/db_1 export ORACLE_SID=cdb1 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/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
************************************************************************************************
Instalação do Oracle e criação da base de dados
*************************************************************************************************
Logue como usuário oracle. Se você está usando um emulador X server então set a variável DISPLAY no ambiente.
DISPLAY=<machine-name>:0.0; export DISPLAY
Caso você não possua uma ferramenta para conectar no servidor e também um emulador X server eu indicaria o MobaXterm que possui os dois na mesma ferramenta, MobaXterm clique aqui.
Se eu estivesse utilizando o MobaXterm bastaria conectar no servidor como oracle e executar o ./runinstaller que a tela de instalação apareceria na minha máquina.
No meu caso eu utilizo na instalação abaixo o F-Secure SSH Client, ele não possui um emulador X Server, então eu faço o seguinte, eu abro o MobaXterm minimizo, conecto no servidor com o F-Secure SSH Client com oracle e seto a variável DISPLAY para o ip da minha máquina.
DISPLAY=<ip-machine-name>:0.0; export DISPLAY
Inicialize o Oracle Universal Installer (OUI) emitindo o seguinte comando dentro do diretório database.
./runInstaller
Desmarque a opção I wish to receive security.… porque eu não quero receber updates de segurança via suporte Oracle, o qual deve possuir uma licença paga para o mesmo, clique em Next
Clique em Yes para confirmar
Escolha Install database software only, quero somente instalar o software oracle primeiro, clique em Next
Escolha a opção Single instance database installation, clique em Next
As outras opções são para Oracle Rac.
Selecione a linguagem, English e clique em Next
Escolha a opção Enterprise Edition e clique em Next
Caso você tenha configurado corretamente as variáveis no arquivo .bash_profile, vai aparecer conforme abaixo, clique em Next
A tela abaixo informa o local onde vai ser criado o arquivo oraInventory do Oracle, clique em Next
Será mostrado a relação de cada grupo que será feita a instalação, clique em Next
Será feita um check dos pré-requisitos da instalação
Abaixo será mostrado um resumo do que vai ser instalado, clique em Install
Será feita a instalação aguarde
No meio da instalação vai aparecer a tela abaixo, devemos abrir um novo sessão conectar como root e executar as linhas abaixo.
Depois de executada as linhas, clique em ok, e depois no close para sair da instalação do software oracle.
O próximo passo, vamos criar a base de dados. Como estou efetuando a criação da base de dados depois da instalação do software oracle e vou querer instalar o Enterprise Manager Database Express é necessário efetuar a criação do LISTENER antes da criação do Banco de dados. Caso eu não instalasse o Database Express eu poderia criar o Listener no final da criação do Banco de dados, conforme estarei efetuando com o tnsnames.ora e sqlnet.ora.
Criação do LISTENER
Conectado como oracle, estarei chamado o netca – network configuration assistent, observe que devemos setar a variável DISPLAY
netca
Selecione a opção Listener configuration e clique em Next
Add e clique em Next
Deixe LISTENER e clique em Next
Selecione TCP e clique em Next
A porta estaremos utilizando a default 1521 e clique em Next
Selecione No e clique em Next
Clique em Next novamente para completar
Clique em Finish para sair
Para criação do banco de dados estarei utilizando a ferramente dbca, database configuration assistent
dbca
Escolha a opcção – Create Database e clique em Next
Escolha a opção Advanced Mode – Modo avançando, onde estarei passando minha configuração, clique em Next
Selecione a opção Custom Database – para customizar o database, clique em Next
Estarei utilizando o novo recurso do Oracle, o multitenant – no Global Database Name e SID estarei setando o nome para CDB1.
Marque a opção Create As Container Database, para utilizar este novo recurso do Oracle. Caso eu quisesse criar um banco de dados normal igual as versões anteriores do 12c eu não marcaria está opção.
Marcando está opção eu estarei criado um super database CDB1
Também estarei criado dentro do CDB1 um sub database ( pluggabe database) – PDB1
Marque a opção Create a Container Database with on or more PDBs.
PS: O multitenant do oracle eu um novo recurso implantado no 12c, onde pode ser utilizado nas versões Enterprise, Standard Edition e Standard Editon one. Só que deve possuir um licença a parte para sua utilização. Sem está licença só podemos utilizar 1 PDB.
Depois da configuração clique em Next
Marque a opção Configure Enterprise …. e deixa a porta default 5500 para instalação do Enterprise Manager Database Express – clique em Next
Aqui estarei setando uma única senha para todos os usuários, mais é aconselhável colocar senha diferentes para os usuários SYS, SYSTEM E PDBADMIN (relacionado ao pluggable database)
Clique em Next
Como eu havia criado o LISTENER, ele será identificado , clique em Next
Configure o local dos arquivos do database e especifique a localização e o tamanho Fast recovery area, estarei deixando o default, clique em Next
A próxima tela mostra os componentes que serão instalado com o Enterprise, clique em Next
Eu não estarei utilizando o Database Vault e o Label Security, desmarque a opção e clique em Next
Configurando o tamanho da memória para 1G, usando o gerenciamento automático de memória, lembrando que está opção utiliza os parâmentros memory_target e memory_max_target, onde a mesma já inclui o gerenciamento automático da PGA.
Configurando o tamanho do bloco oracle e o número de processos, deixarei o default
Configurando o character set do database e o National character set, deixe o default
Configurando o modo de conexão, deixe o default Dedicated server mode
Abaixo mostra alguns parâmetros da opção All Initializaion parameters, as opções que serão setadas no arquivo spfile do database.
Na versão 11g foi incluído um parâmetro chamado sec_case_sensitive_logon, onde possibilitava criar senha oracle com diferenciação de maiúscula e minúscula, acho que este parâmetro não fez muito sucesso ele foi excluído do oracle 12c.
Na instalação 11g neste momento eu setava este parâmetro para FALSE.
Clique em close para fechar este tela.
Nesta tela está marcada somente Create Database, eu gosto de marca as outras para criar um template e também os scripts de criação da base para um instalação manual caso necessário, você não precisa marcar estas opções, somente a opção Create Database e clique em Next
Vai ser mostrado um tela de resumo de tudo que vai ser feito na criação do banco de dados, clique em Finish
Será feita a criação da base de dados, aguarde
Ao termino da criação do banco de dados vai ser mostrado a tela baixo com informações do database. Clique em Finish
Caso queria alterar a senha de algum usuário antes de fechar, a opção Password Management permite fazer este procedimento, no meu caso eu deixa como está, e só mostrei a tela abaixo por motivo de informação.
Bom, para finalizar vamos agora criar o arquivo de tnsnames.ora e o sqlnet.ora.
Lembrando que devemos setar a variável DISPLAY.
Criando o sqlnet.ora
netca
Selecione a opção Naming Methods configuration, clique em Next
Selecione a opção Local Naming e Easy Connect Naming e clique em Next
Clique em Next para completar a configuração e criação do sqlnet.ora
Criando o tnsnames.ora e um serviço
Selecione a opção Local Net Service Name configuration e clique em Next
Add e clique em Next
Aqui devemos setar o nome do SID do banco de dados, e clique em Next
Escolha TCP e clique em Next
No Host name, digite o nome do servidor do banco de dados e clique em Next
Escolha o opção No, do not test e clique em Next
Aqui vamos setar um apelido para o nome de serviço que ficará dentro do tnsnames.ora e clique em Next
Selecione No e clique em Next
Para completar clique em Next novamente.
Clique em Finish para fechara tela.
Para efetuar um teste no novo serviço criado dentro do tnsnames.ora podemos utilizar o tnsping.
tnsping dbcdb1 10
Caso não retorne ok , está com problema na configuração do serviço e deve ser corrigido.
Conectando na base de dados utilizando o nome do serviço dbcdb1
Conectando como sysdba
Conectando no Enterprise Manager Database Express
Tudo ok…
Error ora-01031 insufficient privileges / erro ora-01031 privilégios insuficientes – (Windows) Como solucionar
Estarei solucionado um tipo de erro comum que em vez em quando ocorre em um Servidor de Banco de Dados sobre uma plataforma Windows, estou falando sobre o erro ora-01031 privilégios insuficiente.
Várias são as formas de esse erro ocorrer, estarei falando sobre um delas.
Quando efetuamos a criação de um Banco de dados Oracle através da ferramenta dbca em um Servidor Windows, o próprio dbca cria um grupo no Windows chamado ora_dba e nele é adicionado o usuário que está criando o Banco de Dados.
Quando efetuamos a criação do Banco de Dados através de um script devemos adicionar o usuário que esta efetuando a criação do Banco de dados neste grupo.
O grupo ora_dba consta os usuário que terão acesso a base de dados com o privilégio sysdba, quando o usuário que está acessando o Banco de dados com a permissão sysdba não consta neste grupo recebe o erro ora-01031 privilégios insuficiente.
Para exemplificar está ocorrência de erro, vou simular duas formas desse erro ocorrer.
Dados do meu ambiente:
1 – Servidor de Banco de Dados – hostname => WS2008-ORA11 – username: Administrator
1 – Servidor de Domínio – nome do domínio => MR.local username: Administrador
Para diferenciar os usuários pode ser visto que um está em inglês e outro em português, ou seja, servidor de banco de dados está instalado em inglês e o servidor de domínio está em português, isso nos ajudara a entender melhor.
Lembrando que o usuário que efetua a criação da base será adicionado no grupo ora_dba automaticamente, após a sua criação utilizando o dbca. Criação da base via script deve ser adicionado manualmente.
# Cenário 1
Neste primeiro cenário eu possuo um Servidor de domínio MR.local já criado e adicionei ao domínio a máquina que vai ser o Servidor de Banco de dados depois criei a base de dados neste servidor.
Primeira ocorrência de erro ora-01031 privilégios insuficientes , estou tentando conectar na base de dados utilizando o usuário local do WS2008-ORA11 – Administator
Conecto no Servidor
Tento efetuar um conexão na base de dados como sysdba
Como pode ser visto acima não consigo conectar, ocorrendo o erro.
Efetuando a correção
Abro o gerenciador de computador, vou em Iniciar (Start), Executar (Run) e digito um atalho => compmgmt.msc
Vai ser aberto o gerenciador de computador, vai na opção Local Users and Groups (Usuários locais e Grupos) e na pasta Groups (Grupos), na tela ao lado podemos encontrar o grupo ora_dba
Clicando duas vezes neste grupo podemos vê a tela abaixo, observe que o usuário do domínio MR\Administrador consta dentro do grupo, isso porque foi através desse usuário que foi feita a criação da base de dados.
Clique em Add (Adicionar) para adicionar o usuário local
Vá no Locations (Localização) para localizar o servidor da base
Necessário passar as credencias do domínio
Adicionei o servidor WS2008-ORA11 em locations e depois digitei o usuário Administrator abaixo ficando dessa forma
Dentro do grupo ficou da seguinte forma com o usuário local adicionado. clique ok.
Efetuando novamente a conexão.
Tudo ok agora.
# Cenário 2
Eu tenho um Servidor de Banco de Dados WS2008-ORA11 com uma base já criada e depois foi adicionado ao Servidor de Domínio.
Neste necessário vou me conectar com o usuário do Domínio MR\Administrador para me conectar na base de dados.
Conectando no Servidor
Tentando me conectar na base de dados como sysdba
Como pode ser visto acima não consigo conectar, ocorrendo o erro.
Efetuando a correção
Abro o gerenciador de computador, vou em Iniciar (Start), Executar (Run) e digito um atalho => compmgmt.msc
Vai ser aberto o gerenciador de computador, vai na opção Local Users and Groups (Usuários locais e Grupos) e na pasta Groups (Grupos), na tela ao lado podemos encontrar o grupo ora_dba
Clicando duas vezes neste grupo podemos vê a tela abaixo, observe que o usuário local Administrator consta dentro do grupo, isso porque foi através desse usuário que foi feita a criação da base de dados.
Clique em Add (Adicionar) para adicionar o usuário do domínio
Como a máquina foi adicionado ao domínio, em location já consta o nome do domínio mr.local
Adicione somente o nome do usuário abaixo e clique ok
O usuário do domínio MR\Administrador foi adicionado conforme pode vê abaixo
Efetuamos uma nova tentativa de conexão.
A conexão agora está ok.
Obs: Este tipo de erro ora-01031 privilégios insuficientes pode ocorrer em diversas situações, eu comentei sobre uma situação que ocorre frequentemente quando precisamos acessar o servidor de banco de dados e não podemos acessar com o usuário de domínio Administrador, neste acaso usamos o usuário local.
Tem cenário que também o usuário que criou a base de dados foi um usuário comum (oracle) que foi adicionado ao grupo administrador do servidor e não um usuário Administrador diretamente.
Um outro cenário que pode ser visto sobre este erro também tenho postado clique aqui.
Promovendo um Servidor a Controlador de Dominio
Para que possamos chegar ao mais próximo de um ambiente corporativo, é muito interessante possuir um servidor com um controlador de domínio instalado. Em meu ambiente possuo o VirtualBox instalado e nele consta várias máquinas criadas onde uma delas será meu servidor de domínio. Além disso também possuo uma máquina Cliente com Windows 7, para que eu possa simular um usuário do dia dia… Cliente / Servidor.
Abaixo segue os passos necessários para promover um Servidor com Windows 2008 R2 instalado, para Controlador de Domínio. Caso queira acompanhar a instalação do Windows 7 clique aqui, Windows 2008 R2 clique aqui.
Primeiro devemos configurar o Dns da placa de rede igual ao ip da placa de rede do Servidor Windows 2008, isso porque não possuímos na rede um Servidor Dns, então forçaremos a criação de um, no mesmo servidor do controlador de domínio.
Depois vá no menu Iniciar, no meu caso como está inglês Start e vá na opção executar (Run)
Digite dcpromo e clique em Ok
Aparecerá a seguinte tela de boas-vindas, marque a opção Usar a instalalção em modo avançado e clique em Avançar
A próxima tela vai esta falando sobre a compatibilidade entre as versões Windows 2008 e Windows 2008 R2, clique em Avançar
Como vamos está criando um domínio pela primeira vez, sem ter um outro existente na rede marque a opção Criar um novo domínio em uma nova floresta e clique em Avançar
Na próxima tela é onde vamos está dando nome ao nosso domínio, estarei colocando mr.local e depois Avançar
Na tela seguinte vai mostra o nome do Netbios que versões anteriores do Windows vão utilizar para identificar o novo domínio, deixa como está e clique em Avançar
A próxima tela setamos o nível de funcionalidade da foresta, escolha a versão do Windows onde está sendo promovido o domínio, Windows Server 2008 R2 e clique em Avançar
Como esta máquina é o primeiro controlador de domínio a opção Catálogo global já vai está marcada, sem opção de escolha, somente a opção DNS Server tem opção de escolha, deixa-a marcada e clique em Avançar.
Como não temos servidor DNS na rede vai ser criado um DNS Server no próprio Servidor de domínio. Por isso é muito importante na configuração ip da placa de rede, configurar o dns com o mesmo ip do servidor.
Clique em sim para confirmar a criação do Dns Server na máquina
A próxima tela podemos setar o diretório para conter o database do controlador de domínio, log e SYSVOL deixe como está é clique em Avançar
A próxima tela é onde setamos uma senha forte para manutenção e restore do controlador de domínio quando necessário, essa senha é diferente da senha do administrador do domínio, tenha atenção e não esqueça esta senha., clique em Avançar
A próxima tela nos passa um resumo de toda configuração, e também nos permite salvar em um arquivo para execução em modo texto caso necessário, clique em Avançar
O controlador de domínio será criado, aguarde…
Será informado que a criação do Controlador de domínio completou com sucesso, clique em Terminar (Finish).
Clique em Reiniciar agora (Restart Now), para reinicializar o Windows e a configuração do controlador de domínio entrar em vigor.
Depois de inicializar sua tela de logon vai está da seguinte forma, basta logar que você já possui uma controlador de domínio, bastando criar os usuário e ingressar a máquina cliente para possuir um ambiente de treinamento corporativo.
Ingressando um computador com Windows 7 no domínio clique aqui.
Entendendo o OFA do Oracle 12c – Optimal Flexible Architecture
Todo DBA deve se familiarizar com a estrutura de diretório do Oracle, esse é um dos princípios básicos que devemos dominar. Uma hora ou outra esqueço de algum diretório e perco um tempinho para me lembrar, até mesmo quando estou num processo de remoção do software para uma nova instalação, visando está orientação, fiz uma pequena documentação sobre o assunto para uma rápida consulta quando necessário.
Apesar da figura abaixo está relacionada a versão 12c do Oracle, boa parte também se aplica a versão 10g e 11g.
O OFA inclui alguns diretórios que devemos nos familiarizar:
- Diretório Oracle Inventory
- Diretório Oracle base (ORACLE_BASE)
- Diretório Oracle home (ORACLE_HOME)
- Diretório Oracle Network file (TNS_ADMIN)
- Diretório – Automatic Diagnostic Repository ( ADR_HOME)
Esses diretórios são discutidos abaixo:
Oracle Inventory Directory
O Oracle inventory directory armazena o inventário do software Oracle instalado no servidor. Esse diretório é requerido e esta compartilhado em torno de toda instalação do software oracle no servidor. Quando você instala o Oracle, o instalador checa para vê se existe uma estrutura OFA no formato /u[0-9]/app. Se tal diretório existe, então o instalador cria um Oracle inventory directory tal como:
/u01/app/oraInventory
Se a variável ORACLE_BASE está definida para o usuário oracle do sistema operacional, então o instalador cria um diretório para a localização do inventário Oracle.
ORACLE_BASE/../oraInventory
Por exemplo, se ORACLE_BASE está definido como /ora1/app/oracle, então o instalador define a localização do inventário Oracle como:
/ora01/app/oraInventory
Se o instalador não achar a estrutura de diretório OFA ou uma variável ORACLE_BASE, então a localização para o Oracle inventory é criada abaixo do diretório HOME do usuário oracle. Para instance, se o diretório HOME é /home/oracle, então a localização do Oracle inventory é
/home/oracle/oraInventory
Diretório Oracle Base
O diretório Oracle base é o diretório top para instalação do software Oracle. Você pode instalar uma ou mais versões do software Oracle neste diretório. O OFA para o diretório Oracle base é como seguinte:
/<mount_point>/app/<software_owner>
O nome típico para o mount point inclui /u01, /ora01, /oracle, e /oracle01. Você pode nomear o mount point de acordo com seu ambiente. Eu prefiro usar um nome para o mount point tal como /u01, /ora01. É curto, e quanto eu olho o mount point sobre o servidor database, eu posso imediatamente dizer que está sendo usado por um Oracle database. Também, um mount point curto é mais fácil para usar quando você está consultando o dicionário de dados para reportar sobre aspecto físico do seu banco de dados e até mesmo para navegar entre os diretório no SO fica mais fácil.
O owner do software é tipicamente dado o nome de oracle. Este é o usuário do SO que você usa para instalar o software oracle. Abaixo segue um pequeno exemplo:
/u01/app/oracle
Diretório Oracle Home
O diretório Oracle home define a localização da instalação do software para um produto particular, tal como Oracle Database 12c ou Oracle Database 11g. Você deve instalar produtos diferentes ou releases diferentes de um produto em Oracle homes separados. A OFA recomenda o diretório Oracle home como o seguinte:
ORACLE_BASE/product/<version>/<install_name>
Na linha de código anterior, possíveis versões (version) podem ser 12.1.0.1 e 11.2.0.3>. Possíveis valores para install_name inclui db_1, devdb1, test2 e prod1. Aqui está um exemplo de um Oracle home para um database 12.1.
/u01/app/oracle/product/12.1.0.1/db_1
Alguns DBAs não gostam da string db_1 no final do diretório ORACLE_HOME e vê que não precisa disso. A razão para o db_1 é que você pode ter duas instalações separadas de binários: uma instalação desenvolvimento e uma instalação teste. Se você não precisa desta configuração em seu ambiente, sinta-se livre para deletar a string extra (db_1).
Diretório Oracle Network Files
Alguns utilitários Oracle usam o valor TNS_ADMIN para localizar o arquivo de configuração na rede. Este diretório e definido como ORACLE_HOME/network/admin. Tipicamente contém o tnsnames.ora e listener.ora arquivo Oracle net.
Automatic Diagnostic Repository
Iniciado com Oracle Database 11g, o diretório ADR_HOME especifica a localização dos arquivos de diagnostico relatados ao Oracle. Esses arquivos são cruciais para problemas de troubleshooting com o database Oracle. Esse diretório e definido como ORACLE_BASE/diag/rdbms/lower(db_unique_name)/instance_name. Você pode consultar a view V$PARAMETER para obter os valores de db_unique_name e instance_name.
Por exemplo, na próxima linha, o database unique name é o12c, e o instance name é O12C:
/u01/app/oracle/diag/rdbms/o12c/O12C
Você pode verificar a localização do diretório ADR_HOME via esta query:
select value from V$diag_info where name=’ADR Home’;
Criando uma replicação no Mysql – (Master – Slave)
No Mysql podemos criar vários tipos de replicação, sendo a mais comum a master/slave, onde toda escrita feita no servidor master será replicado para o servidor slave.
A principio estarei descrevendo os passos para a criação de uma replicação Master/Slave em outro post estarei falando sobre replicação Master/Master.
Obs: A Replicação no mysql não é um tipo de backup como alguns pensam, isso porque toda ocorrência que ocorrer no Servidor Master será aplicado no Servidor Slave, ou seja, as bases terão as informações iguais.
Se ocorrer um drop no Master também vai ocorrer no Slave, tenha muito cuidado com isso.
A replicação é muito útil quando se deseja fazer um balanceamento de carga (ex: consulta pesadas podem ser direcionadas para o Slave, relatórios, backups, teste de upgrade de versão, alta disponibilidade, coisas assim…)
Como a replicação trabalha:
No servidor Master devemos habilitar o log binário, onde será registrado todas as alterações no servidor.
1 – O Master grava as mudanças do dados no binary log (log binário) – essas gravações são chamadas binary log events (eventos do log binário)
2 – A replica (Slave) copia os eventos do log binário do Master para o relay log.
3 – A replica (Slave) acessa os eventos no relay log aplicando as mudanças em seus próprios dados.
A Primeira parte do processo é o binário log no master ( Eu vou mostrar como setar isso depois). Antes de cada transação terminar de completar de atualizar os dados no Master, o Master grava as mudanças no log binário ( binary log), o Mysql escreve as transações serialmente no binário log, mesmo se as declarações na transação forem intercaladas durante a execução.
Depois de escrever os eventos no log binário, o Master diz ao storage engine commitar a transação.
O próximo passo é para a replica (Slave) copiar o log binário do Master em seu próprio hard drive (disco rigido) dentro do chamado relay log. Para iniciar, é startado um trabalho do thread, chamado de I/O slave thread. O I/O thread abri uma conexão cliente com o servidor Master, então inicia um especial processo de dump do log binário ( binlog dump process). Não existe correspondência de comando SQL.
O binlog dump process ler os eventos do log binário do Master. Quando não se tem eventos, este processo dorme (sleep) e espera (wait) por um sinal do Master quando existirem nos eventos. O I/O thread escreve os eventos no relay log da replica (Slave).
O SQL slave thread é a ultima parte do processo. Esse thread lê e reaplica os eventos do relay log, atualizando os dados da replica correlacionado com os dados do Master. Os eventos que o SQL thread executa pode opcionalmente ir dentro do log binário da própria replica, habilitando o binário log da replica e possibilitando replicar de uma replica também. Estarei comentando sobre isso.
Levantamento de informações do Servidores
Faça um levantamento dos servidores envolvidos, neste exemplo estarei fazendo uma replicação com dois servidores, mais nada impede de você criar em um único servidor com dois serviços de mysqld instalado para teste.
Os dois servidores devem possuir o mysql já instalado para a criação da replicação, caso queria saber como instalar o mysql, eu indico a instalação via arquivo binário é a que eu mais gosto, por termos mais controle onde cada arquivo está instalado. Você pode acompanhar no post que escrevi sobre este tipo de instalação aqui.
# Dados Servidor Master
hostame: server1
ip: 192.168.0.5
# Dados Servidor Slave
hostname: server2
ip: 192.168.0.10
Setando a Replicação:
1 – Setando uma conta para replicação
2 – Configurando o Master e o Slave (replica)
3 – Instruindo a replica conectar e replicar do master os eventos.
1 – Criando a conta de usuário para a Replicação
O I/O slave thread que executa na replica, faz um conexão tcp/ip no master. Isso significa que deve criar uma conta de usuário no master dando privilégios apropriados.
Aqui está como criar essa conta de usuário, nos vamos chamar o usuário de repl.
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@’192.168.0.%’ IDENTIFIED BY ‘p4ssword’;
Estarei criando essa conta de usuário em ambos os servidores no Master e no Slave, nota que eu restringi o uso de conta local (localhost) porque a conta de replicação deve ter habilidade de leitura em todas as mudança no servidor.
O usuário de replicação precisa somente do privilégio REPLICATION SLAVE sobre o master e não precisa realmente do privilégio REPLICATION CLIENT, então porque conceder este privilégio em ambos os servidores. Existe duas razões.
* A conta que usamos para monitorar e gerenciar a replicação precisa do privilégio REPLICATION CLIENT é mais fácil usar a mesma conta para ambos os propósitos.
* Se setarmos a conta no Master e depois clonar a replica disso, a replica vai esta setado conforme o master, nesse caso queremos a replica e o master com regras iguais.
2 – Configurando o Master e o Slave (replica)
O próximo passo é habilitar alguns parâmetros no Master, no qual se chama server1. Nós precisamos habilitar o log binário e especificar o Server id, o id do servidor. Esses parâmetro você deve setar dentro do arquivo de configuração my.cnf.
### Master ###
# — Básico
log_bin = mysql-server1-bin
server_id = 10
# –Avançado
sync_binlog=1
Você deve setar explicitamente um valor para server_id porque o valor 1 é setado como valor default, caso você não configure um. Usando o valor 1 pode causar conflito com servidores que não tem o valor setado explicitamente.
É necessário restart o mysql para que o valor entre em vigor.
— Verificando se o o log binário está ativo
mysql> show master status;
+——————————–+————-+———————-+—————————+—————————–+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+———————————————–+———————-+—————————+—————————–+
| mysql-server1.000001 | 98 | | | |
+———————————————–+———————–+—————————+—————————-+
1 row in set (0.01 sec)
A replica vai precisar de uma configuração parecida com o do Master sendo também necessário restart o mysql depois.
### Slave ###
# — Básico
log_bin = mysql-server2-bin
server_id = 2
relay_log = /usr/local/mysql/data/mysql-server2-relay-bin
# — Avançado
log_slave_updates = 1
read_only = 1
Alguns parâmetros acima não são muito necessário, mais setei só para esclarecer uma dúvida.
Habilite o read_only somente se você deseja que o slave não aceite escrita, no me caso setei para 1 para não permitir escrita.
Habilite o log_slave_updates somente se o slave será Master de outro servidor.
Normalmente, o slave não loga em seu próprio log binário alguns updates que são recebidos do servidor master. Esta opção diz ao slave logar os updates feitos pelo SQL thread em seu próprio log binário. Para essa opção ter algum efeito, o slave deve também ser inicializado com a opção –log-bin habilitado.
É utilizando quando se deseja fazer a replica ser master de outra replica, conforme a figura abaixo.
3 – Instruindo a replica conectar e replicar do master os eventos.
Inicializando a Replica
O próximo passo é dizer a replica como conectar no Master e iniciar o replay do log binário. Você não deve usar o my.cnf para isso, use a declaração CHANGE MASTER TO . Com essa declaração você não vai precisar restart o mysql, esta opção deixa apontar para uma replica diferente no futuro caso desejado, sem a necessidade de parada de banco de dados.
CHANGE MASTER TO MASTER_HOST =’server1′,
MASTER_USER=’repl’,
MASTER_PASSWORD=’p4ssword’,
MASTER_PORT=3306,
MASTER_LOG_FILE=’mysql-server1.000001′,
MASTER_LOG_POS=0;
O parâmetro MASTER_LOG_POS é setado para 0 porque é o início do log. Depois que você executar isso, você poderá inspecionar a saída SHOW SLAVE STATUS e verificar se a replicação está ok.
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: server1
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-server1.000001
Read_Master_Log_Pos: 164
Relay_Log_File: mysql-server2-relay-bin.000001
Relay_Log_Pos: 164
Relay_Master_Log_File: mysql-server1.000001
Slave_IO_Running: No
Slave_SQL_Running: No
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1149
Relay_Log_Space: 1649
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 0
Master_UUID: 4d44af96-4cf1-11e5-9410-0800275171d0
Master_Info_File: /usr/local/mysql-5.6.26-linux-glibc2.5-x86_64/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State:
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)
Os parâmetros Slave_IO_State, Slave_IO_Running e Slave_SQL_Running mostram que a replicação não está executando.
Para inicializar a replicação utilizar o comando START SLAVE;
mysql> start slave;
Query OK, 0 rows affected (0.08 sec)
Verificando o status da replicação novamente:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: server1
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-server1.000002
Read_Master_Log_Pos: 120
Relay_Log_File: mysql-server2-relay-bin.000003
Relay_Log_Pos: 280
Relay_Master_Log_File: mysql-server1.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 120
Relay_Log_Space: 618
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 10
Master_UUID: 4d44af96-4cf1-11e5-9410-0800275171d0
Master_Info_File: /usr/local/mysql-5.6.26-linux-glibc2.5-x86_64/data/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
1 row in set (0.00 sec)
mysql>
Verificando novamente os parâmetros Slave_IO_StateSlave_IO_Running e Slave_SQL_Running podemos reparar que a replicação agora está funcionado.
Slave_IO_State: Waiting for master to send event — Está esperando o Master enviar novos eventos.
Slave_IO_Running: Yes — Informa que o thread IO Slave está executando.
Slave_SQL_Running: Yes — Informa que o thread SQL Slave está executando.
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it —- informa que o thread SQL Slave tem lido todo o relay log, e está esperando o thread I/O slave enviar (atualizar) o relay log com novos eventos, para ser aplicado no banco novamente pelo tread SQL slave.
O parâmetro Seconds_Behind_Master: não está setado mais como NULL.
Caso ocorra algum problema na replicação os campos abaixo informará o tipo de erro
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Slave_IO_Running = Nos diz se a thread de IO está rodando temos que encontrar o status Yes nessa linha
Slave_SQL_Running = Nos diz se a thread de SQL está rodando temos que encontrar o status Yes nessa linha
Seconds_Behind_Master = Nos diz se o nosso slave está atrazado em relação ao master, nesta linha temos que encontrar o numero 0 (Zero) para que o slave esteja atualizado em relação ao master
Last_IO_Error = Caso exista algum erro com a thread de IO nesta linha ele irá informar o que está acontecendo
Last_SQL_Error = Caso exista algum erro com a thread de SQL nesta linha ele irá informar o que está acontecendo
Após inicializar a replicação podemos vê os processos conectados no servidores, através do comando SHOW PROCESSLIST;
server1 – Master
mysql> SHOW PROCESSLIST;
+—-+——+——————-+——+————-+——+———————————————————————–+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—-+——+——————-+——+————-+——+———————————————————————–+——————+
| 1 | repl | server2:57946 | NULL | Binlog Dump | 1404 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL |
| 2 | root | localhost | NULL | Query | 0 | init | SHOW PROCESSLIST |
+—-+——+——————-+——+————-+——+———————————————————————–+——————+
2 rows in set (0.00 sec)
server2 – Slave
mysql> SHOW PROCESSLIST;
+—-+————-+———–+——+———+——+—————————————————————————–+——————+
| Id | User | Host | db | Command | Time | State | Info |
+—-+————-+———–+——+———+——+—————————————————————————–+——————+
| 2 | root | localhost | NULL | Query | 0 | init | SHOW PROCESSLIST |
| 3 | system user | | NULL | Connect | 1304 | Waiting for master to send event | NULL |
| 4 | system user | | NULL | Connect | 1303 | Slave has read all relay log; waiting for the slave I/O thread to update it | NULL |
+—-+————-+———–+——+———+——+—————————————————————————–+——————+
3 rows in set (0.00 sec)
Status backup Rman – Quanto tempo vai levar para terminar
Uma das formas para descobrir quanto tempo ainda falta para terminar o backup realizado com RMAN, é consultando a view v$session_longops.
Essa view mostra as vários operações que estão executando por mais de 6 segundos no banco de dados Oracle.
Veja os passos abaixos:
Primeiro vamos relacionar o processo servidor com o channel do RMAN, através do comando SET COMMAND ID
RMAN> run { 2> allocate channel t1 type disk; 3> set command id to ‘rman’; 4> backup datafile 1; 5> release channel t1; 6> }
Agora, basta executar a query, vendo o resultado.
SYS@orcl> SELECT sid, serial#, sofar, totalwork, 2 round(sofar/totalwork*100,2) "% Complete" 3 FROM v$session_longops 4 WHERE opname LIKE 'RMAN:%' 5 AND opname NOT LIKE 'RMAN: aggregate%' 6 AND totalwork != 0; SID SERIAL# SOFAR TOTALWORK % Complete ---------- ---------- ---------- ---------- ---------- 139 17 13951 62720 22.24 SYS@orcl> / SID SERIAL# SOFAR TOTALWORK % Complete ---------- ---------- ---------- ---------- ---------- 139 17 24831 62720 39.59 SYS@orcl> / SID SERIAL# SOFAR TOTALWORK % Complete ---------- ---------- ---------- ---------- ---------- 139 17 62591 62720 99.7