quinta-feira, 4 de março de 2010

ORACLE 11 g R 1 - PRIMEIROS CONTATOS - PARTE IV

Olá á todos, como andam as coisas?
Bem estamos chegando no final da nossa empreitada, agora só nos resta criar o BD e torcer para que tudo dê certo correto?

Vamos ver então como devemos proceder?

CRIANDO MEU PRIMEIRO BANCO DE DADOS 11g MANUALMENTE

Bem, eu optei por fazermos a criação manual primeiramente, visto que é menos mecanica do que as demais.

Antes de iniciarmos , devemos atentar a alguns aspectos pertinentes a essa tarefa, são eles:

1 - Definir a estruturação de pastas e diretórios a serem usados ( Sugestão: usar padronização OFA).
2 - Definir a nomeação do nosso Banco ( SID).
3 - Criar um método de autenticação para nossos usuários iniciais e superusuários (ORAPWD).
4 - Criar arquivo de Parametros de inicialização, muito importante para que nosso ambiente ganhe vida.

Uma vez com os pontos acima definidos, os demais passos são execuções do processo de criação do Banco de dados, mas vejamos como proceder em cada ponto.

DEFININDO MINHA ESTRUTURAÇÃO

Todos já devem ter visto, pelo menos quem já teve chance de ter contato com releases anteriores, que o Oracle prédetermina alguns diretórios no modo gráfico, mas que porem você via texto ou manualmente pode e deve criar sua estrutura de pastas.

Com exceção da estrutura dos binários do Oracle, que já foi mostrado , ainda temos que nos preocupar com o armazenamento dos arquivos do Banco de Dados e seus respectivos Logs, basicamente para os que seguem a padronização OFA devemos ter os seguintes diretórios :

 

Note que aqui estamos no que poderiamos chamar de diretório Raiz da estrutura de logs "/u01/app/oracle/admin/labdb11g", e dentro dele devemos criar os seguintes diretórios :
 
Vamos entender cada um deles :
./admin
Responsável por organizar os arquivos administrativos de cada instância Oracle.

./admin/labdb11g:
Pasta que recebe o nome do meu futuro banco de dados.

./admin/labdb11g/adhoc:
Pasta destinada a armazenar scripts SQL, PL/SQL ou shells.

./admin/labdb11g/adump:
Audit Dump, onde são gerados os arquivos e auditoria do banco de dados, com extensão AUD.

./admin/labdb11g/bdump:
Background Dump, caminho que é utilizado pelos processos de plano de fundo do Oracle e do alert.log da instância.

./admin/labdb11g/cdump:
Core Dump, onde são gerados traces do Core do Oracle, geralmente ligados a problemas do sistema operacional.

./admin/labdb11g/flash_recovery_area:
Flashback Recovery Area (FRA) é um caminho opcional no momento da criação do banco de dados. Nesse caminho, são gerados backupsets, backup pieces, archive logs, online logs e flashback logs. É opcional pois dependendo do tamanho e quantidade de archived logs gerados pelo banco de dados, é necessário ter um disco dedicado ao FRA.

./admin/labdb11g/udump:
User Dump, é o diretório que armazena os traces gerados por usuários ou por processos específicos do banco de dados.
./admin/labdb11g/exp:
Export, diretório destinado aos arquivos gerados através do Data Pump Export (Expdp) ou Export Utility (exp).

 Ok. Estamos com parte de nossa estrutura pronta, nos resta ainda definirmos onde serão armazenados os arquivos fisicos do nosso Banco, se você usa ASM não há muito o que discutir, serão armazenados obviamente dentro do seu ASM, separados pelos Grupos e subsequentemenre pelas pastas que identificam suas instâncias.

Veja na figura asseguir que criaremos um diretório dentro do caminho "/u01/app/oracle", este diretório será nome do como "ORADATA" e terá uma subpasta com o nome do nosso Banco de dados , ou seja, LABDB11G :

 

Uma breve explicação rápida para conceituar :

