Gerenciar Diretórios

O Autonomous Database na Infraestrutura Dedicada do Exadata fornece a capacidade de criar diretórios em seu banco de dados, no qual você pode armazenar arquivos da mesma forma que pode fazer em um sistema de arquivos do sistema operacional. Essa capacidade de armazenar arquivos é especialmente útil ao exportar e importar dados.

Tópicos Relacionados

Eliminar um Diretório

Use o comando DROP DIRECTORY do banco de dados para eliminar um objeto de diretório.

Por exemplo, o seguinte comando elimina o objeto de diretório do banco de dados staging:

DROP DIRECTORY staging;

O comando DROP DIRECTORY não exclui arquivos no diretório. Se você quiser excluir o diretório e os arquivos do diretório, primeiro use o procedimento DBMS_CLOUD.DELETE_FILE para excluir os arquivos. Consulte Procedimento DELETE_FILE para obter mais informações.

Para eliminar um diretório, você deve ter o privilégio de sistema DROP ANY DIRECTORY. O usuário ADMIN recebe o privilégio de sistema DROP ANY DIRECTORY. O usuário ADMIN pode conceder o privilégio de sistema DROP ANY DIRECTORY a outros usuários.

Consulte DROP DIRECTORY em Oracle Database 19c SQL Language Reference ou Oracle Database 23ai SQL Language Reference para obter mais informações.

Observação:

  • Se você quiser apenas eliminar o diretório e não remover os arquivos do diretório, depois de eliminar o diretório, poderá exibir todos os arquivos do sistema de arquivos, incluindo os arquivos que estavam no diretório eliminado, da seguinte forma:

    CREATE OR REPLACE DIRECTORY ROOT_DIR AS '';

    Em seguida, liste o conteúdo de ROOT_DIR com o seguinte comando:

    SELECT * FROM DBMS_CLOUD.LIST_FILES('ROOT_DIR');

    Para executar DBMS_CLOUD.LIST_FILES com um usuário distinto de ADMIN, você precisa conceder privilégios de leitura no diretório a esse usuário. Para obter mais informações, consulte Função LIST_FILES.

  • O comando DROP DIRECTORY não remove o diretório do sistema de arquivos subjacente. O Autonomous Database gerencia o diretório do sistema de arquivos subjacente; os usuários não removem o diretório do sistema de arquivos.

Listar o Conteúdo de um Diretório

Use a função DBMS_CLOUD.LIST_FILES para listar o conteúdo de um diretório.

Por exemplo, para listar o conteúdo do diretório stage, execute a consulta a seguir:

SELECT * FROM DBMS_CLOUD.LIST_FILES('STAGE');

Para executar DBMS_CLOUD.LIST_FILES com um usuário distinto de ADMIN, você precisa conceder privilégios de leitura no diretório a esse usuário. Para obter mais informações, consulte Função LIST_FILES.

Copiar Arquivos entre o Cloud Object Storage e um Diretório

Use o procedimento DBMS_CLOUD.PUT_OBJECT para copiar um arquivo de um diretório para o armazenamento de objetos na nuvem. Use o procedimento DBMS_CLOUD.GET_OBJECT para copiar um arquivo do armazenamento de objetos na nuvem para um diretório.

Por exemplo, para copiar um arquivo do armazenamento de objetos na nuvem para o diretório stage, execute o seguinte comando:

BEGIN
   DBMS_CLOUD.GET_OBJECT(
   credential_name => 'DEF_CRED_NAME',
   object_uri => 'https://swiftobjectstorage.us-phoenix-1.oraclecloud.com/v1/idthydc0kinr/mybucket/cwallet.sso',
   directory_name => 'STAGE');
END;
/

Neste exemplo, object_uri é um URI Swift do Oracle Cloud Infrastructure que especifica o arquivo cwallet.sso no bucket mybucket na região us-phoenix-1. (idthydc0kinr é o namespace do armazenamento de objetos no qual o bucket reside.) Para obter informações sobre os formatos de URI suportados, consulte Formatos de URI do Cloud Object Storage.

Para executar DBMS_CLOUD.GET_OBJECT com um usuário que não seja ADMIN, você precisa conceder privilégios de gravação no diretório a esse usuário.

Para executar DBMS_CLOUD.PUT_OBJECT com um usuário que não seja ADMIN, você precisa conceder privilégios de leitura no diretório a esse usuário.

Consulte Procedimento GET_OBJECT e Procedimento PUT_OBJECT para obter mais informações.