Vous êtes sur la page 1sur 22

Criando um banco de dados 10g manualmente no Linux

sexta-feira, fevereiro 27th, 2009

Olá,

Uma das tarefas mais legais do DBA, é a criação de uma banco de dados manualmente, ou
seja, sem a utilização da ferramenta gráfica DBCA (Database Configuration Assistant) da
Oracle para realizar essa tarefa, pois deste modo, o DBA consegue acompanhar todos os
processos básicos do início ao fim da criação do banco de dados sem a necessidade de
executar apenas um batch ou shell e acaba não sabendo o que aconteceu.

Porém, antes de iniciar os passos, temos alguns pré-requisitos que devemos salientar, que
são:

• Possuir um hardware com os requisitos minímos exigidos pela versão do banco de


dados.

• Verificar se o seu linux é homologado pela Oracle para efetuar a instalação do Oracle
Server.

• Ter os binários do Oracle Server instalado no servidor, ou seja, ter uma versão do
Oracle Database 10g instalada corretamente no ambiente Linux, com todos os pacotes
necessários.

• Conhecer a metodologia OFA (Optimal Flexible Architecture) para criação do banco


de dados.

Esses passos são necessários para quem deseja criar um banco de dados manualmente, pois
irá realizar uma instalação igual ao do DBCA, que na versão 10g já utiliza a metodologia OFA
por padrão. Abaixo segue alguns links para realizar a instalação apenas do software do
Oracle Database, para quem não possui ele instalado.

Sites de referência

iMasters - Instalação do Oracle Database 11g em Linux

Puschitz - Installing Oracle 10gR1, R2 on RHEL 4

OTN - Installing Oracle Database 10g Release 2 on Linux x86

Para dar mais enfâse, vamos criar um “resumão” de um pequeno projeto de banco de dados,
para conseguimos imaginar como ficará a nossa estrutura disponível e o banco de dados em
sí.
Projeto de Banco de dados

Nome: RANET (DBNAME e SID)

Plataforma: Linux Red Hat EL As 4

Volumetria Inicial: 2GB

Tablespaces Permanentes: SYSTEM (500MB), SYSUAX (250MB) e UNDO (500MB).

Tablespaces Aplicação para Dados: RADAT (500MB)

Tablespaces Aplicação para Índices: RAIDX (250MB)

Tablespaces Temporárias: TEMP

Modo de Gerenciamento das tablespaces: LMT (Local Management Tablespace)

Valor em memória (SGA): 1GB

Quantidade de usuários atendidos: 10

Portas do Listener: 1521 e 1522

E agora vamos ao que interessa!

1° Passo | Criando a estrutura física do banco de dados

A estrutura física consiste em diretórios que serão utilizados pelo banco de dados no nível de
sistema operacional,que podem ou não obdecer o padrão OFA e sua principal função é
organizar e armazenar os arquivos do banco de dados no sistema operacional.

Para a criação do banco de dados, devemos conhecer duas variáveis de ambiente


importantes criadas nas instalações Unix/Linux, que são as
variáveis ORACLE_BASE e ORACLE_HOME.

A variável ORACLE_BASE é o caminho da instalação do software do Oracle Database, não


confunda com as pastas do banco de dados, como ORADATA e ADMIN, um ORACLE_BASE
pode ser o mesmo para uma instalação do Database como do Application Server.

A variável ORACLE_HOME é responsável em dizer o caminho que os produtos do banco de


dados estão executando, como os binários, configuração de rede (SQL*NET), bibliotecas,
grupos de programas e etc.
No exemplo utilizado, nosso caminho para ORACLE_BASE eORACLE_HOME são essas:

ORACLE_BASE = /u01/app/oracle

ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1

Após validar as variáveis da sua instalação ou verificar quais os caminhos de cada variável,
vamos criar os diretórios de dados e administrativos para o banco de dados, pois quando
estamos realizando um projeto de banco de dados, devemos analisar as opções que temos
de armazenamento, organização e volumes lógicos disponíveis para sua criação, baseando-
se a partir do ORACLE_BASE e File System disponíveis.

Nosso objetivo agora é criar os diretórios administrativos do banco de dados, que seguirá
essa estrutura física abaixo:

$ORACLE_BASE/admin/<nome_do_banco>/<diretorios>

Conforme o exemplo abaixo:

[oracle@pelspos7h oracle]$ cd $ORACLE_BASE