/u01/ : Ponto de montagem (Filesystem) que armazenará o banco de dados e ou seus binários.
/app/oracle : Aqui é a área onde serão copiados os executaveis do banco ( binários Oracle)
/oradata : De acordo com o OFA aqui é onde armazenaremos nossos datafiles
/[instance_name]:diretório que armazenará toda nossa arvore de arquivos oracle, podemos conter mais de uma pasta, isso vai depender de quantos bancos de dados você utilizará no seu server.


Vamos seguir em frente então.

Nossa Estrutura foi criada, próximo passso.

CRIANDO MEU ARQUIVOS DE SENHA ( ORAPWD )

A partir deste ponto é meio que padrão para quase todas as releases, há um diretório em especifico onde o oracle armazena esse arquivo,
ele conterá as senhas dos usuários SYS e SYSTEM, que podem ser redefinidas de acordo com as politicas de cada empresa.

Vejamos como fazer :

De acordo com a figura acima, no utilitário ORAPWD, que esta incluso no pacote de programas externos que são instalados juntamente com os binários, nós podemos encontrar as opções de determinar o nome do nosso arquivo de senhas, obviamente a senha e etc.

 

Notem que o caminho padrão para criação do arquivo de senhas do nosso BD é "$ORACLE_HOME/dbs", e a nomenclatura usada é "orapwd+INSTANCE_NAME", uma vez criado ele armazenará suas senhas para sempre, notem que eu usei a opção ENTRIES=2, esta entrada na linha de comando determina quantos usuários com permissão de DBA poderão se logar ao mesmo tempo em nosso banco de dados.

Com nosso arquivo de senhas criado, vamos proceder agora com a edição do nosso INIT.ORA.

Arquivo de Inicialização

##############################################################################
# Copyright (c) 1991, 2001, 2002 by Oracle Corporation
##############################################################################

###########################################
# Cache and I/O
###########################################
db_block_size=8192

###########################################
# Cursors and Library Cache
###########################################
open_cursors=300

###########################################
# Database Identification
###########################################
db_domain=""
db_name=labdb11g

###########################################
# File Configuration
###########################################
control_files=("/u01/app/oracle/oradata/labdb11g/control01.ctl",
               "/u01/app/oracle/oradata/labdb11g/control02.ctl",
               "/u01/app/oracle/oradata/labdb11g/control03.ctl")
db_recovery_file_dest=/u01/app/oracle/flash_recovery_area
db_recovery_file_dest_size=2147483648

###########################################
# Miscellaneous
###########################################
compatible=11.1.0.0.0
diagnostic_dest=/u01/app/oracle
memory_target=262144000

###########################################
# Processes and Sessions
###########################################
processes=50
sessions=60

###########################################
# Security and Auditing
###########################################
audit_file_dest=/u01/app/oracle/admin/labdb11g/adump
audit_trail=db
remote_login_passwordfile=EXCLUSIVE

###########################################
# Shared Server
###########################################
dispatchers="(PROTOCOL=TCP) (SERVICE=labdb11gXDB)"

###########################################
# System Managed Undo and Rollback Segments
###########################################
undo_tablespace=UNDOTBS1


Acima temos um exemplo básico de arquivo de inicialização que será usado no processo de criação do nosso banco de dados, notem que há algumas novidades neste init, tais como o MEMORY TARGET. algo novo no 11g pelo fato de estar muito mais eficiente para alguns casos, mas ainda é possivel utilizar o método convencional de distribuição de recursos para as áreas que compoem a SGA dos seus Bancos, veremos mais claramente no próximo post onde usarei o DBCA. Outra novidade é o DIAGNOSTIC_DEST uma feature nova do 11g que coma a ajuda de diversos ADVISORs presentes em sua estrutura, irão manter os DBAS informados de tudo que se passa no BD seja de bom ou de ruim.

Nosso arquivo de inicialização por padrão fica dentro de : 

[oracle@DBA-LAB labdb11g]$ pwd
/u01/app/oracle/admin/labdb11g

Sob a nomenclatura de init.ora, vamos então a criação do nosso banco.

