segunda-feira, 22 de agosto de 2011

Oracle - Criar um diretório para o Data_Pump

Aqui segue uma dica rápida para criar um diretório para exportar e importar dados com o Oracle Data_Pump:

Por padrão o Oracle já vem com um diretório configurado chamado 'DATA_PUMP_DIR', então vamos criar aqui um customizado:

$sqlplus /nolog
SQL > connect / as sysdba
SQL > CREATE OR REPLACE DIRECTORY DUMP_DIR AS '/oracle/dump';
SQL > DISCONNECT

Pronto, agora você pode importar dumps e exportá-los utilizando o diretório '/oracle/dump'.

Caso queira saber quais diretórios existem pode executar a query abaixo:

SQL > SELECT * FROM DBA_DIRECTORIES;

terça-feira, 9 de agosto de 2011

Oracle - Configurando Oracle Standby Physical Database no Windows

Os passos abaixo servem para criar uma database Standby Physical no Windows Server


Considerações:

- Testando no Oracle 10g
- Database: orcl ;
- Database em ARCHIVEMODE ;
- Comunicação entre o Master e Standby deve estar configurada, seja no hosts do Windows, seja por DNS, e importante por TNSNAMES ;
- Configurado para área comum(C:\DADOS\ARCHIVE_LOG) de archives um DFS(Não será explicado aqui como fazer, pois não é o foco) ;

1 - Criando o usuário de replicação:

$ set ORACLE_SID=orcl
$ sqlplus /nolog
SQL > CONNECT / AS SYSDBA
SQL > CREATE USER STANDBY
IDENTIFIED BY password
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
SQL > GRANT CONNECT TO STANDBY;
SQL > GRANT RESOURCE TO STANDBY;
SQL > GRANT DBA TO STANDBY;
SQL > ALTER USER STANDBY ACCOUNT UNLOCK;
SQL > DISCONNECT

2 - Alterar parâmetros de destino dos archives:

$ sqlplus /nolog
SQL > ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=C:\DADOS\ARCHIVE_LOG\ARC1' SCOPE=SPFILE;
SQL > ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='LOCATION=C:\DADOS\ARCHIVE_LOG\ARC2' SCOPE=SPFILE;

* Os comandos abaixo geram indisponibilidade:
SQL > SHUTDOWN NORMAL
SQL > STARTUP OPEN
SQL > DISCONNECT

3 - Testando a conta de replicação:

$ sqlplus /nolog
SQL > CONNECT standby/password
SQL > ALTER SYSTEM SWITCH LOGFILE;

system altered.

SQL > DISCONNECT

* Verifique se os archives foram gravados nas pastas setadas como 'LOCATION' no passo 2.

4 - Criando o controlfile do Oracle Physical Standby Database:

$sqlplus /nolog
SQL > CONNECT / AS SYSDBA
SQL > ALTER DATABASE CREATE STANDBY CONTROLFILE AS ‘C:\DADOS\ARCHIVE_LOG\CTLSTB01.ORA’;

5 - Criando o PFILE do Oracle Physical Standby Database:

SQL > CREATE PFILE='C:\DADOS\ARCHIVE_LOG\PFILENFE.ORA' FROM SPFILE;

6 - Realizar as cópias dos datafiles para o 'C:\DADOS\ARCHIVE_LOG':


* Os comandos abaixo geram indisponibilidade:
SQL > SHUTDOWN NORMAL
SQL > DISCONNECT
* Faça a cópia fria via S.O.


7 - Copie os datafiles do Master para o standby, password file também. Aloque o controfile criado para o Standby:

$ copy C:\DADOS\ARCHIVE_LOG\CTLSTB01.ORA C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
$ copy C:\DADOS\ARCHIVE_LOG\CTLSTB01.ORA C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
$ copy C:\DADOS\ARCHIVE_LOG\CTLSTB01.ORA C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL

8 - Alocar corretamente datafiles no Oracle Standby(idem ao Master).

9 - Iniciar Oracle Standby Physical Standby:

* Se não sabe como criar uma instância podes criar uma database com o mesmo nome da Master e baixá-la depois.

$ set ORACLE_SID=orcl
$ sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> STARTUP NOMOUNT PFILE='C:\DADOS\ARCHIVE_LOG\PFILE.ORA';

10 - Criar SPFILE no Oracle Standby Physical Standby:

SQL > CREATE SPFILE FROM PFILE='C:\DADOS\ARCHIVE_LOG\PFILE.ORA';

* Após não precisará mais do PFILE.

11 - Mountar a database em modo Standby:

SQL > ALTER DATABASE MOUNT STANDBY DATABASE;

SQL > RECOVER AUTOMATIC STANDBY DATABASE;

 * Caso dê algum erro aqui acesse o Master e gere um novo archive conforme passo 3.

12 - Verificar se o Standby está consumindo archives:

* Execute o seguinte comando no Master e no Standby: SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

O valor deve ser o mesmo, isto significa que a database Standby está consumindo os archives. Se der a diferença de um, basta gerar um novo archive no Master e realizar o procedimento de recovery no Standby.

13 - Automatizar a importação de archives:

* Agende um BAT no Crontab do Windows no Standby de tempo em tempo, o BAT deve ter o seguinte conteúdo:


- REPLICA.BAT -

set ORACLE_SID=orcl
C:\ORACLE\PRODUCT\10.2.0\DB_1\BIN\sqlplus standby/password@orclmaster @C:\DADOS\ARCHIVE_LOG\SWITCHARC.SQL
C:\ORACLE\PRODUCT\10.2.0\DB_1\BIN\sqlplus / AS SYSDBA @C:\DADOS\ARCHIVE_LOG\IMPORTARC.SQL

- SWITCHARC.SQL -

SPOOL C:\DADOS\ARCHIVE_LOG\RESULTSW-ARC.TXT
ALTER SYSTEM SWITCH LOGFILE;
SPOOL OFF;
EXIT

- IMPORTARC.SQL -

SPOOL C:\DADOS\ARCHIVE_LOG\RESULTIMP-ARC.TXT
SHUTDOWN IMMEDIATE    
STARTUP NOMOUNT
ALTER DATABASE MOUNT STANDBY DATABASE;
RECOVER AUTOMATIC STANDBY DATABASE;
SPOOL OFF;
EXIT

*** Não esqueça de criar uma outra rotina que apague os archives antigos já consumidos pelo Standby.