[oracle@pelspos7h product]$ mkdir admin
[oracle@pelspos7h product]$ cd admin
[oracle@pelspos7h admin]$ mkdir ranet
[oracle@pelspos7h admin]$ cd ranet
[oracle@pelspos7h ranet]$ mkdir adhoc adump bdump cdump
flash_recovery_area udump exp
[oracle@pelspos7h ranet]$ cd ..
[oracle@pelspos7h admin]$ cd ..
[oracle@pelspos7h product]$ ls -R |grep ranet
ranet
./admin/ranet:
./admin/ranet/adhoc:
./admin/ranet/adump:
./admin/ranet/bdump:
./admin/ranet/cdump:
./admin/ranet/flash_recovery_area:
./admin/ranet/udump:

./admin/ranet/exp:

Acima está a nossa estrutura física administrativa montada, onde cada um tem sua
finalidade como:
./admin

Resposável por organizar os arquivos administrativos de cada instância Oracle.

./admin/ranet:

Pasta que recebe o nome do meu futuro banco de dados.

./admin/ranet/adhoc:

Pasta destinado a armazenar scripts SQL, PL/SQL ou shells.

./admin/ranet/adump:

Audit Dump, onde é gerado os arquivos e auditória do banco de dados, com extensão AUD.

./admin/ranet/bdump:

Background Dump, caminho que é utilizado pelo processos de plano de fundo do Oracle e do
alert.log da instância.

./admin/ranet/cdump:

Core Dump, onde é gerado traces do Core do Oracle, geralmente ligados á problemas do
sistema operacional.

./admin/ranet/flash_recovery_area:

Flashback Recovery Area (FRA), é um caminho opcional no momento da criação do banco de


dados, pois nesse caminho, é gerado 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/ranet/udump:

User Dump, é o diretório que armazena os traces gerados por usuários ou por processos
específicos do banco de dados.

./admin/ranet/exp:

Export, diretório destinado aos arquivos gerados atráves do Data Pump Export (Expdp) ou
Export Utility (exp).
Depois de realizar a criação dos diretórios administrativos, devemos criar a estrutura que irá
armazenar os arquivos do banco de dados propriamente dito, como datafiles, redo logs e
control files. E nesse momento, devemos verificar no servidor, qual a melhor opção para o
armazenamento desses arquivos, veja:

[oracle@pelspos7h oracle]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 127G 64G 57G 53% /
none 2.0G 0 2.0G 0% /dev/shm
/dev/sdb1 404G 279G 105G 73% /u02

No exemplo, a melhor opção para o meu banco de dados é o FileSystem /u02, que tem
bastante espaço em disco sobrando, o FileSystem /u01 (que não está montado) ficou para os
arquivos de traces, archives, dumps e os binários do Oracle.

Após decidido a localização dos arquivos, devemos criar as pastas para armazenar-las.

[oracle@pelspos7h u02]$ mkdir oracle


[oracle@pelspos7h u02]$ cd oracle
[oracle@pelspos7h oracle]$ mkdir oradata
[oracle@pelspos7h oracle]$ cd oradata
[oracle@pelspos7h oradata]$ mkdir ranet
[oracle@pelspos7h oradata]$ cd ranet
[oracle@pelspos7h ranet]$ pwd
/u02/oracle/oradata/ranet

Onde,

/u02/oracle/oradata/ranet
| | | |-> Diretório para armazenamento dos arquivos do
respectivo banco de dados.
| | |--------> Diretório para armazenamento de dados,
segundo o padrão OFA.
| |---------------> Diretório que específica do software.
|---------------------> File System com capacidade suficiente para
criar o banco de dados.

PRONTO! Já estamos com a nossa estrutura física criado para suporta o novo banco de
dados.

2° Passo | Criação do Arquivo de parâmetros


O arquivo de parâmetro, conhecido como PFILE, é um arquivo texto responsável pelas
características e comportamento da instância Oracle, esses parâmetros são para trabalhar
diretamente em memória da máquina e pelo banco de dados físicamente. É um arquivo
essencial para iniciar uma instância Oracle.

Abaixo vou colocar um arquivo de parâmetro básico para iniciar a instância.

