Arquivo mensal: janeiro 2015

Convertendo uma coluna Varchar2 para BLOB e CLOB

Neste post mostrarei como converter uma coluna do tipo Varchar2 para uma coluna do tipo LOB (BLOB ou CLOB)

Para converter uma coluna de tabela de varchar2 para blob ou clob faça o seguinte:

1 – VARCHAR2 -> BLOB

1.1 – Criando uma tabela de teste

SQL> create table teste (col1 varchar2 (1000));
Table created.

    1.2 – Inserindo dados a tabela

SQL> insert into teste select table_name from user_tables;
9 rows created.

SQL> commit;
Commit complete.

1.3 – Verificando os dados na tabela

SQL> SELECT * FROM teste;

COL1
———————————
CUSTKEYS
PACKAGECLIS
TESTE
CC_PARAMS
CUSTCLIS
CUSTACCOUNTS
PACKAGESLOTS
CALLPACKAGES
DIALCODES

9 rows selected.

 1.4 – Adicionando uma coluna do tipo lob na tabela(BLOB)

SQL> alter table teste add blob_col blob;
Table altered.

1.5 – Verificando a estrutura da tabela

SQL> desc teste
Name                                      Null?    Type
—————————————– ——– —————————-
COL1                                               VARCHAR2(1000)
BLOB_COL                                           BLOB

 1.6 – Inserindo dados a coluna tipo lob

SQL> update teste set blob_col = utl_raw.cast_to_raw(COL1);
9 rows updated.

commit;

1.7 – Verificando os dados na tabela

SQL>  SELECT * FROM teste;

COL1         BLOB_COL
———— ——————————
CUSTKEYS     435553544B455953
PACKAGECLIS  5041434B414745434C4953
TESTE        5445535445
CC_PARAMS    43435F504152414D53
CUSTCLIS     43555354434C4953
CUSTACCOUNTS 435553544143434F554E5453
PACKAGESLOTS 5041434B414745534C4F5453
CALLPACKAGES 43414C4C5041434B41474553
DIALCODES    4449414C434F444553

9 rows selected.

 1.8 – excluindo a coluna do tipo varchar2

SQL> alter table teste drop column col1 ;
Table altered.

 1.9 – Renomeando a coluna do tipo lob para COL1

SQL> alter table teste rename column blob_col to col1;
Table altered.

1.10 – Verificando a estrutura da tabela

SQL> desc  teste
Name                Null?    Type
——————- ——– ————–
COL1                         BLOB

 1.11 – Verificando os dados na tabela

SQL> select utl_raw.cast_to_varchar2(col1) from teste;

UTL_RAW.CAST_TO_VARCHAR2(COL1)
——————————–
CUSTKEYS
PACKAGECLIS
TESTE
CC_PARAMS
CUSTCLIS
CUSTACCOUNTS
PACKAGESLOTS
CALLPACKAGES
DIALCODES

9 rows selected.

Podemos observar que os dados são os mesmos exibidos no ítem 1.3 deste artigo

2 – VARCHAR2 -> CLOB

2.1 – Criando uma tabela de teste

SQL> create table teste1
(col1 varchar2 (1000));  2

Table created.

2.2 – Inserindo dados a tabela

SQL> insert into teste1 select table_name from user_tables where rownum <5;
4 rows created.

SQL> commit;
Commit complete.

2.3 – Verificando os dados na tabela

SQL> SELECT * FROM teste1;

COL1
————
CUSTKEYS
PACKAGECLIS
TESTE1
T

 2.4 – Adicionando uma coluna do tipo lob na tabela(CLOB)

SQL> alter table teste1 add clob_col clob;
Table altered.

2.5 Verificando a estrutura da tabela

SQL> desc teste1
Name                Null?    Type
——————- ——– ——————
COL1                         VARCHAR2(1000)
CLOB_COL                     CLOB

2.6 – Inserindo dados a coluna tipo LOB

SQL> update teste1 set clob_col = COL1;
4 rows updated.

SQL> commit ;
Commit complete.

2.7 – Verificando os dados na tabela

SQL>  select * from teste1 ;

COL1                 CLOB_COL
——————– ——————–
CUSTKEYS             CUSTKEYS
PACKAGECLIS          PACKAGECLIS
TESTE1               TESTE1
T                    T

2.8 – Excluindo a coluna do tipo varchar2

SQL> alter table teste1 drop column COL1;

Table altered.

2.9 – Renomeando a coluna do tipo lob para COL1

SQL>  alter table teste1 rename column CLOB_COL to COL1;

Table altered.

    2.10 – Verificando a estrutura da tabela

SQL> desc teste1
Name                Null?    Type
——————- ——– ——————
COL1                         CLOB

    2.11 – Verificando os dados na tabela

SQL>  select * from teste1;

COL1
——————–
CUSTKEYS
PACKAGECLIS
TESTE1
T

Podemos observar que os dados são os mesmos exibidos no ítem 2.3 deste artigo

Um abraço;

Utlizando Expdp e Impdp – Parte 1

Neste post mostrarei como utilizar  o utilitário expdp. Este tópico será dividido em duas partes, nesta primeira falaremos do utlitário EXPDP e na segunda parte abordaremos o utilitario IMPDP.

