remover o banco de dados via DBCA – Countdown to OCM

Para remover o banco de dados PROD1 via linha de comando com dbca, faca o comando abaixo:

-bash-3.2$ dbca -silent -deleteDatabase -sourceDB PROD1 

Estabelecendo conexão com o banco de dados

4% concluído

 9% concluído

14% concluído

19% concluído

23% concluído

28% concluído

47% concluído

Atualizando arquivos de configuração de rede

48% concluído

52% concluído

Deletando instância e arquivos de dados

76% concluído

100% concluído


Verifique o arquivo de log “/u01/app/oracle/cfgtoollogs/dbca/PROD10.log” para obter mais detalhes.

Criando o banco de dados Oracle via linha de comando – Countdown to OCM

Iremos criar um banco de dados Oracle a partir da linha de comando, sem uso de ferramentas.

Para isso, faremos a divisão das etapas em passos mostrados abaixo:
1) Alterar o /etc/oratab adicionando seu novo banco -bash-3.2$ 

-bash-3.2$ cat /etc/oratab

#

# This file is used by ORACLE utilities.  It is created by root.sh
# and updated by either Database Configuration Assistant while creating
# a database or ASM Configuration Assistant while creating ASM instance.
# A colon, ':', is used as the field terminator.  A new line terminates
# the entry.  Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
#   $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively.  The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
+ASM:/u01/app/oracle/product/11.2.0/grid:N
*:/u01/app/oracle/agent11g:N
PROD1:/u01/app/oracle/product/11.2.0/dbhome_1:N # adicionado 

 2) Criar os apelidos para os devidos locais, isso facilita a administracao. Arquivo alias.sh
alias tns=’cd $ORACLE_HOME/network/admin’
alias dbs=’cd $ORACLE_HOME/dbs’
alias startup=’echo startup | sqlplus “/ as sysdba”‘
alias abort=’echo shutdown abort | sqlplus “/ as sysdba”‘
alias mount=’echo startup mount| echo shutdown abort | sqlplus “/ as sysdba”‘
alias rman=’rman target /’
alias rmana=’rman target / auxiliary sys/oracle_4U@aux’
alias rdbms=’cd $ORACLE_HOME/rdbms/admin’
depois de criado, faca a carga do arquivo
source alias.sh
 3) Criar o arquivo de senha 
-bash-3.2$ dbs
-bash-3.2$ pwd
/u01/app/oracle/product/11.2.0/dbhome_1/dbs
-bash-3.2$ orapwd file=orapwPROD1 password=oracle
 4) Criar o arquivo de inicializacao, parameter file  
vi initPROD1.ora
db_name=PROD1
db_create_file_dest=’/u01/app/oracle/oradata/’
db_create_online_log_dest_1=’/u01/app/oracle/oradata/’
db_create_online_log_dest_2=’/u02/app/oracle/oradata/’
sga_target=1G
pga_aggregate_target=200M
remote_login_passwordfile=’EXCLUSIVE’
control_files=’/u01/app/oracle/oradata/PROD1/control01.ctl’,’/u02/app/oracle/oradata/PROD1/control02.ctl’


 7) Criar as pastas para o controlfile
-bash-3.2$ mkdir -p /u01/app/oracle/oradata/PROD1/
-bash-3.2$ mkdir -p /u02/app/oracle/oradata/PROD1/
 6) Inicializar a instancia, e criar o arquivo spfile 
-bash-3.2$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Mon Apr 6 21:45:22 2015
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 1071333376 bytes
Fixed Size     1349732 bytes
Variable Size   281020316 bytes
Database Buffers   784334848 bytes
Redo Buffers     4628480 bytes
ORA-00205: error in identifying control file, check alert log for more info
SQL> create spfile from pfile;
File created.
SQL> shutdown abort
ORACLE instance shut down.
      
SQL> 
SQL> 
SQL> startup
ORACLE instance started.
Total System Global Area 1071333376 bytes
Fixed Size     1349732 bytes
Variable Size   281020316 bytes
Database Buffers   784334848 bytes
Redo Buffers     4628480 bytes
ORA-00205: error in identifying control file, check alert log for more info
SQL> 
 7) Colocar a sintaxe da criacao de banco em um arquivo buscar na documentacao e subsittuir somente o nome do banco e as senhas. Arquivo db.sql
CREATE DATABASE PROD1
     USER SYS IDENTIFIED BY oracle
     USER SYSTEM IDENTIFIED BY oracle
     EXTENT MANAGEMENT LOCAL
     UNDO TABLESPACE undotbs
     DEFAULT TEMPORARY TABLESPACE tempts1
     DEFAULT TABLESPACE users;
 8) Criar o banco de dados 

