sexta-feira, 2 de junho de 2017

Diretórios (Oracle) - Criar


Quando o banco de dados precisa acessar/gerar arquivos no sistema operacional é utilizado o diretório. Em versões anteriores do Oracle utilizávamos o utl_file_dir, mas a partir da versão 11g a Oracle recomenda a utilização apenas do DIRECTORY (diretório).

Para criar o diretório no banco de dados precisamos:


a) Conectar no banco de dados como sysdba

$ sqlplus / as sysdba

SQL>


b) Listar os diretórios existentes

Essa atividade é opcional, apenas para verificar os diretórios já existentes e assim escolhermos um nome para o nosso novo diretório diferente daqueles já criados.

SQL> set lines 300
SQL> col OWNER format a15
SQL> col DIRECTORY_NAME format a15
SQL> col DIRECTORY_PATH format a30

SQL> SELECT * FROM dba_directories;

OWNER                        DIRECTORY_NAME     DIRECTORY_PATH
------------------------------ ------------------------------ ----------------------------------
SYS                            ACESS                             /u01/admin/acess
SYS                            RH_01                              /u01/admin/rh_01
SYS                            RH_02                              /u01/admin/rh_02
SYS                            PESSOAL                         /u01/admin/pessoal




c) Criar o diretório


Sintaxe: CREATE DIRECTORY <directory name> as '<O/S directory>';

Exemplo:

SQL> CREATE directory DIR_XPTO AS '/u04/xpto';




d) Verificar se o diretório foi criado


SQL> SELECT * FROM dba_directories WHERE directory_name = 'DIR_XPTO';


OWNER     DIRECTORY_NAME DIRECTORY_PATH
-------------- ------------------------------ ----------------------------------------------------------------------
SYS               DIR_XPTO                         /u04/xpto



SQL> SELECT * FROM dba_directories;

OWNER                          DIRECTORY_NAME   DIRECTORY_PATH
------------------------------ ------------------------------ ----------------------------------
SYS                               ACESS                           /u01/admin/acess
SYS                               RH_01                            /u01/admin/rh_01
SYS                               RH_02                            /u01/admin/rh_02
SYS                               PESSOAL                      /u01/admin/pessoal
SYS                               DIR_XPTO                     /u04/xpto



e) Conceder os grants para o diretório.

Após criarmos o diretório, precisamos conceder os privilégios de leitura, escrita para o usuário de banco que irá utilizá-lo.

Isso é necessário pois os diretórios são criados com o usuário SYS.

Exemplo de permissão:

GRANT READ on DIRECTORY DIR_XPTO to USER01;
GRANT WRITE on DIRECTORY DIR_XPTO to USER02;