Pré-requisitos para realizar exportação e importação:

  • Banco de dados deve estar em modo aberto.
  • Um diretório no banco de dados dever ser criado.

Passos para fazer backup de um esquema utilizando EXPDP
Abaixo estão os quatro passos a fazer backup de um esquema utilizando EXPDP.

1. Configurar a variável de Banco de Dados do Ambiente

[oracle@drdb02 ~]$ export ORACLE_SID=orcl [oracle@drdb02 ~]$ echo $ORACLE_SID orcl

2. Sintaxe do comando expdp:

Sintaxe:

expdp {user_name}/{Password} dumpfile={Dump file name} directory={Nome do diretorio } logfile={Nome do Logfile } schemas={Nome do schema}

Detalhe dos parâmetros utilizados no comando expdp:

Existem vários parâmetros utilizados com o comando expdp, devemos ter um conhecimento sobre estes para que um seja backup bem-sucedido.
Nome de Usuário/Senha: Nome do usuário oracle com permissão para efetuar o export,
Dumpfile: Nome do arquivo de exportação criado. Dê qualquer nome apropriado com extensão (DMP).
Directory: Este é o caminho pelo qual os backups serão colocados.

Podemos usar diretório padrão  chamado  “data_pump_dir”.  Data_pump_dir está fisicamente localizado em $ORACLE_HOME/rdbms/log.

Se você quiser colocaro backup do banco de dados efetuado com EXPDP em algum outro lugar, então DBA tem que criar um novo diretório do banco de dados. Use os passos abaixo para criar novo diretório do banco de dados e efetuar o backup:

1. Antes de criar a verificar se diretório existe

A localização física do diretório deve existir. como /opt/oracle.
A propriedade do diretório para o usuário Oracle.

Utilize este comando
[oracle@drdb02 opt]$ ls -lr /opt total 8 drwxr-xr-x 3 root   root     4096 Jun  5  2013
ORCLfmap drwxr-xr-x 2 oracle oinstall 4096 Dec  8 10:53
[oracle@drdb02 opt]$

2 – Verificar se o usuário de S.O. Oracle é o proprietário de pasta /opt/oracle.

a. Criar Diretório de Banco de Dados

SQL> create directory backup  as ‘/opt/oracle’;
Directory created.

SQL> grant read, write on directory backup  to rdba;

Grant succeeded.

Após criado um novo diretório do banco de dados para backup, agora eu posso usar este nome “backup” no parâmetro diretório de comando EXPDP e meus backups irá armazenar em “/opt/oracle”

Schemas:Nome do esquema para o qual backup é feito. Mais do que um nome, também é permitido pelo separador de comando.  Apenas um arquivo de backup sera gerado para todos os esquemas.

Logfile: O nome do arquivo de log para manter registro dos backups. O caminho para o arquivo de log será a mesmo dado no caminho do diretório.  Recomenda-se a dar o nome do arquivo de log para referências futuras de backup.

3. Execute o comando Expdp : Uma vez executado, o comando de backup vai gerar esse tipo de saída na sua tela.

[oracle@drdb02 ~]$ expdp rdba/rdba dumpfile=remote_dba.dmp directory=backup logfile=remote_dba_imp.log  schemas=scott

Export: Release 11.2.0.2.0 – Production on Mon Dec 8 10:57:20 2014

Copyright (c) 1982, 2009,Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 – 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting “RDBA”.”SYS_EXPORT_SCHEMA_01″:  rdba/******** dumpfile=remote_dba.dmp directory=backup logfile=remote_dba_imp.log schemas=scott Estimate in progress using BLOCKS method…

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA Total estimation using BLOCKS method: 192 KB Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT . .
exported “SCOTT”.”DEPT”                              5.937 KB       4 rows . .
exported “SCOTT”.”EMP”                               8.570 KB      14 rows . .
exported “SCOTT”.”SALGRADE”                          5.867 KB       5 rows . .
exported “SCOTT”.”BONUS”                                 0 KB       0 rows
Master table “RDBA”.”SYS_EXPORT_SCHEMA_01″ successfully loaded/unloaded
******************************************************************************
Dump file set for RDBA.SYS_EXPORT_SCHEMA_01 is: /opt/oracle/remote_dba.dmp
Job “RDBA”.”SYS_EXPORT_SCHEMA_01″ successfully completed at 10:58:26

Após o término do export,o caminho do arquivo de backup é /opt/oracle/remote_dba.dmp.

[oracle@drdb02 ~]$ ls -lr /opt/oracle/ total 232
-rw-r–r– 1 oracle oinstall   1710 Dec  8 10:58 remote_dba_imp.log
-rw-r—– 1 oracle oinstall 229376 Dec  8 10:58 remote_dba.dmp

Você pode exportar todo o banco de dados, tablespaces, usuários específicos (schemas), espaços de tabelas ou tabelas especificas.
O arquivo gravado pelo Data Pump export conterá os comandos necessários para recriar completamente todos os objetos e dados escolhidos.
Caso deseje se aprofundar mais no conhecimento desta ferramenta Oracle acesse o link da documentação oficial.
Um abraço