-bash-3.2$ sqlplus / as sysdba @db.sql
SQL*Plus: Release 11.2.0.3.0 Production on Mon Apr 6 21:53:30 2015
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – Production
With the Par
titioning, OLAP, Data Mining and Real Application Testing options
Database created.


 9) Instalar o dicionario de dados 
rdbms
SQL> @catalog.sql
SQL> @catproc.sql
SQL>  connect system/oracle 
SQL> @?/sqlplus/admin/pupbld.sql
10) Instalar o enteprise manager database control

SQL> alter user dbsnmp account unlock identified by oracle;

User altered.

-bash-3.2$ emca -config dbcontrol db -repos create
STARTED EMCA em 06/04/2015 22:13:52
Assistente de Configuração do EM, Produção da Versão 11.2.0.3.0
Copyright (c) 2003, 2011, Oracle. Todos os direitos reservados.
Especifique as seguintes informações:
SID do Banco de Dados: PROD1
Número da porta do listener: 1521
ORACLE_HOME do Listener [ /u01/app/oracle/product/11.2.0/grid ]: 
Senha para o usuário SYS:  
Senha do usuário DBSNMP:  
Senha do usuário SYSMAN:  
Endereço de e-mail para notificações (opcional): 
Servidor de Saída de Correio (SMTP) para notificações (opcional): 
—————————————————————–
Você especificou as seguintes definições
ORACLE_HOME do banco de dados ……………. /u01/app/oracle/product/11.2.0/dbhome_1
Nome do host local ……………. srv01
ORACLE_HOME do Listener ……………. /u01/app/oracle/product/11.2.0/grid
Número da porta do listener ……………. 1521
SID do Banco de Dados ……………. PROD1
Endereço de e-mail para notificações …………… 
Servidor de Saída de Correio (SMTP) para notificações …………… 
—————————————————————–
Deseja continuar? [sim(Y)/não(N)]: Y
06/04/2015 22:14:06 oracle.sysman.emcp.EMConfig perform
INFO: Esta operação está sendo registrada em /u01/app/oracle/cfgtoollogs/emca/PROD1/emca_2015_04_06_22_13_52.log.
06/04/2015 22:14:06 oracle.sysman.emcp.EMReposConfig createRepository

INFO: Criando o repositório do EM (isso pode demorar um pouco)…

06/04/2015 22:16:29 oracle.sysman.emcp.EMReposConfig invoke
INFO: Repositório criado com sucesso
06/04/2015 22:16:32 oracle.sysman.emcp.EMReposConfig uploadConfigDataToRepository
INFO: Fazendo upload dos dados de configuração para o repositório EM (isso pode demorar um pouco) …
06/04/2015 22:17:22 oracle.sysman.emcp.EMReposConfig invoke
INFO: Dados de configuração submetidos a upload com sucesso
06/04/2015 22:17:24 oracle.sysman.emcp.util.DBControlUtil secureDBConsole
INFO: Protegendo o Database Control (isso pode demorar um pouco) …
06/04/2015 22:18:06 oracle.sysman.emcp.util.DBControlUtil secureDBConsole
INFO: Database Control protegido com sucesso.
06/04/2015 22:18:06 oracle.sysman.emcp.util.DBControlUtil startOMS
INFO: Iniciando Database Control (isso pode demorar um pouco)…
06/04/2015 22:18:31 oracle.sysman.emcp.EMDBPostConfig performConfiguration
INFO: Database Control iniciado com sucesso
06/04/2015 22:18:31 oracle.sysman.emcp.EMDBPostConfig performConfiguration
INFO: >>>>>>>>>>> O URL do Database Control é https://srv01:1158/em <<<<<<<<<<<
06/04/2015 22:18:33 oracle.sysman.emcp.EMDBPostConfig invoke
WARNING: 
************************  WARNING  ************************
O Repositório de Gerenciamento está no modo seguro, no qual os dados do Enterprise Manager serão criptografados. A chave de criptografia se encontra no arquivo: /u01/app/oracle/product/11.2.0/dbhome_1/srv01_PROD1/sysman/config/emkey.ora. Certifique-se de que esse arquivo tem backup, pois os dados criptografados não poderão mais ser utilizados se o arquivo se perder. 
***********************************************************
A configuração do Enterprise Manager foi concluída com sucesso

FINISHED EMCA em 06/04/2015 22:18:33


Criando um banco atraves do DBCA via linha de comando – Countdown to OCM