control_files = (/u02/oracle/oradata/ranet/control01.ctl)
db_name = ranet
db_domain = world
log_archive_dest =
"LOCATION=LOCATION=USE_DB_RECOVERY_FILE_DEST"
db_block_size = 8192
pga_aggregate_target = 250M
processes = 100
sessions = 120
open_cursors = 80
undo_management = AUTO
undo_tablespace = UNDOTBS
compatible = 10.1.0.0.0
sga_target = 1G
nls_language = AMERICAN
nls_territory = AMERICA
db_recovery_file_dest =
/u01/app/oracle/admin/ranet/flash_recovery_area
db_recovery_file_dest_size = 10G
background_dump_dest = /u01/app/oracle/admin/ranet/bdump
core_dump_dest = /u01/app/oracle/admin/ranet/cdump
user_dump_dest = /u01/app/oracle/admin/ranet/udump
audit_file_dest = /u01/app/oracle/admin/ranet/adump

Veja que alguns parâmetros receberam os valores da nossa estrutura física, seguindo o
padrão OFA. Deste modo, podemos salvar o nosso pfile em sua respestiva pasta
(/u01/app/oracle/admin/ranet/pfile) comoinitranet.ora, pois estamos seguindo um padrão
da Oracle, que é init<nome_do_banco>.ora para gerar o arquivo.

Posteriormente, vamos criar um SPFILE, sigla para Server Parameter File, que é um
melhorando do PFILE, pois já é um arquivo binário, que permite alterar o valores para os
parâmetros dinâmicos da instância Oracle.

3° Passo | Preparando script de criação do banco de dados


Uma das tarefas que devemos realizar no momento, é a preparação do script que irá criar
nosso banco de dados, esse script será necessário para criar nosso banco de dados
fisicamente. Lembre-se que na arquitetura Oracle, quando trabalhamos com recursos em
memória, chamamos de Instância Oracle e quando vamos gravar, apagar, modificar,
consultar e manipular os dados, estamos trabalhando diretamente no banco de dados físico,
onde fica nossos datafiles, control files e redo logs. O Script para criação está abaixo:

CREATE DATABASE "ranet"


MAXINSTANCES 1
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 200
DATAFILE '/u02/oracle/oradata/ranet/system01.dbf' SIZE 500M AUTOEXTEND
ON NEXT 10240K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL
SYSAUX
DATAFILE '/u02/oracle/oradata/ranet/sysaux01.dbf' SIZE 500M AUTOEXTEND
ON NEXT 10240K MAXSIZE UNLIMITED
SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP
TEMPFILE '/u02/oracle/oradata/ranet/temp01.dbf' SIZE 2000M AUTOEXTEND
OFF
SMALLFILE UNDO TABLESPACE "UNDOTBS"
DATAFILE '/u02/oracle/oradata/ranet/undotbs01.dbf' SIZE 2000M
AUTOEXTEND OFF
CHARACTER SET WE8ISO8859P1
NATIONAL CHARACTER SET AL16UTF16
LOGFILE
GROUP 1 ('/u01/oracle/oradata/ranet/redo01a.log',
'/u02/oracle/oradata/ranet/redo01b.log') SIZE 50M,
GROUP 2 ('/u01/oracle/oradata/ranet/redo02a.log',
'/u02/oracle/oradata/ranet/redo02b.log') SIZE 50M,
GROUP 3 ('/u01/oracle/oradata/ranet/redo03a.log',
'/u02/oracle/oradata/ranet/redo03b.log') SIZE 50M
USER SYS IDENTIFIED BY DBARODRIGO
USER SYSTEM IDENTIFIED BY SUECO_REPITA;

O scripts acima possui diversos parâmetros e instruções de criação das tablespaces do banco
de dados, diga-se de passagem, as principais do banco de dados, e vamos discutir um pouco
sobre cada ponto.
Primeiro, vamos comentar sobre os parâmetros utilizados na cláusula de CREATE DATABASE,
veja:

MAXINSTANCES

Específica o número máximo de instâncias simultâneas para o banco de dados quando está
em MOUNT ou OPEN. Válido para bancos de dados com RAC (Real Application Cluster).

MAXLOGHISTORY

Específica o número máximo de archived redo logs files para automatic media recovery.
Válido para bancos de dados com RAC (Real Application Cluster).

MAXLOGFILES

Específica o número máximo de grupos de redo logs que o banco de dados pode possuir.

MAXLOGMEMBERS

Específica o número máximo de membros (ou cópias do aruqivo de redo) que cada grupo
pode ter.

MAXDATAFILES

O número máximo de arquivos de dados (datafiles) do banco de dados.

