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;