Criando Um Banco de Dados Oracle 11g
Short Description
Download Criando Um Banco de Dados Oracle 11g...
Description
Criando um Banco de dados
Ola Pessoal, Depois de instalar o Oracle Database 10g como no artigo anterior vamos dar continuidade no processo criando um banco de dados manualmente. Para criar um banco de dados devemos “subir” uma instância e criar cr iar os data files que irão armazenar armaz enar os nossos segmentos (tabelas, índices, Dicionário de dados, etc .) Visto que no
momento da instalação do Oracle Database 10g já preparamos o nosso ambiente com as recomendações da OFA (Arquitetura Ótima Flexível) para receber nosso banco de dados, agora é hora de entender o conceito de instância e de banco de dados, e como funciona essa relação. Instância Oracle
Uma instância consiste de processos em background e a alocação de memória do sistema operacional. Quando definimos os valores dos parâmetros de memória no arquivo de parâmetros (init.ora) o Oracle Server irá alocar do sistema operacional a quantidade de memória definida no arquivo de inicialização, e iniciar os processos em background responsáveis por manipular o banco de dados. Essa combinação de processos em background e buffers de memória é chamada de Instância Oracle. Banco de Dados
Um banco de dados consiste de arquivos de dados, ou seja, data files que armazenam os dados de usuários e o dicionário de dados . O banco de dados é manipulado pelos processos em background da instância. Um único banco de dados pode ser manipulado por uma única instância e uma única instância pode manipular um banco de dados. Em ambientes distribuídos como Real Application Clusters Clusters é possível ter várias instâncias manipulando um banco de dados.
1
Arquitetura Oracle
Para iniciar o processo, vamos criar o arquivo de parâmetros (PFILE) nesse arquivo devemos definir os parâmetros de inicialização da instância ou seja, parâmetros que especificam a localização dos control files, alocação de memória, e outros parâmetros importantes para iniciar a instância. Abaixo explico alguns parâmetros que considero importantes e que são parâmetros básicos para iniciar nossa instância. db_name : Este parâmetro define o nome do banco de dados, é um parâmetro
obrigatório e não pode ser alterado depois da criação do banco de dados. instance_type: Deixamos esse valor como RDBMS, é usado quando estamos criando
uma instância ASM db_domain : Definimos nesse parâmetro um nome da localização lógica do banco de
dados dentro da estrutura de rede. db_files : Especifica o número de máximo de arquivos que pode ser abertos pelo banco
de dados por padrão esse valor é 200. processes : Especifica o número máximo de processos do sistema operacional que
podem se conectar ao banco de dados concorrentemente. db_block_size : Esse parâmetro defini o tamanho do bloco padrão para o banco de
dados. Este block será usado pela tablespace SYSTEM e por padrão também em outras tablespaces.
2
statistics_level : Esse parâmetro usado para definir o nível de estatísticas que serão geradas, muito úteis para advisors. Vamos deixar com padrão. audit_trail : Usado para habilitar a auditoria no banco de dados, para esse artigo vamos
desabilitar a auditoria. background_dump_dest : Definimos nesse parâmetro o diretório onde serão
armazenados os arquivos de trace para processos em background, e tão importante alert.log
user_dump_dest : Definimos nesse parâmetro o diretório onde serão armazenados os
arquivos de trace gerados por processos de usuário. core_dump_dest : Definimos nesse parâmetro o diretório onde serão armazenados os
arquivos de trace gerados por erros do software Oracle. compatible : Este parâmetro define o nível de compatibilidade que o banco de dados irá trabalhar, esse parâmetro permite usarmos um banco de dados com uma nova release,
mas sem perder a compatibilidade com versões antigas. Para o nosso exemplo não vamos precisar manter compatibilidade com nenhuma versão antiga, ou seja, vamos usar a compatibilidade do Oracle 10g 10.2.1.0 com todas as suas features. control_files : Aqui especificamos a localização dos control files sempre seguindo as recomendações da OFA de multiplicarmos os control files entre discos diferentes. cursor_sharing : Definindo esse parâmetro como “force” força instruções que usam
apenas literais diferentes a usar o mesmo plano de execução. Vamos deixar esse parâmetro com o seu valor padrão Exact, ou seja, desabilitado. sga_target : Definimos aqui um valor para que o Oracle gerencie a nossa SGA de
forma automática. No nosso exemplo vou usar 512MB. pga_aggregate_target : Usuários precisam de áreas em memória para realizar operações intensivas, como ordenações, joins etc. Definimos esse parâmetro como um
valor máximo que irá ser alocado de acordo com o uso dos usuários. db_file_multiblock_read_count : Esse parâmetro especifica o numero máximo de blocos que o Oracle irá ler durante um Full table scans . Nesse exemplo vamos usar o
seu valor padrão. db_flashback_retention_target : Esse parâmetro especifica em quanto tempo os logs são retidos no flash recovery area, e por quanto tempo em minutos podemos “voltar” nosso banco de dados em um estado anterior usando FlashBack. Vamos deixar esse
parâmetro como default. db_recovery_file_dest : Esse parâmetro especifica a localização padrão para o Flash recovery area.
3
db_recovery_file_dest_size : Esse parâmetro especifica o tamanho limite para o Flash recovery area gerenciar os backups feitos pelo rman, por exemplo, é possível definir um valor máximo de armazenamento que o Flash recovery area irá manter. log_archive_dest_1 : Esse parâmetro define a localização que irão ser criados os archive logs. log_archive_format : Esse parâmetro define o formato dos archive logs. Vamos deixar
esse parâmetro como padrão. remote_login_passwordfile : Esse parâmetro especifica se o Oracle vai checar por um
arquivo de senha, é muito útil onde precisamos nos autenticar como SYSDBA através de um computador remoto. Se definirmos esse parâmetro como None o Oracle ignora qualquer arquivo de senha, e a única forma de autenticar como SYSDBA é usando a autenticação do sistema operacional. undo_management : Esse parâmetro especifica o modo de gerenciamento undo. Se definirmos esse parâmetro para AUTO o servidor irá usar o modo de gerenciamento de undo automático. Vamos definir esse parâmetro como AUTO. undo_tablespace : Esse parâmetro determina a tablespace padrão para segmentos de
UNDO, definiremos esse parâmetro com o nome da nossa tablespace de undo. Criando o Banco de dados
Agora é hora de criarmos o nosso banco de dados. Como já temos toda a estrutura de diretórios criada, precisamos agora criar o arquivo de parâmetros e o script de criação do banco de dados. O arquivo de parâmetro como dito acima é necessário para iniciar a nossa instância. Criando o arquivo de parâmetros Vamos logar com o usuário “oracle” e criar o arquivo init+ o nome deve ser estar nesse formato pois no momento do STARTUP o Oracle irá procurar um arquivo com o nome init+.ora para iniciar a instância. Como esse é um
arquivo de texto as alterações que fizermos de forma dinâmica, ou seja, com a base online não permaneceram quando reiniciarmos nossa instância, pois a instância sempre irá ler esse arquivo, a única forma de fazermos as alterações permanentes é dar um “shutdown” na instância e alterar o arquivo fisicamente. Isso pode ser um problema visto que ter que “derrubar” a instância significa downtime no serviço de banco de dados. Depois de criarmos o banco de dados, iremos criar o SPFILE um arquivo binário
que permite alterarmos alguns parâmetros dinâmicos e deixa-los como permanentes. Logue com o usuário “oracle” e d efina o valor da variável ORACLE_SID com o nome do banco de dados. [root@lab01 ~]# su - oracle [oracle@lab01 ~]$ export ORACLE_SID=producao [oracle@lab01 ~]$ echo $ORACLE_SID producao [oracle@lab01 ~]$ vi initproducao.ora 4
########################### Initialization Parameter ########################### # Author: Rodrigo Santana ########################################################################## db_name=producao instance_type=RDBMS db_domain=world db_files=1000 processes=600 db_block_size=8192 statistics_level=typical audit_trail=none background_dump_dest='/u01/app/oracle/admin/producao/bdump/' user_dump_dest='/u01/app/oracle/admin/producao/udump/' core_dump_dest='/u01/app/oracle/admin/producao/cdump/' compatible=10.2.1.0 control_files=('/u02/oradata/producao/control01.ctl','/u03/oradata/producao/control02.ctl')
cursor_sharing=exact sga_target=512M pga_aggregate_target=300M db_file_multiblock_read_count=16 db_flashback_retention_target=7200 db_recovery_file_dest='/u02/oradata/producao/flash_recovery_area' db_recovery_file_dest_size='1000M' log_archive_dest_1='LOCATION=/u02/oradata/producao/archives' log_archive_format='log%t_%s_%r.arc' remote_login_passwordfile=none undo_management=auto undo_retention=7200 undo_tablespace=undotbs_01
Pressione “ESC” + “:” + “x” para salvar o arquivo “initprod.ora”. Para cumprir com as recomendações da OFA vamos armazenar o nosso arquivo de parâmetros no diretório “/u01/app/oracle/admin/producao/pfile” . [oracle@lab01 ~]$ mv initproducao.ora /u01/app/oracle/admin/producao/pfile/ [oracle@lab01 ~]$
Depois de criarmos o arquivo de parâmetros, vamos usa-lo para iniciar a nossa instância. Apenas para relembrar, a instância é composta de processos em background e alocação de memória do sistema operacional. Para iniciar nossa instância devemos ter configurado corretamente as variáveis $ORACLE_HOME e $ORACLE_SID. A $ORACLE_HOME neste caso é necessária para usarmos a ferramenta “SQLPLUS “ sem especificarmos o seu caminho completo. E a variável $ORACLE_SID é necessária pois, no momento que emitirmos o comando “STARTUP” o Oracle irá ler essa variável e procurar pelo arquivo init.ora . O comando “echo” imprimi o valor de uma variável [oracle@lab01 ~]$ echo $ORACLE_SID producao [oracle@lab01 ~]$ echo $ORACLE_HOME 5
/u01/app/oracle/product/10.2.0/db_1 [oracle@lab01 ~]$
Depois de certificarmos que as variáveis necessárias estão corretamente configuradas, vamos agora iniciar a instância usando a ferramenta “SQLPLUS”. [oracle@lab01 ~]$ sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on Tue Jan 12 14:08:10 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL>
Como mostrado acima usei o comando “sqlplus /nolog “ para conectar ao SQLPLUS
sem informar o usuário. Agora precisamos nos autenticar como SYS e com os privilégios de SYSDBA para poder usar o comando STARTUP. SQL> connect sys as sysdba Enter password: Connected to an idle instance. SQL>
Como mostrado acima, depois de emitir o comando “CONNECT” é solicitado uma senha, essa senha podemos deixar em branco pois estamos usando a autenticação do sistema operacional. A mensagem “Connected to an idle instance” é normal pois ainda não iniciamos a instância. Agora é hora de emitir o comando STARTUP NOMOUNT seguido do caminho do nosso arquivo de parâmetros (PFILE) criando anteriormente. O Parâmetro NOMOUNT é usado quando não temos ainda control files para montar nosso banco de dados. Neste caso apenas a nossa instância está iniciada. SQL> startup nomount pfile= '/u01/app/oracle/admin/producao/pfile/initproducao.ora'; ORACLE instance started. Total System Global Area 536870912 bytes Fixed Size 1220432 bytes Variable Size 150995120 bytes Database Buffers 381681664 bytes Redo Buffers 2973696 bytes SQL>
Para ver os processos em background do sistema operacional que a nossa instância criou use o seguinte comando SQL> !ps -ef | grep producao oracle 4987 4984 0 14:13 ? 00:00:00 oracleproducao (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 5116 1 0 14:44 ? 00:00:00 ora_pmon_producao oracle 5118 1 0 14:44 ? 00:00:00 ora_psp0_producao oracle 5120 1 0 14:44 ? 00:00:00 ora_mman_producao oracle 5122 1 0 14:44 ? 00:00:00 ora_dbw0_producao oracle 5124 1 0 14:44 ? 00:00:00 ora_lgwr_producao oracle 5126 1 0 14:44 ? 00:00:00 ora_ckpt_producao oracle 5128 1 0 14:44 ? 00:00:00 ora_smon_producao 6
oracle 5130 1 0 14:44 ? 00:00:00 ora_reco_producao oracle 5132 1 0 14:44 ? 00:00:00 ora_mmon_producao oracle 5134 1 0 14:44 ? 00:00:00 ora_mmnl_producao oracle 5135 5080 0 14:44 ? 00:00:00 oracleproducao (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle 5175 5080 0 14:51 pts/1 00:00:00 /bin/bash -c ps -ef |grep producao oracle 5177 5175 0 14:51 pts/1 00:00:00 /bin/bash -c ps -ef |grep producao SQL> Dica: Para visualizar todo o processo de inicialização da instância detalhadamente veja o conteúdo do arquivo alert.log
Criando o banco de dados
O banco de dados que iremos criar irá conter uma tablespace system para armazenar o dicionário de dados, um tablespace Sysaux, um par de control files e redo logs multiplexados, uma tablespace temporaria padrão, uma tablespace de undo e uma tablespace de dados. Segue o script de criação do banco de dados: create database producao user sys identified by 0r4cl3 user system identified by 0r4cl3 maxinstances 1 maxloghistory 1 maxlogfiles 6 maxlogmembers 5 character set US7ASCII national character set AL16UTF16 datafile '/u02/oradata/producao/system01.dbf' size 500M extent management LOCAL SYSAUX datafile '/u02/oradata/producao/sysaux01.dbf' size 500M DEFAULT TEMPORARY tablespace temp01 tempfile '/u02/oradata/producao/temp01_01.dbf' size 100M UNDO tablespace undotbs_01 datafile '/u02/oradata/producao/undotbs01.dbf' size 200M DEFAULT tablespace DATA datafile '/u02/oradata/producao/data01.dbf' size 500M LOGFILE group 1 ('/u02/oradata/producao/redo01a.log' , '/u03/oradata/producao/redo01b.log') size 50M, group 2 ('/u02/oradata/producao/redo02a.log , '/u03/oradata/producao/redo02b.log') size 50M; Vou comentar alguns parâmetros da instrução “CREATE DATABASE”
7
create database producao : Define o nome do banco de dados como “producao”, ao
executarmos o script de criação do banco de dados esse comando irá criar os control files na localização especificada no arquivo de parâmetros (initproducao.ora) user sys identified by 0r4cl3 : Define a senha do usuário SYS user system identified by 0r4cl3 : Define a senha do usuário SYSTEM maxinstances : Especifica o número máximo de instâncias que podem manipular o
banco de dados, usado quando estamos trabalhando com RAC. Como não estamos trabalhando com RAC vamos configurar esse parâmetro com o valor 1. maxloghistory : Especifica o número máximo de archive redo logs para automatic
media recovery maxlogfiles : Este parâmetro especifica o número máximo de grupos de redo logs do
banco de dados. Quando o nível de compatibilidade é inferior a 10.2.0 a única forma de sobrescrever esse limite é recriando o control file ou o banco de dados. Quando a compatibilidade do banco de dados for superior a 10.2.0 podemos aumentar o número de grupos de redo logs que o control file será expandido conforme necessário. Vamos configurar esse parâmetro com 6 prevendo um futuro aumento no número de grupos de redo logs. maxlogmembers : Este parâmetro especifica o número máximo de membros de cada
redo grupo de redo log. A única forma de sobrescreve esse parâmetro é recriando o banco de dados. Vamos configurar esse parâmetro com 3. character set e national character set : Especifica o conjunto de caráteres usados pelo
banco de dados, vamos deixar esse parâmetro com seu valor padrão. datafile '/u02/oradata/producao/system01.dbf' size 500M
Nesta linha acima estamos dizendo que esse será o data file da nossa tablespace SYSTEM e com um tamanho de 500MB. A tablespace SYSTEM é de suma importância, pois, o dicionário de dados é criado dentro desta tablespace. extent management LOCAL
Na linha de comando acima estamos especificando que a nossa tablespace SYSTEM deverá ser gerenciada localmente, ou invés do método de gerenciamento por dicionário. SYSAUX datafile '/u02/oradata/producao/sysaux01.dbf' size 500M
Na linha acima estamos especificando o data file da tablespace SYSAUX. A tablespace SYSAUX é uma tablespace que serve como auxiliar para a tablespace SYSTEM porque ela é a tablespace padrão para muitas funcionalidades de produtos da Oracle que requeriam sua própria tablespace, isso reduz o número de tablespaces requeridas pelo banco de dados que você precisa manter.
8
DEFAULT TEMPORARY tablespace temp01 tempfile '/u02/oradata/producao/temp01_01.dbf' size 100M
Na linha acima estamos especificando nossa tablespace temporária padrão que será chamada de “temp01” e com um tamanho de 100MB. A tablespace temporária é importante pois é usada por operações de sort (ordenações) que não podem ser feitas em memória usam a tablespace temporária. Nesse exemplo “temp01” será nossa
tablespace padrão, ou seja, no momento da criação de qualquer usuário se não especificarmos a tablespace temporária a ser usada, será atribuida a tablespace padrão “temp01”. Se não criarmos uma tablespace padrão, os usuários usaram como tablespace
temporária a tablespace SYSTEM o que não é uma boa prática. UNDO tablespace undotbs_01 datafile '/u02/oradata/producao/undotbs01.dbf' size 200M
Na linha acima estamos especificando a nossa tablespace de UNDO. A tablespace de UNDO é usada para armazenar segmentos de undo. Quando executamos uma operação de DML dentro de uma transação, a transação é vinculada a um segmento de undo na tablespace de undo corrente. Isso é importante pois se precisarmos fazer um “rollback” a imagem inicial da transação (before image) será lida a partir da tablespace de undo. Para esse exemplo nossa tablespace de undo será chamada de “undotbs01” e com um
tamanho de 200MB. DEFAULT tablespace DATA datafile '/u02/oradata/producao/data01.dbf' size 500M
Na linha acima estamos especificando nossa tablespace padrão. Essa será a tablespace atribuída a todos os usuários que no momento da criação não foram explicitamente atribuídos a nenhuma tablespace, ou seja, se no momento da criação do usuário não atribuirmos ele a nenhuma tablespace, essa será a tablespace atribuída por padrão. Essa tablespace será onde os usuários armazenarão seus segmentos como, tabelas, índices, etc. LOGFILE group 1 ('/u02/oradata/producao/redo01a.log' , '/u03/oradata/producao/redo01b.log') size 50M, group 2 ('/u02/oradata/producao/redo02a.log , '/u03/oradata/producao/redo02b.log') size 50M;
Com os comandos acima, estamos definindo os grupos de redo logs, e os seus membros. Como mostrado acima, temos 2 grupos e cada grupo contendo 2 membros. Depois de criar o scrip de criação do banco de dados, vamos executar o script e salvar nos diretórios criados anteriormente. Certifique que a instância está em modo nomount para executar o script, se ainda não iniciou a instância emita o comando “startup nomount” conforme explicado acima.
9
Para executar o script de criação do banco de dados, conecte ao SQLPLUS como SYSDBA e execute o script como abaixo: SQL> @create_database.sql Database created. SQL>
Depois de criado vamos fazer algumas verificações para saber se foi criado com sucesso nosso banco de dados. A query abaixo mostra o nome e o status da instância. SQL> select instance_name, status from v$instance; INSTANCE_NAME STATUS ------------------------- -----------producao OPEN
A segunda query mostra o nome do banco de dados e o estado em que ele está. SQL> select name, open_mode from v$database; NAME OPEN_MODE -------- ---------PRODUCAO READ WRITE
Agora vamos verificar se os nossos data files, control files, redo logs foram criados com sucesso nas localizações corretas. A seguinte query exibe a localização dos demais arquivos ditos acima SQL> select name 2 from v$controlfile 3 union 4 select name 5 from v$datafile 6 union 7 select member 8 from v$logfile; NAME ------------------------------------------------------------------------------- /u02/oradata/producao/control01.ctl /u02/oradata/producao/data01.dbf /u02/oradata/producao/redo01a.log /u02/oradata/producao/redo02a.log /u02/oradata/producao/sysaux01.dbf /u02/oradata/producao/system01.dbf /u02/oradata/producao/undotbs01.dbf /u03/oradata/producao/control02.ctl /u03/oradata/producao/redo01b.log /u03/oradata/producao/redo02b.log 10 rows selected.
Vamos verificar que esses arquivos foram criados com sucesso no sistema operacional, para isso fiz o seguinte: A partir do “sqlplus” é possível executar um comando do 10
sistema operacional sem sair do utilitário, basta usar o sinal de exclamação “!“ antes do comando, segue exemplo abaixo. SQL> !ls -l /u02/oradata/producao total 1851012 drwxr-xr-x 2 oracle oinstall 4096 Jan 8 15:57 archives -rw-r----- 1 oracle oinstall 5947392 Jan 15 15:29 control01.ctl -rw-r----- 1 oracle oinstall 524296192 Jan 15 15:06 data01.dbf drwxrwxr-x 2 oracle oinstall 4096 Dec 15 05:43 flash_recovery_area -rw-r----- 1 oracle oinstall 52429312 Jan 15 15:26 redo01a.log -rw-r----- 1 oracle oinstall 52429312 Jan 15 15:06 redo02a.log -rw-r----- 1 oracle oinstall 524296192 Jan 15 15:06 sysaux01.dbf -rw-r----- 1 oracle oinstall 524296192 Jan 15 15:21 system01.dbf -rw-r----- 1 oracle oinstall 104865792 Jan 15 15:06 temp01_01.dbf -rw-r----- 1 oracle oinstall 209723392 Jan 15 15:21 undotbs01.dbf SQL> SQL> !ls -l /u03/oradata/producao total 108352 -rw-r----- 1 oracle oinstall 5947392 Jan 15 15:29 control02.ctl -rw-r----- 1 oracle oinstall 52429312 Jan 15 15:26 redo01b.log -rw-r----- 1 oracle oinstall 52429312 Jan 15 15:06 redo02b.log SQL> Dica: Para ver de forma detalhada todos os passos da criação do banco de dados, examine o conteúdo do arquivo alert.log
Pronto, criamos nosso banco de dados e nos certificamos que os arquivos relevantes foram criados. Devemos agora executar os scripts de criação do dicionário de dados. Oracle fornece dois scripts importantes são eles: Catalog.sql : Popula o banco de dados com as views do dicionário de dados, synonyms
publics e outros objetos. Catproc.sql: Cria pacotes fornecidos pela Oracle e outros objetos para suportar o uso de
codigo PL/SQL no banco de dados. Dica: Ignore qualquer mensagem erro mostrados na execução dos scripts, a maioria deles são mostrados pois existem alguns objetos que foram excluídos ou que não existem mais. Se quiser pode executar os scripts novamente, você não verá nenhum erro.
Aguarde até o termino da execução dos scripts, isso pode demorar alguns minutos. Executando os scripts SQL> @$ORACLE_HOME/rdbms/admin/catalog.sql Grant succeeded. PL/SQL procedure successfully completed. SQL> @$ORACLE_HOME/rdbms/admin/catproc.sql 11
............... No errors. Package body created. PL/SQL procedure successfully completed. SQL>
Neste momento temos uma base de dados totalmente funcional. Agora vamos alterar o modo de arquivamento de logs do banco de dados, os modos de arquivamento disponíveis são NOARCHIVELOG e ARCHIVELOG. O NOARCHIVELOG é o modo de arquivamento padrão. Com esse modo o arquivamento de redo logs são desabilitados, ou seja, quando os grupos de redo logs se tornarem completos, eles serão sobrescritos por novas transações. Com isso as formas de recuperação do banco de dados nesse modo são muito restritas, por exemplo, no evento de uma falha em disco, apenas podemos voltar nosso banco de dados ao estado do ultimo backup full, ou seja, as transações subseqüentes ao nosso backup não estarão disponíveis para a recuperação. No modo ARCHIVELOG o Oracle “salva” ou “arquiva” os redo logs cheios em arquivos chamados archive logs . Isso é muito importante pois assim temos um registro
de todas as alterações do banco de dados de forma cronológica salva em arquivos externos. Isso também fará toda diferença na recuperação de um banco de dados, por exemplo, no evento da perda de um disco, pode-se votar um backup e todos os archive logs gerados depois do backup para recuperar o banco de dados sem perder qualquer dado armazenado no archive log. Sem dúvidas o modo ARCHIVELOG é o modo mais indicado para um banco de dados OLTP que não se pode perder qualquer informação. Alterando modo de arquivamento de logs
Antes de alterarmos o modo de arquivamento de logs vamos confirmar o modo de arquivamento do nosso banco de dados com um simples select na view v$database. SQL> select log_mode from v$database; LOG_MODE -----------NOARCHIVELOG 1 row selected. SQL> Ou ainda, o comando abaixo nos mostra mais informações, como o “Database log mode” e “Archive destination” o “Database log mode” é o modo de arquivamento do nosso banco de dados, e o “Archive destination” é o destino dos archive logs.
SQL> ARCHIVE LOG LIST Database log mode No Archive Mode Automatic archival Disabled Archive destination /u02/oradata/producao/archives Oldest online log sequence 8 Current log sequence 9 SQL> 12
Como visto acima, esse é modo de arquivamento padrão. Vamos alterar para o modo ARCHIVELOG. Para isso precisamos desligar a nossa instância e inicia-la no modo MOUNT. SQL> SHUTDOWN IMMEDIATE; Database closed. Database dismounted. ORACLE instance shut down. Iniciando a instância. SQL> STARTUP MOUNT PFILE='/u01/app/oracle/admin/producao/pfile/initproducao.ora'; ORACLE instance started. Total System Global Area 536870912 bytes Fixed Size 1220432 bytes Variable Size 150995120 bytes Database Buffers 381681664 bytes Redo Buffers 2973696 bytes Database mounted. SQL> Agora usamos o comando abaixo SQL> ALTER DATABASE ARCHIVELOG; Database altered. Visualizando o estado do nosso banco de dados depois de alterado. SQL> ARCHIVE LOG LIST Database log mode Archive Mode Automatic archival Enabled Archive destination /u02/oradata/producao/archives Oldest online log sequence 8 Next log sequence to archive 9 Current log sequence 9 SQL> Finalmente vamos abrir nosso banco de dados. SQL> ALTER DATABASE OPEN; Database altered. SQL> Criando o SPFILE
Vamos criar o SPFILE que é como explicado acima, um arquivo binário que permite fazermos alterações dinâmicas de forma permanentes. Esse é um recurso muito importante para o DBA pois evita de termos que “derrubar” a instância para alterarmos alguns parâmetros. Para criar o SPFILE usamos os comandos abaixo.
13
SQL> create spfile 2 from 3 pfile ='/u01/app/oracle/admin/producao/pfile/initproducao.ora'; File created. SQL>
Depois de emitir o comando create spfile será criado o arquivo spfileproducao.ora no diretório $ORACLE_HOME/dbs. Para visualizar o arquivo use o comando abaixo: SQL> !ls $ORACLE_HOME/dbs hc_producao.dat initdw.ora init.ora spfileproducao.ora SQL>
Mesmo depois de criado o spfile, o nosso banco de dados ainda usa o antigo arquivo initproducao.ora. Para forçar o uso do SPFILE devemos “derrubar” a instância e inicia-
la novamente. SQL> SHUTDOWN IMMEDIATE; Database closed. Database dismounted. ORACLE instance shut down. SQL>
Agora vamos iniciar nosso banco de dados, para isso não precisamos especificar o parâmetro “pfile” pois o Oracle irá procurar no diretório $ORACLE_HOME/dbs o arquivo “spfileproducao.ora” e iniciar a instância através dele.
SQL> startup ORACLE instance started. Total System Global Area 536870912 bytes Fixed Size 1220432 bytes Variable Size 150995120 bytes Database Buffers 381681664 bytes Redo Buffers 2973696 bytes Database mounted. Database opened. SQL> Configurando a rede
Quando queremos abrir uma sessão no banco de dados a partir de um cliente da rede, precisamos nos conectar ao banco de dados através da rede. Todos os servidores que hospedam um banco de dados Oracle, deve executar um serviço chamado Oracle Net Listener , cuja sua principal função é “ouvir” as requisições dos clientes que querem fazer logon no banco de dados. O Listener depois de verificar que o cliente tem as informações correspondentes ao banco de dados (protocolo, nome da instância e porta) passa a requisição ao banco de dados. O Banco de dados irá autenticar o usuário baseado nas informações de nome de usuário e senha. 14
No Oracle Database 10g o processo em background chamado PMON é encarregado de dinamicamente registrar o banco de dados com o listener, isso quer dizer que quando iniciamos a nossa instância o banco de dados automáticamente se registra com o listener, e o listener já inicia “ouvindo” as requisições de conexão para esse banco de dados. Para gerenciar o listener usamos o utilitário lsnrctl . Com o lsnrctl podemos
visualizar o status do listener, iniciar o listener (start), parar o listener (stop) entre outras operações. Vamos visualizar o status do listener, o mesmo deve está ouvindo as requisições para nosso banco de dados, já que o processo PMON é encarregado de fazer essa tarefa. Para isso use o comando abaixo. [oracle@lab01 ~]$ lsnrctl status LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 25-JAN-2010 13:22:28 Copyright (c) 1991, 2005, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) STATUS of the LISTENER -----------------------Alias LISTENER Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production Start Date 25-JAN-2010 13:17:01 Uptime 0 days 0 hr. 5 min. 26 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=lab01)(PORT=1521))) Services Summary... Service "producao.world" has 1 instance(s). Instance "producao", status READY, has 1 handler(s) for this service... Service "producao_XPT.world" has 1 instance(s). Instance "producao", status READY, has 1 handler(s) for this service... The command completed successfully [oracle@lab01 ~]$
Como visto acima nosso listener já está iniciado e ouvindo as requisições para o banco de dados producao. Mas podemos também criar o nosso próprio listener, para isso precisamos criar o arquivo listener.ora. Nele definimos qual o endereço que irá ouvi as requisições, em qual porta iremos ouvir as requisições e até mesmo o protocolo de rede. Esse arquivo deve ser criado dentro do diretório $ORACLE_HOME/netword/admin/. Abaixo segue o exemplo do arquivo listener.ora
15
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1) (SID_NAME = producao) ) ) LISTENER = (DESCRIPTION = (ADDRESS =(PROTOCOL=tcp)(HOST=192.168.1.100)(PORT=1521)) )
Salve esse arquivo dentro do diretório $ORACLE_HOME/network/admin/ com o nome listener.ora e vamos parar o listener e inicia-lo para que o mesmo passa a usar o nosso arquivo. Listando o arquivo [oracle@lab01 admin]$ pwd /u01/app/oracle/product/10.2.0/db_1/network/admin [oracle@lab01 admin]$ ls listener.ora samples shrept.lst tnsnames.ora [oracle@lab01 admin]$ Parando o listener [oracle@lab01 admin]$ lsnrctl stop LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 25-JAN-2010 13:29:40 Copyright (c) 1991, 2005, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) The command completed successfully Iniciando o listener [oracle@lab01 admin]$ lsnrctl start LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 25-JAN-2010 13:29:55 Copyright (c) 1991, 2005, Oracle. All rights reserved. Starting /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 10.2.0.1.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[oracle@lab01 admin]$ lsnrctl start LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 25-JAN-2010 13:29:55 Copyright (c) 1991, 2005, Oracle. All rights reserved. Starting /u01/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 10.2.0.1.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 16
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=lab01)(PORT=1521))) Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) STATUS of the LISTENER -----------------------Alias LISTENER Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production Start Date 25-JAN-2010 13:29:55 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=lab01)(PORT=1521))) The listener supports no services The command completed successfully [oracle@lab01 admin]$ .0/db_1/network/log/listener.log Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=lab01)(PORT=1521))) Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) STATUS of the LISTENER -----------------------Alias LISTENER Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production Start Date 25-JAN-2010 13:29:55 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=lab01)(PORT=1521))) The listener supports no services The command completed successfully [oracle@lab01 admin]$
Repare no comando acima que o parâmetro listener Parameter File indica o nome e o caminho do nosso arquivo criado anteriormente.
17
Configurando o Enterprise Manager
O Enterprise manager é uma ferramenta importante e ajuda na administração e no monitoramento do banco de dados. A sua instalação não é obrigatório, mas é aconselhável pela Oracle. Para instalar invoque o utilitário emca com os parâmetros necessários para criar o repositório. Em seguida o utilitário solicita o sid do banco de dados, a porta do listener, a senha para os usuários sys, dbsnmp e o sysman. Digite as informações e pressione enter. Aguarde até que o utilitário concluía a criação do repositório. [oracle@lab01 ~]$ $ emca -config dbcontrol db -repos create STARTED EMCA at Jul 10, 2011 2:19:19 PM EM Configuration Assistant, Version 10.2.0.1.0 Production Copyright (c) 2003, 2005, Oracle. All rights reserved. Enter the following information: Database SID: producao Listener port number: 1521 Password for SYS user: Password for DBSNMP user: Password for SYSMAN user: Email address for notifications (optional): Outgoing Mail (SMTP) server for notifications (optional): ----------------------------------------------------------------You have specified the following settings Database ORACLE_HOME ................ /u01/app/oracle/product/10.2.0/db_1 Database hostname ................ oracle10g-01 Listener port number ................ 1521 Database SID ................ producao Email address for notifications ............... Outgoing Mail (SMTP) server for notifications ............... ----------------------------------------------------------------Do you wish to continue? [yes(Y)/no(N)]: Y Jul 10, 2011 2:20:46 PM oracle.sysman.emcp.EMConfig perform INFO: This operation is being logged at /u01/app/oracle/product/10.2.0/db_1/cfgtoollogs/emca/producao/emca_2011-0710_02-19-19-PM.log. Jul 10, 2011 2:20:49 PM oracle.sysman.emcp.EMReposConfig createRepository INFO: Creating the EM repository (this may take a while) ... Jul 10, 2011 2:26:28 PM oracle.sysman.emcp.EMReposConfig invoke INFO: Repository successfully created Jul 10, 2011 2:26:41 PM oracle.sysman.emcp.ParamsManager getLocalListener WARNING: Error retrieving listener for oracle10g-01 Jul 10, 2011 2:26:47 PM oracle.sysman.emcp.util.DBControlUtil startOMS INFO: Starting Database Control (this may take a while) ... Jul 10, 2011 2:29:14 PM oracle.sysman.emcp.EMDBPostConfig performConfiguration INFO: Database Control started successfully
18
Jul 10, 2011 2:29:19 PM oracle.sysman.emcp.EMDBPostConfig performConfiguration INFO: >>>>>>>>>>> The Database Control URL is http://lab01:1158/em
View more...
Comments