Podemos utilizar a opção de pedir ao DBCA que nos gere os scripts de create database que já virám customizados com todas as parametrizações que você definir, só que com a vantagem de você ter o controle de todo o processo manualmente, e não apenas ficar na expectativa olhando a barrinha do DBCA se mover, veja como ele gera :

Reparem que ele cria uma pasta SCRIPTS dentro da nossa árvore de diretórios, e dentro dela gera todos os scripts necessários para que possamos criar nosso banco manualmente, esses arquivos são editaveis e podem ser customizados ao gosto de cada um, mudando tamanhos, delimitando localizações de arquivos e etc.

Ha um shell script que inicializa todo o processo e que contem todas as chamadas para criação do BD no meu caso ele se chama labdb11g.sh.

Este é o conteúdo do nosso SHELL SCRIPT :

[oracle@DBA-LAB scripts]$ more labdb11g.sh
#!/bin/sh

mkdir -p /u01/app/oracle/admin/labdb11g/adump
mkdir -p /u01/app/oracle/admin/labdb11g/dpdump
mkdir -p /u01/app/oracle/admin/labdb11g/pfile
mkdir -p /u01/app/oracle/cfgtoollogs/dbca/labdb11g
mkdir -p /u01/app/oracle/flash_recovery_area
mkdir -p /u01/app/oracle/oradata/labdb11g
mkdir -p /u01/app/oracle/product/11.1.0/db_1/dbs
ORACLE_SID=labdb11g; export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH; export PATH
echo You should Add this entry in the /etc/oratab: labdb11g:/u01/app/oracle/product/11.1.0/db_1:Y
/u01/app/oracle/product/11.1.0/db_1/bin/sqlplus /nolog @/u01/app/oracle/admin/labdb11g/scripts/labdb11g.sql

Basta executa-lo agora e teremos um BD novinho em folha para podermos utilizar, vale lembrar que se optarmos por usar os scripts gerados pelo DBCA não há necessidade de criarmos um init previamente, nem tão pouco criar um script de create database, pois estes passos já são contemplados nesses scripts pré criados pelo DBCA.


Ao executar o shell ele iniciará o processo de criação solicitando uma primeira informação, que é a senha do SYS que definimos na criação do arquivo de senhas que no nosso caso é MANAGER00, como na figura acima.

Será solicitado também a senha do usuário SYSTEM, informe a senha e deixe que o script prossiga com as tarefas.



Neste momento apenas aguarde. Inumeras informações passaram pela tela, você verá alguns shutdown e estartups durante o processo , isso é normal, não precisa interferir ou parar essa etapa.

Executando o processo desse modo você tem acesso a tudo que o DBCA faz por trás daquela barrinha azul que fica carregando ao utilizarmos o modo WIZARD de cruação de banco de dados, assim fica visivel a complexidade do processo e a beleza de todo o esquema de organização , execução de comandos e sincronização de informações.


 Pronto, já temos nosso Banco criado, porém ainda temos que criar seus respectivos objetos ( Packages, procedures, etc ), vamos então a execuçao do script CATALOG.SQL

[oracle@DBA-LAB admin]$ ls catalog*
catalog.sql
[oracle@DBA-LAB admin]$ pwd
/u01/app/oracle/product/11.1.0/db_1/rdbms/admin
[oracle@DBA-LAB admin]$

Localizado dentro da nossa ORACLE_HOME abaixo do diretório RDBMS/admin se encontra este script que vai dar vida ao nosso Banco de Dados, vamos executa-lo:



Utilizando nosso bom é fiel escudeiro SQLPLUS, conecte ao seu Banco com o usuário SYS e "chame" o script de catalog conforme a figura acima, e aguarde seu término. Feito isso aproveite para executar também o CATPROC.SQL que esta no mesmo diretório e irá criar as procedures de adminitração do BD Oracle.


BINGO!!!..tudo criado, bora usar nosso Banco..hehehe!!!.

Parabéns a quem chegou até aqui, no próximo post usaremos o DBCA , espero que tenham gostado, até a proxima.

Abraço á todos.!!