Segundo, agora vamos para as instruções que cria as principais tablespaces do banco de
dados.

DATAFILE ‘/u02/oracle/oradata/ranet/system01.dbf’ SIZE 500M AUTOEXTEND ON


NEXT 10240K

Responsável em criar a tablespace SYSTEM, sem ele, sem banco de dados!

No início estamos criando a tablespace SYSTEM com apenas 500MB e com a opção de auto-
expansível a cada 1MB.

SYSAUX
DATAFILE ‘/u02/oracle/oradata/ranet/sysaux01.dbf’ SIZE 500M AUTOEXTEND ON
NEXT 10240K

Essa tablespace é nova e foi introduzida no Oracle 10g, a tablespace SYSAUX é para “prestar
suporte” a tablespace SYSTEM, com owners de produtos da própria Oracle. Como Oracle
Spatial, RMAN, Workflow e etc.
A tablespace também será criado com 500MB inicialmente.

SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP


TEMPFILE ‘/u02/oracle/oradata/ranet/temp01.dbf’ SIZE 2000M AUTOEXTEND OFF

A tablespace temporária, muito utilizada no banco de dados para operações de SORT,


AGREGAÇÃO, CRIAÇÃO DE ÍNDICE e etc.

Vamos iniciar ela com 2GB, pois desde a criação do banco de dados será muito utilizada, a
única diferença que estamos limitando o seu crescimento em 2GB, caso seja necessário
mais, aumentamos conforme a necessidade.

SMALLFILE UNDO TABLESPACE “UNDOTBS”


DATAFILE ‘/u02/oracle/oradata/ranet/undotbs01.dbf’ SIZE 2000M AUTOEXTEND
OFF

Essa instrução é responsável pela criação da tablespace de UNDO, que será chamada de
“UNDOTBS”, que é o mesmo valor do parâmetro undo_tablespace que colocamos em nosso
PFILE. A tablespace de UNDO que tem como finalidade armazenar nossos dados não
comprometidos, desfazer as transações sem sucesso e controlar as modificações dos dados
no banco de dados, falando resumidamente.

CHARACTER SET WE8ISO8859P1

Específica o conjunto de caracteres que será armazenado no banco de dados. Se errar nesse
momento o conjunto de caracteres, para alterar, somente reconstruindo o banco de dados.

NATIONAL CHARACTER SET AL16UTF16

Específica o conjunto nacional de caracteres, para armazenar os dados em colunas que são
do tipo NCHAR, NVARCHAR2 e NCLOB.

LOGFILE
GROUP 1 (’/u01/oracle/oradata/ranet/redo01a.log’,
‘/u02/oracle/oradata/ranet/redo01b.log’) SIZE 50M,
GROUP 2 (’/u01/oracle/oradata/ranet/redo02a.log’,
‘/u02/oracle/oradata/ranet/redo02b.log’) SIZE 50M,
GROUP 3 (’/u01/oracle/oradata/ranet/redo03a.log’,
‘/u02/oracle/oradata/ranet/redo03b.log’) SIZE 50M

Essas instruções específica os membros e a quantidade dos grupos de redo log. Eles podem
ser alterados posteriormente quando o banco de dados estiver criado. E perceba que em
cada grupo (1,2,3) possui dois arquivos de redo log, isso se chama multiplexação, caso um
disco (/u01 ou /u02) dê problemas, terá uma replica do arquivo em outro disco, que poderá
facilitar a sua recuperação e não perder os dados.

USER SYS IDENTIFIED BY DBARODRIGO

A instrução acima é para mencionar a senha do usuário SYS.

USER SYSTEM IDENTIFIED BY SUECO_REPITA

A instrução acima é para mencionar a senha do usuário SYSTEM.

Bom, já conseguimos criar o PFILE e o script do banco de dados, agora vamos colocar a mão
na massa. Vamos realizar os processos que criação.

4° Passo | Processo de criação

Após o PFILE e SCRIPT prontos, vamos realizar as atividades de criação do banco de dados.

4.1 - Definindo Variáveis de ambiente.

Vamos logar na máqunia que será criado o banco de dados, e vamos configurar a variável de
ambiente ORACLE_SID e conferir os valores de ORACLE_BASE e ORACLE_HOME.

ORACLE_SID

A variável ORACLE_SID é responsável em dizer ao Oracle Server qual é o nome do banco de


dados que será utilizada, e como estamos criando a base, devemos mencionar o seu nome,
que é o mesmo que o parâmetro DB_NAME. Exemplo:

[oracle@pelspos7h adhoc]$ export ORACLE_SID=ranet


[oracle@pelspos7h adhoc]$ echo $ORACLE_SID
ranet

Depois, vamos checar os valores de ORACLE_BASE e ORACLE_HOME.

[oracle@pelspos7h adhoc]$ echo $ORACLE_BASE


/u01/app/oracle
[oracle@pelspos7h adhoc]$ echo $ORACLE_HOME
/u01/app/oracle/product/10.2.0/db_1

4.2 - Abrindo o SQL*PLUS

Vamos iniciar o SQL*PLUS e se conectar a instância.


[oracle@pelspos7h adhoc]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Feb 13 11:16:54 2009

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

SQL> conn / as sysdba


Connected to an idle instance.

A mensagem “Connected to an idle instance” é normal, porquê você não iniciou a instância.

4.3 - Iniciando a instância Oracle.

Vamos pegar o caminho completo do nosso PFILE e vamos iniciar a instância, com o
comando STARTUP NOMOUNT, que significa que vamos apenas carregar seus valores em
memória, pois ainda não temos o control file da base criado.

SQL> startup nomount


pfile=/u01/app/oracle/admin/ranet/pfile/initranet.ora;
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 1268412 bytes
Variable Size 146801988 bytes
Database Buffers 369098752 bytes
Redo Buffers 7118848 bytes

Instância iniciada em modo NOMOUNT. Podemos prosseguir.

4.4 - Criando o banco de dados.

Vamos executar o script de criação do banco de dados.

SQL> @/u01/app/oracle/admin/ranet/adhoc/create_db.sql
Database created.

Nesse momento criamos o banco de dados, os arquivos com extensão .DBF, .CTL e .LOG
devem estar disponíveis no sistema operacional. Como no exemplo:

[oracle@pelspos7h ranet]$ ls -ltr


total 3390508
-rw-r----- 1 oracle oinstall 52429312 Feb 13 11:24 redo03b.log
-rw-r----- 1 oracle oinstall 52429312 Feb 13 11:24 redo03a.log
-rw-r----- 1 oracle oinstall 52429312 Feb 13 11:24 redo02b.log
-rw-r----- 1 oracle oinstall 52429312 Feb 13 11:24 redo02a.log
-rw-r----- 1 oracle oinstall 2097160192 Feb 13 11:25 temp01.dbf
-rw-r----- 1 oracle oinstall 524296192 Feb 13 11:25 sysaux01.dbf
-rw-r----- 1 oracle oinstall 2097160192 Feb 13 13:55 undotbs01.dbf
-rw-r----- 1 oracle oinstall 524296192 Feb 13 13:55 system01.dbf
-rw-r----- 1 oracle oinstall 52429312 Feb 13 14:00 redo01b.log
-rw-r----- 1 oracle oinstall 52429312 Feb 13 14:00 redo01a.log
-rw-r----- 1 oracle oinstall 8011776 Feb 13 14:04 control01.ctl

O comando acima foi para verificar nossos datafiles, redo logs e control files. Criados com
sucesso.

4.5 - Criando o dicionário de dados Oracle

A criação do dicionário de dados do Oracle é através de scripts que a própria Oracle fornece
quando instalado o software. Esses scripts NÃO PODEM SER MODIFICADOS e toda vez que
for criar um banco de dados novo, deve ser executado. Ele é obrigatório.

A localização dos scripts fica em $ORACLE_HOME/rdbms/admin, nessa pasta existe diversos


scripts que são usados para criação de pacotes administrativos, de produtos adicionais e etc.

Assim que localizado, devemos executar os seguintes scripts, obrigatórios:

• catalog.sql

Cria as views do dicionário de dados.

• catproc.sql

Executa diversos scripts para criação de views e objetos necessário para o banco de dados.

Veja o exemplo:

SQL> @?/rdbms/admin/catalog.sql
...
SQL> @?/rdbms/admin/catproc.sql

Como os scripts são longos e principalmente o catproc.sql que chama diversos outros scripts
do /rdbms/admin essa operação pode demorar um pouco, então pode ir tomar um cafézinho
nesse momento.

Dica 1
No linux, para executar os scripts você pode utilizar os seguintes caminhos na execução,
$ORACLE_HOME/rdbms/admin ou simplesmente?/rdbms/admin.