Neste documento estarei mostrando como criar um banco de dados via dbca, na linha de comando.
O interessante e que o comando abaixo demora em torno de 10 minutos com o enteprise manager database control ja criado.

Primeiro, va ate o arquivo /etc/oratab e incluia a linha com um nome de um banco, pode ser algum somente de teste ou o que vai ser criado. Rodaremos o . oraenv para configurar as variaveis de ambiente.

-bash-3.2$ cat /etc/oratab

# This file is used by ORACLE utilities.  It is created by root.sh

# and updated by either Database Configuration Assistant while creating

# a database or ASM Configuration Assistant while creating ASM instance.

# A colon, ':', is used as the field terminator.  A new line terminates
# the entry.  Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
#   $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively.  The third filed indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
+ASM:/u01/app/oracle/product/11.2.0/grid:N

*:/u01/app/oracle/agent11g:N


dbca -silent > criadb.sh

Conteudo do Arquivo criadb.sh

dbca  -silent
        -createDatabase
                -templateName General_Purpose.dbc
                -gdbName PROD1
                -sysPassword oracle
                -systemPassword oracle
                -emConfiguration LOCAL
                        -dbsnmpPassword oracle
                        -sysmanPassword oracle
                -datafileDestination '/u01/app/oracle/oradata'
                -recoveryAreaDestination '/u01/app/oracle/fast'
                -storageType FS
                -characterSet AL32UTF8
                -sampleSchema true

Removendo algumas linhas e fazendo ajustes o arquivo ficara pronto.

Dai o proximo passo executa-lo:

sh criadb.sh

-bash-3.2$ sh criadb.sh 
Falha ao limpar as etapas
5% concluído
Copiando arquivos de banco de dados
7% concluído
8% concluído
38% concluído
Criando e iniciando a instância Oracle
39% concluído
41% concluído
45% concluído
46% concluído
50% concluído
54% concluído
55% concluído
56% concluído
59% concluído
61% concluído
Registrando o banco de dados no Oracle Restart
66% concluído
Concluindo Criação de Banco de Dados
70% concluído
73% concluído
76% concluído
86% concluído
96% concluído
100% concluído

Verifique o arquivo de log "/u01/app/oracle/cfgtoollogs/dbca/PROD1/PROD10.log" para obter mais detalhes.

-bash-3.2$ . oraenv
ORACLE_SID = [PROD1] ? PROD1
The Oracle base remains unchanged with value /u01/app/oracle
-bash-3.2$ emctl status dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.3.0 
Copyright (c) 1996, 2011 Oracle Corporation.  All rights reserved.
https://srv01:1158/em/console/aboutApplication

Oracle Enterprise Manager 11g is not running.


Dessa forma seu banco ja esta criado com o modelo e exemplos de esquema, de forma com que voce nao gastou 10 minutos para completar a operacao.

A estrutura física do Banco de dados Oracle – Revisão

[Arquivos de controle] – o padrão oracle é maner tres arquivos por motivos de segurança.
Se deve multiplicar estes arquivos por motivo de segurança. estes arquivos contém informações vitais, sendo elas:

– localização física dos arquivos;
– ponto de recuperação;
– informações sobre backup;
– último SCN (system change number);

[Datafiles ou arquivos de dados] – os datafiles são aqueles dos quais armazenam os dados das tabelas. São mapeados logicamente através das tablespaces, onde cada tablespace deve ter um ou mais datafiles. Internamente, para melhor acondicionamento dos dados, os datafiles são segmentados, e ainda: nestes segmentos existem as extensões e – por fim – o bloco de dados que é a menor porção de unidade de armazenamento no oracle. a segmentação pode ser manual ou automática. a partir da 9i este controle de segmentação automática é padrão.

[Arquivos de redo] – separados em grupos para permitir a troca entre eles (switch). O padrão são dois grupos e cabe ao DBA aumentar o número de grupos e membros para promover segurança. O redo é uma área essencial para que se possa manter integridade do BD. Toda instrução é replicada, quando confirmada, para o log_buffer. Após isto, o log_writer baixa esta informação em disco. Segue a regra de 1/3 do log_buffer cheio, após o commit ou conforme determinado para mttr_target (mean time to recover) .
Para se fazer o backup a quente (hotbackup), devemos habilitar o arquivamento destes arquivos de redo.