Após o termíno da execução do catproc.sql, vamos verificar nosso novo banco de dados.
Vamos efetuar as seguintes instruções SQL:

SQL> select instance_name, host_name, status from v$instance;


INSTANCE_NAME HOST_NAME STATUS
---------------- ------------------------------ ------------
ranet pelspos7h OPEN
1 row selected.

Com isso, temos nosso banco de dados no ar. Para quem já conhece a arquitetura Oracle,
quando um banco de dados é criado, estará sempre no modo NOARCHIVELOG, como mostra
o exemplo:

SQL> select log_mode from v$database;


LOG_MODE
------------
NOARCHIVELOG
1 row selected.

E caso queira mudar para o modo ARCHIVELOG e trabalhar com as vantagens que o
ARCHIVELOG pode lhe oferecer para recuperação do banco de dados, basta fazer os
procedimentos abaixo:

4.5.1 - Descendo o banco de dados

SQL> shutdown immediate;


Database closed.
Database dismounted.
ORACLE instance shut down.

4.5.2 - Colocando o banco de dados em modo MOUNT

SQL> startup mount


pfile=/u01/app/oracle/admin/ranet/pfile/initranet.ora;
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 1268412 bytes
Variable Size 146801988 bytes
Database Buffers 369098752 bytes
Redo Buffers 7118848 bytes
Database mounted.

Dica 2

Sempre que trabalhar com o pfile em $ORACLE_BASE/admin/ranet/pfile, quando for realizar


qualquer tipo de startup, irá aparecer o erro ORA-01078 e LRM-00109, pois o arquivo de
parâmetro não se encontra no diretório padrão do Oracle, que é $ORACLE_HOME/dbs. Se
quiser resolver esse tipo de problema, copie o seu arquivo de parâmetro para o
diretório $ORACLE_HOME/dbs e PRONTO!

4.5.3 - Alterar o modo de arquivamento do banco de dados

SQL> alter database archivelog;


Database altered.

4.5.4 - Abrindo o banco de dados

SQL> alter database open;


Database altered.

4.5.5 - Verificando o modo de arquivamento

SQL> archive log list;


Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 13
Next log sequence to archive 15
Current log sequence 15

4.5.6 - Forçar a geração dos archived logs

SQL> alter system switch logfile;


System altered.
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
Agora, verifique a origem dos seus archived logs e veja os no sistema
operacional. Foi executado o comando ALTER SYSTEM SWITCH LOGFILE três
vezes pois nós tinhamos três grupos de redo logs.
SQL> show parameters db_reco
NAME TYPE VALUE
------------------------------------ -----------
------------------------------
db_recovery_file_dest string
/u01/app/oracle/admin/ranet/fl
ashback_area
db_recovery_file_dest_size big integer 10G
SQL> host;
[oracle@pelspos7h adhoc]$ cd
/u01/app/oracle/admin/ranet/flashback_area
[oracle@pelspos7h flashback_area]$ ls -ltr
total 4
drwxr-x— 3 oracle oinstall 4096 Feb 13 14:52 RANET
[oracle@pelspos7h flashback_area]$ ls -R
.:
RANET
./RANET:
archivelog
./RANET/archivelog:
2009_02_13
./RANET/archivelog/2009_02_13:
o1_mf_1_15_4sc99r39_.arc o1_mf_1_16_4sc99x0o_.arc
o1_mf_1_17_4sc9b2j5_.arc

PRONTO! Agora já temos um banco de dados criado e trabalhando no modo archivelog,


agora temos que criar as tablespaces que fazem parte do projeto de banco de dados e
realizar alguns ajustes finais, como criação do SPFILE, LISTENER, TNSNAMES e um backup
do banco.

5° passo | O projeto de banco de dados

Como o objetivo era aproximar ao máximo do mundo corporativo, criamos um micro-projeto


no início para podermos criar um banco de dados com alguns recursos e preparado para
aplicação. Todo o processo de criação do banco de dados foi realizado, agora falta somente
criar as tablespaces necessárias e ajustes no banco de dados para disponibilizar aos
usuários.

5.1 - Criação da tablespace RADAT

A tablespace RADAT será para abrigar todas as tabelas de usuários ou aplicação, e seu
tamanho inicial é de 500MB.

SQL> create tablespace RADAT


2 datafile
3 '/u02/oracle/oradata/ranet/radat01.dbf' size 500M
4 online
5 permanent
6 extent management local autoallocate
7 segment space management auto;
Tablespace created.

5.2 - Criação da tablespace RAIDX

A tablespace RAIDX irá armazenar os índices dos usuários ou aplicação, e seu volume inicial
é de 200MB.

SQL> create tablespace RAIDX


2 datafile
3 '/u02/oracle/oradata/ranet/raidx01.dbf' size 250M
4 online
5 permanent
6 extent management local autoallocate
7 segment space management auto;
Tablespace created.

Na criação das tablespaces foram utilizadas algumas opções de criação, como por exemplo o
extent management e segment space, para tirar as dúvidas de como trabalha cada opção,
leia o documento oficial, Oracle Database SQL Reference 10g Release 2.

6° Passo | Criando um SPFILE

Uma dos recursos importantes ao DBA é a utilização do SPFILE, onde permite ao DBA alterar
alguns parâmetros dinâmicos sem a necessidade de efetuar um stop/start no banco de dados
em horários não apropriados. Para criar o SPFILE é bem simples, veja:

SQL> create spfile from


pfile='/u01/app/oracle/admin/ranet/pfile/initranet.ora';
File created.

Para confirmar que iremos utilizar os valores dos parâmetros que montamos o banco de
dados, criamos o spfile a partir do nosso arquivo de parâmetros construído no início, por isso
a passagem do caminho completo e o nome do pfile.

Porém, mesmo como o SPFILE criado, ainda não é possível utilizar-lo, como mostra o
comando abaixo:
SQL> show parameters spfile
NAME TYPE VALUE
------------------------------------ -----------
------------------------------
spfile string

Para começar a utilização do SPFILE, é necessário um stop/start do base, e logo depois


verifique se a coluna VALUE já preenchida com o caminho completo e nome do seu SPFILE.

SQL> shutdown immediate;


Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup;
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 1268412 bytes
Variable Size 146801988 bytes
Database Buffers 369098752 bytes
Redo Buffers 7118848 bytes
Database mounted.
Database opened.
SQL> show parameters spfile
NAME TYPE VALUE
------------------------------------ -----------
------------------------------
spfile string
/u01/app/oracle/product/10.2.0

/db_1/dbs/spfileranet.ora

Como dito na Dica 2, o caminho utilizado pelo Oracle foi o caminho padrão,
$ORACLE_HOME/dbs.

7° Passo | Criando os serviços de rede

Como já estamos como todo o nosso banco de dados criado, vamos ter que disponibilizar aos
usuários e possíveis aplicações, e para isso, precisamos do serviço ouvinte (LISTENER) e
depois efetuar as configurações nas máquinas client (TNSNAMES) para acessar o banco de
dados. E para isso, devemos configurar os arquivos responsáveis por essa tarefa.

7.1 - Criando o Listener


A atividade a ser realizada agora é a criação do LISTENER, ou o serviço ouvinte, que é um
processo separado no banco de dados que tem como responsabilidade receber as conexões
dos clientes (usuários ou outras bases de dados) e gerenciar o tráfico e pedidos dessas
requisições. O arquivo LISTENER.ORA que pode ser encontrado em
$ORACLE_HOME/network/admin é o resposável por esse serviço, abaixo segue um exemplo
de criação de um LISTENER usando protocolo TCP e disponibilizando as portas 1521 e 1522
para comunicação.

Arquivo: LISTENER.ORA

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = PELSPOS7H)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = PELSPOS7H)(PORT = 1522))
)
)

Após criar o seu arquivo listener.ora e salvar-lo, deverá iniciar o serviço do listener, usando o
aplicativo LSNRCTL (Listener Control), veja:

[oracle@pelspos7h admin]$ lsnrctl


LSNRCTL for Linux: Version 10.2.0.4.0 - Production on 27-FEB-2009
23:06:18
Copyright (c) 1991, 2007, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PELSPOS7H)
(PORT=1521)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PELSPOS7H)
(PORT=1522)))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
Linux Error: 111: Connection refused
Ao verificar o atual status do serviço de LISTENER, verificamos que não está disponível,
basta iniciarmos o serviço e pronto! Após a configuração nos clientes, a comunicação será
possível com o banco de dados.

LSNRCTL> start LISTENER


Starting /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please
wait...
TNSLSNR for Linux: Version 10.2.0.4.0 - Production
System parameter file is
/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to
/u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=pelspos7h)
(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=pelspos7h)
(PORT=1522)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=PELSPOS7H)
(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.4.0 -
Production
Start Date 27-FEB-2009 23:06:38
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File
/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File
/u01/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=pelspos7h)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=pelspos7h)(PORT=1522)))
The listener supports no services
The command completed successfully