Cabe ao DBA saber a freqüência de arquivamento para saber quantos mega estão sendo gerados. Se a freqüência for alta demais pode estar ocorrendo retençõ (espera) ao se gerar o switch. Isto fazcom que o banco trave. Geralmente, o DBA – para tentar resolver isto – aumenta o log_buffer e/ou aumenta o tamanho dos arquivos de redo para que o switch ocorra com menor freqüência. Assim, estes arquivos de redo – quando gerados – são arquivados para que se houver perda ou falha no banco, possa retroceder no tempo através destes “archives”. Todos eles devem ser armazenados, não se pode perder a seqüência.

[Parte Física] – não essencial à recuperação. São considerados arquivos que podem ser recriados:
– arquivo de senha;
– spfile;
– init.ora;

Para o spfile pode ser recriado a partir do pfile (init.ora) através do comando:
SQL> CREATE SPFILE FROM PFILE;

Já o PFILE, quando instalamos o software oracle, vm um arquivo exemplo, o INIT.ORA,que pode
ser aproveitado para criar o seu INIT.ORA.
O arquivo de senha pode ser recriado com o comando $ORACLE_HOME/bin/orapwd

[Exercícios]

[1] Liste os datafiles;
SELECT name
FROM v$datafile;

[2] Liste os controlfiles;
SELECT name
FROM v$controlfile;

[3] Liste o local do arquivo de parâmetros;
SQL> SHOW PARAMETERS spfile;

[4] Indique o caminho do arquivo de senhas;
$ORACLE_HOME/dbs (linux)
$ORACLE_HOME/database (windows)

[5] Indique o caminho do arquivo de parâmetros (windows/linux);
$ORACLE_HOME/dbs (linux)
$ORACLE_HOME/database (windows)

[6] Crie o SPFILE a partir do PFILE;
SQL> CREATE SPFILE FROM PFILE;

[7] Execute o ORAPWD. O que ocorre?
o sistema operacional, mostra uma lista completa, porém suscinta de todas as
opçoes e argumentos do comando ORAPWD.

[8] Na ausência, de um arquivo de controle, o que ocorre?
se o banco ta ativo e perde o aruqivo de controle, o dba deve executar shutdown
no banco, e copiar a partir de um control file bom para a rota do danificado,
ou ajustar o parametro para nao pegar o controlfile com problema

[9] Na ausência, de um arquivo de redo, o que ocorre?
se o o arq redo pertence a um grupo de redo que contem mais
arquivos (=esta multiplexado), nao haverá parada de banco: ocorrera mensagens
do alert log. cabe ao dba apagar este arquivos de redo e recria-lo
se o arq de redo nã esta no grupo multiplexado -> Cabe ao dba (IMEDIATAMENTE)
recriar ou criar um novo aquivo de redo.
se o arq nao está no grupo de redo ativo, ou arqs de redo forem removidos -> Cabe
ao DBA parar o banco e voltar o backup

[10] Na ausência, de um arquivo spfile, o que ocorre?
o banco procura automaticamente o arquivo init.ora. Portanto, o spfile pode ser
criado a partir do init.ora.

Recriar os indices fragmentados

Recriacao dos indices é uma tarefa constante do DBA, se os indices estao fragmentados, pode ser penoso ao banco de dados, percorrer os indices para que eles possam informar a localizacao da informacao da qual buscamos.
Entao, outro dia precisei de recriar os indices que estavam fragmentados. Entao porque nao, criar um script para que o proprio banco, no domingo a noite, uma vez por semana fizesse isso?

Assim, o script abaixo foi transformado em uma procedure da qual, criei um job para rodar no domingo.

########################## INICIO PROCEDURE

CREATE OR REPLACE PROCEDURE “SYS”.”PROC_CRIAINDICEFRAG” is
begin
/* Sao dois blocos identicos, para garantir que os indices foram recriados */
FOR cur_rec IN
(SELECT ‘alter index ‘||table_owner||’.’||index_name||’ rebuild tablespace ‘|| tablespace_name||’ ‘ myddl
FROM DBA_indexes
WHERE blevel >=4
— and ROWNUM <=1
) loop
execute immediate cur_rec.myddl;
/*
if l_status != ‘OK’ then
dbms_output.put_line(‘error’);
end if;
*/
END LOOP;

FOR cur_rec IN
(SELECT ‘alter index ‘||table_owner||’.’||index_name||’ rebuild tablespace ‘|| tablespace_name||’ ‘ myddl
FROM DBA_indexes
WHERE blevel >=4
— and ROWNUM <=1
) loop
execute immediate cur_rec.myddl;
/*
if l_status != ‘OK’ then
dbms_output.put_line(‘error’);
end if;
*/
END LOOP;

end;

################################################# FIM PROCEDURE
— Bloco de chamada dentro do JOB

begin
SYS.PROC_CRIAINDICEFRAG;
end;