Dica 3
Na versão do Oracle Database 10g, existe uma opção no SQL*NET de trabalhar por serviços
ou SERVICE_NAME, onde deverá ser realizado outros procedimentos. Mais detalhes nesse
documento Quick Start to Oracle Net Connections.

PRONTO! O serviço no lado do servidor de banco de dados já está configurado e pronto para
utilização.

7.2 - Configurando o TNSNAMES.ORA e SQLNET.ORA do cliente.

Os arquivos TNSNAMES.ORA e SQLNET.ORA são os arquivos de configuração no lado do


cliente ou em algum banco de dados remoto, cada arquivo com sua respectiva função. O
arquivo TNSNAMES.ORA tem como finalidade fornecer as principais informações para um
serviço ouvinte, como nome do banco de dados, porta de comunicação, tipo de protocolo
utilizado e host de destino. A função do arquivo SQLNET.ORA é dizer o metódo de conexão,
habilitar a rota de específicas conexões, tipo de autenticação utilizada e fornecer um
rastreamento detalhado sobre a comunicação do cliente e servidor. Ambos os arquivos
podem ser encontrados em $ORACLE_HOME/network/admin. Abaixo segue um modelo que
iremos utilizar.

Arquivo: SQLNET.ORA

AUTOMATIC_IPC = OFF
names.directory_path = (TNSNAMES)
names.default_domain = world
name.default_zone = world

Arquivo: TNSNAMES.ORA

ranet.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = 10.72.30.83)(Port = 1522))
)
(CONNECT_DATA =
(SID = ranet)
)
)

Caso você queira acessar o seu banco de dados de uma outra máquina que tenha o Oracle
Client instalado, basta adicionar a entrada de TNS acima, mostrada no modelo do
TNSNAMES.ORA e caso seja necessário, colocar as configurações de SQLNET acima.

7.3 - Validação da conexão


Ao realizar todas as tarefas acima de configuração dos arquivos do SQLNET, basta validar se
a conexão com o banco de dados remotamente será realizado com sucesso, para isso, basta
utilizar o aplicativo TNSPING para validar. Exemplo.

[oracle@pelspos7h admin]$ tnsping ranet


TNS Ping Utility for Linux: Version 10.2.0.4.0 - Production on 27-FEB-
2009 23:33:58
Copyright (c) 1997, 2007, Oracle. All rights reserved.
Used parameter files:
/u01/app/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS =
(PROTOCOL = TCP)(Host = 10.72.30.83)(Port = 1522))) (CONNECT_DATA =
(SID=ranet)))
OK (0 msec)

UFA! Agora podemos liberar o nosso mini banco de dados aos usuários e iniciar
posteriormente as configurações de usuários e aplicações na base. Esse artigo foi bem longo
e cansativo, porém, a principal ideia era fornecer os conceitos básicos na criação de um
banco de dados manualmente, como:

• Entender os conceitos do Optial Flexible Architecture (OFA);

• Variáveis de ambiente essênciais ao Oracle;

• Entender os scripts e processos de criação do banco de dados;

• Conhecer os scripts básicos para criar o dicionário de dados do Oracle Server;

• Colocar o banco de dados no modo de arquivamento automático;

• Realizar as tarefas básicas de tablespaces para um determinado projeto;

• Ajustar o banco de dados para acesso remoto.

Todos esses passos são de real importância para um projeto de banco de dados, e nunca se
esqueça, depois de realizar todas as tarefas acima, faça um BACKUP FULL do banco de dados
para não ter problemas e aumentar a segurança do projeto.

Qualquer dúvida, crítica e sugestão, estou disponível no e-mail ou aqui no blog.

Abraços,
Tags: 10g, architecture, archivelog, arquitetura, arquivo de parametro,backup, banco de
dados, create database, criando um banco de dados
manualmente, database, DBA, dicionário, dictionary, flexible,instalação, linux, listener, manu
al, noarchivelog, ofa, optimal, oracle,oracle_home, oracle_sid, parametros de
inicialização, patchset, pfile,projeto, rede, sid, spfile, sqlnet, sqlplus, sys, sysdba, system,tab
lespace, tnsnames, volumetria

Vous aimerez peut-être aussi