DBMS_CLOUD Subprogramas e APIs REST

Esta seção abrange os subprogramas e as APIs REST do DBMS_CLOUD que acompanham o Autonomous Database.

Observação

Para executar subprogramas DBMS_CLOUD com um usuário diferente de ADMIN, conceda privilégios EXECUTE a esse usuário. Por exemplo, execute o seguinte comando como ADMIN para conceder privilégios a adb_user:
GRANT EXECUTE ON DBMS_CLOUD TO adb_user;

O pacote DBMS_CLOUD é composto por:

DBMS_CLOUD para Gerenciamento de Acesso

Os subprogramas para gerenciamento de credenciais no pacote DBMS_CLOUD, incluindo criar, excluir e atualizar credenciais.

Subprograma Descrição

CREATE_CREDENTIAL Procedimento

Este procedimento armazena credenciais de serviço de nuvem no Autonomous Database.

DROP_CREDENTIAL Procedimento

Este procedimento remove uma credencial existente do Autonomous Database.

Procedimento REFRESH_VAULT_CREDENTIAL

Esse procedimento atualiza imediatamente o segredo do vault de uma credencial de segredo do vault para obter a versão mais recente do segredo do vault para o credential_name especificado no Autonomous Database.

UPDATE_CREDENTIAL Procedimento

Este procedimento atualiza atributos de credenciais de serviço em nuvem no Autonomous Database.

CREATE_CREDENTIAL Procedimento

Este procedimento armazena credenciais de serviço de nuvem no Autonomous Database.

Use credenciais de serviço de nuvem armazenadas para acessar o serviço de nuvem para carregamento de dados, para consulta de dados externos residentes na nuvem ou para outros casos ao usar procedimentos DBMS_CLOUD com um parâmetro credential_name. Este procedimento é sobrecarregado:

  • Use os parâmetros relacionados ao Oracle Cloud Infrastructure, incluindo: user_ocid, tenancy_ocid, private_key e fingerprint somente quando estiver usando a autenticação Chaves de Assinatura do Oracle Cloud Infrastructure.

  • Use o parâmetro params para uma das seguintes opções:

    • Credenciais de ARNs (Amazon Resource Names)

    • Credenciais do Google Analytics ou do Google BigQuery

    • Credenciais de segredo do vault para uso com um vault suportado:

      • Oracle Cloud Infrastructure Vault
      • Vault Principal do Azure
      • AWS Secrets Manager
      • Gerenciador de segredos do GCP

Sintaxe

DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name   IN VARCHAR2,
      username          IN VARCHAR2,
      password          IN VARCHAR2 DEFAULT NULL,
      comments          IN VARCHAR2 DEFAULT NULL);


DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name   IN VARCHAR2,
      user_ocid         IN VARCHAR2,
      tenancy_ocid      IN VARCHAR2,
      private_key       IN VARCHAR2,
      fingerprint       IN VARCHAR2,
      comments          IN VARCHAR2 DEFAULT NULL);


DBMS_CLOUD.CREATE_CREDENTIAL (
      credential_name  IN VARCHAR2,
      params           IN CLOB DEFAULT);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial a ser armazenada. O parâmetro credential_name deve estar em conformidade com as convenções de nomenclatura do objeto Oracle. O parâmetro credential_name pode ser definido como um identificador sem aspas ou como um identificador com aspas. Consulte Regras de Nomenclatura do Objeto de Banco de Dados para obter mais informações.

username

Os argumentos username e password juntos especificam suas credenciais de serviço de nuvem. Consulte as observações de uso sobre o que especificar para username e password para diferentes serviços de nuvem.

password

Os argumentos username e password juntos especificam suas credenciais de serviço de nuvem.

comments

Especifica o texto do comentário da credencial. Este campo pode ser útil para descrever e distinguir entre credenciais.

O tamanho máximo do comentário é de 3800 caracteres.

user_ocid

Especifica o OCID do usuário. Consulte Onde Obter o OCID da Tenancy e o OCID do Usuário para obter detalhes sobre como obter o OCID do Usuário.

tenancy_ocid

Especifica o OCID da tenancy. Consulte Onde Obter o OCID da Tenancy e o OCID do Usuário para obter detalhes sobre como obter o OCID da Tenancy.

private_key

Especifica a chave privada gerada. Não há suporte para chaves privadas geradas com uma frase-senha. É necessário gerar a chave privada sem uma frase-senha. Consulte Como Gerar uma Chave de Assinatura de API para obter detalhes sobre a geração de um par de chaves no formato PEM.

fingerprint

Especifica uma impressão digital. Após o upload de uma chave pública gerada para a conta do usuário, a impressão digital é exibida na console. Use a impressão digital exibida para esse argumento. Consulte Como Obter a Impressão Digital da Chave e Como Gerar uma Chave de Assinatura de API para obter mais detalhes.

params

Especifica parâmetros de credencial para um dos seguintes itens:

  • Credenciais de ARNs (Amazon Resource Names)

  • Credenciais do Google Analytics ou do Google BigQuery

  • Credenciais secretas do vault para uso com credenciais de tipo de nome de usuário/senha nas quais você armazena a senha em um vault suportado:

    • Oracle Cloud Infrastructure Vault

    • Vault Principal do Azure

    • AWS Secrets Manager

    • Gerenciador de segredos do GCP

    Para criar uma credencial secreta do vault, você deve ter o privilégio EXECUTE no pacote DBMS_CLOUD.

Observações de Uso

  • Esta operação armazena as credenciais no banco de dados em um formato criptografado.

  • Você pode ver as credenciais no seu esquema consultando a tabela user_credentials.

  • Você pode ver os comentários da credencial no seu esquema consultando a tabela user_credentials. Por exemplo:

    SELECT comments FROM user_credentials
            WHERE credential_name = 'MY_CRED';
  • O usuário ADMIN pode ver todas as credenciais consultando a tabela dba_credentials.

  • Você só precisa criar credenciais uma vez, a menos que suas credenciais de serviço de nuvem mudem. Depois de armazenar as credenciais, você poderá usar o mesmo nome de credencial para procedimentos DBMS_CLOUD que exigem um parâmetro credential_name.

  • Este procedimento é sobrecarregado. Se você fornecer um dos atributos de autenticação baseados em chave, user_ocid, tenancy_ocid, private_key ou fingerprint, será considerado que que a chamada é uma credencial baseada na Chave de Assinatura do Oracle Cloud Infrastructure.

  • Você pode listar credenciais na view ALL_CREDENTIALS. Por exemplo, execute o seguinte comando para listar credenciais:

    SELECT credential_name, username, comments FROM all_credentials;

Credenciais do Oracle Cloud Infrastructure (Tokens de Autenticação)

Para o Oracle Cloud Infrastructure, o username é o seu nome de usuário do Oracle Cloud Infrastructure. A password é o seu token de autenticação do Oracle Cloud Infrastructure. Consulte Como Trabalhar com Tokens de Autenticação.

Por exemplo:

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'DEF_CRED_NAME',
    username => 'adb_user@example.com',
    password => 'password' );
END;
/

Use credenciais baseadas em Token de Autenticação ao autenticar chamadas para o OCI Object Storage. Para chamadas para qualquer outro tipo de serviço de nuvem do Oracle Cloud Infrastructure, use Credenciais Baseadas em Chave de Assinatura do Oracle Cloud Infrastructure.

Para o OCI Object Storage, o valor do parâmetro username deve incluir o domínio de Identidades e o nome de usuário do seu perfil. Você pode encontrar o domínio de Identidades associado a um usuário na Console do Oracle Cloud Infrastructure.

Por exemplo:

oracleidentitycloudservice/adb_user@example.com

Com o domínio de Identidades padrão, você não precisa incluir o nome de domínio Default. Por exemplo:

adb_user@example.com

Credenciais Baseadas em Chave de Assinatura do Oracle Cloud Infrastructure

Use os parâmetros relacionados à chave de assinatura do Oracle Cloud Infrastructure, incluindo: user_ocid, tenancy_ocid, private_key e fingerprint com a autenticação de Chaves de Assinatura do Oracle Cloud Infrastructure.

Por exemplo:

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL (
       credential_name => ‘OCI_KEY_CRED’,
       user_ocid       => ‘ocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoa’,
       tenancy_ocid    => ‘ocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2a’,
       private_key     => ‘MIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM//JEBg=’,
       fingerprint     => ‘f2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27’);
END;
/

Não há suporte para chaves privadas geradas com uma frase-senha. É necessário gerar a chave privada sem uma frase-senha. Consulte Como Gerar uma Chave de Assinatura de API para obter mais informações.

Credenciais do Oracle Cloud Infrastructure Object Storage Classic

Se seus arquivos de origem residirem no Oracle Cloud Infrastructure Object Storage Classic, username será seu nome de usuário do Oracle Cloud Infrastructure Classic e password será sua senha do Oracle Cloud Infrastructure Classic.

Credenciais do Amazon Web Services (AWS)

Se seus arquivos de origem residirem no Amazon S3 ou você estiver chamando uma API da AWS, username será seu ID da chave de acesso da AWS e password será sua chave de acesso secreta da AWS. Consulte AWS Identity and Access Management.

Credenciais do Microsoft Azure

Se seus arquivos de origem residirem no Armazenamento de Blobs do Azure ou no Armazenamento do Data Lake do Azure ou você estiver chamando uma API do Azure, username será o nome da conta de armazenamento do Azure e password será uma chave de acesso à conta de armazenamento do Azure. Consulte Sobre contas de armazenamento do Azure.

Credenciais Compatíveis com o Amazon S3

Serviço Informações de Credenciais

Oracle Cloud Infrastructure (Chaves Secretas do Cliente)

Se seus arquivos de origem residirem no Oracle Cloud Infrastructure, você precisará usar Chaves Secretas do Cliente com URLs compatíveis com o S3. Consulte Como Trabalhar com Chaves Secretas do Cliente para obter mais informações.

Google Cloud Storage

Se seus arquivos de origem residirem no Google Cloud Storage ou você estiver chamando APIs do Google Cloud Storage, será necessário definir um projeto padrão do Google e obter uma chave HMAC para criar credenciais a serem fornecidas com URLs compatíveis com o S3 do Google Cloud Storage. Use o id da chave HMAC como o nome do usuário e o segredo HMAC como a senha.

Consulte Projetos e Chaves HMAC para obter mais informações.

Wasabi Hot Cloud Storage

Se seus arquivos de origem residirem no Wasabi Hot Cloud Storage ou você estiver chamando APIs do Wasabi Hot Cloud Storage, você precisará das Chaves de Acesso para criar credenciais a serem fornecidas com URLs compatíveis com o S3. Use a Chave de Acesso do Wasabi Hot Cloud Storage como o nome do usuário e a Chave Secreta do Wasabi Hot Cloud Storage como a senha.

Consulte Criando um Conjunto de Chaves de Acesso à API do Wasabi para obter mais informações.

Credenciais do ARN (Amazon Resource Names) da AWS

Se seus arquivos de origem residirem no Amazon S3 ou você estiver chamando uma API da AWS, use params para especificar os parâmetros do ARN (Amazon Resource Names).

Parâmetro Valor
aws_role_arn

Especifica o Amazon Resource Name (ARN) que identifica a atribuição da AWS.

Se esse parâmetro não for informado ao criar a credencial, ORA-20041 será gerado.

external_id_type

Se preferir, defina external_id_type para usar o OCID do compartimento, o OCID do banco de dados ou o OCID da tenancy do Autonomous Database fornecendo um destes: compartment_ocid, database_ocid ou tenant_ocid.

Se esse parâmetro não for fornecido ao criar a credencial, o valor padrão será database_ocid.

Por exemplo:

BEGIN DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name      => 'MY_CRED',
        params               => JSON_OBJECT(
               'aws_role_arn'      value 'arn:aws:iam::123456:role/AWS_ROLE_ARN',
               'external_id_type'  value 'database_ocid'));
END;
/

GitHub Token de Acesso Pessoal

Se seus arquivos de origem residirem em um repositório GitHub ou você estiver chamando uma API GitHub, username será seu e-mail GitHub e password será seu token de acesso pessoal GitHub. Consulte Criando um token de acesso pessoal para obter mais informações.

Por exemplo:

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'MY_GITHUB_CRED',
    username => 'user@example.com',
    password => 'your_personal_access_token' );
END;
/

Credenciais do Google Analytics ou do Google BigQuery

Se você estiver acessando o Google Analytics ou o Google BigQuery, use o parâmetro params para especificar os parâmetros de credencial OAuth 2.0 do Google.

Parâmetro Valor
gcp_oauth2

Especifica o acesso OAuth 2.0 para o Google Analytics ou Google BigQuery com um objeto JSON que inclui os seguintes parâmetros e seus valores:

  • client_id: Consulte o Console da API do Google para obter o ID do cliente.

  • client_secret: Consulte o Console da API do Google para obter o segredo do cliente.

  • refresh_token: Um token de atualização permite que seu aplicativo obtenha novos tokens de acesso.

Consulte Usando OAuth 2.0 para Acessar APIs do Google para obter mais informações sobre as credenciais do Google OAuth.

Por exemplo:

BEGIN DBMS_CLOUD.CREATE_CREDENTIAL(
      credential_name => 'GOOGLE_BIGQUERY_CRED',
      params => JSON_OBJECT('gcp_oauth2' value 
                                  JSON_OBJECT(
                                       'client_id'     value 'client_id',
                                       'client_secret' value 'client_secret',
                                       'refresh_token' value 'refresh_token' )));
END;
/

Credenciais de Segredo do Vault com o Oracle Cloud Infrastructure Vault

Para criar credenciais de segredo do vault com o Oracle Cloud Infrastructure Vault, use o parâmetro params para especificar os parâmetros necessários:

  • username: Especifica o nome de usuário de qualquer tipo de credencial de nome de usuário/senha, como o nome de usuário da senha Swift do OCI. Por exemplo, se você tiver uma credencial Swift com o nome de usuário "scott" e a senha como "password", forneça "scott" como o parâmetro username.

  • secret_id: É o ID do segredo do vault. Especifique o valor secret_id como o OCID do segredo do vault. Consulte Visão Geral do Vault para obter mais informações.

  • region: É um parâmetro opcional que especifica o identificador da região do oracle cloud. A região, quando especificada, indica o local onde o segredo do Oracle Cloud Infrastructure Vault está localizado.

    Por padrão, CREATE_CREDENTIAL usa o region mapeado da chave de região no secret_id. Um exemplo de região é us-ashburn-1.

    Consulte Regiões e Domínios de Disponibilidade para obter uma lista completa de regiões.

Por exemplo:

BEGIN DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'OCI_SECRET_CRED',
    params => JSON_OBJECT( 
                'username'   value 'scott',
                'region'     value 'us-ashburn-1',
                'secret_id'  value 'ocid1.vaultsecret.co1.ap-mumbai-1.example..aaaaaaaauq5ok5nq3bf2vwetkpqsoa'));
END;
/

Observações sobre o uso de um segredo do Oracle Cloud Infrastructure Vault para armazenar segredos do vault:

  • Ao usar um Oracle Cloud Infrastructure Vault, na instância do Autonomous Database, você deve ativar a autenticação principal com DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL.
  • No Oracle Cloud Infrastructure, você deve especificar uma política para que o controlador de recursos acesse o segredo.

Para criar uma credencial secreta do vault, você deve ter o privilégio EXECUTE no pacote DBMS_CLOUD.

Credenciais de Segredo do Vault com o Azure Key Vault

Para criar credenciais do Azure Key Vault, use o parâmetro params para especificar os parâmetros necessários:

  • username: Especifica o nome de usuário associado à chave.

  • secret_id: Especifica o nome do segredo.

  • azure_vault_name: Especifica o nome do vault no qual o segredo está localizado.

Consulte Criar um vault de chaves para obter mais informações.

Para criar uma credencial secreta do vault, você deve ter o privilégio EXECUTE no pacote DBMS_CLOUD.

Credenciais de Segredo do Vault com o AWS Secrets Manager

Para criar credenciais de segredo do vault com o AWS Secrets Manager, use o parâmetro params para especificar os parâmetros necessários:

  • username: Especifica a chave de acesso do AWS Secrets Manager.

  • secret_id: O AWS Secrets Manager é o AWS ARN.

  • region: (Opcional) Especifica a região de serviço da AWS na qual o vault e o segredo estão localizados. Um exemplo da região da AWS é "us-east-2". O region padrão é a região especificada com o ARN no parâmetro secret_id.

    Consulte Gerenciando Regiões da AWS para obter mais informações.

    Para criar uma credencial secreta do vault, você deve ter o privilégio EXECUTE no pacote DBMS_CLOUD.

Credenciais de Segredo do Vault com o GCP Secret Manager

Para criar credenciais do GCP Secret Manager, use o parâmetro params para especificar os parâmetros necessários:

  • username: Especifica o nome de usuário associado ao segredo.

  • secret_id: É o nome do segredo.

  • gcp_project_id: Especifica o ID do projeto no qual o segredo está localizado.

Consulte Gerenciador de Segredos para obter mais informações.

Para criar uma credencial secreta do vault, você deve ter o privilégio EXECUTE no pacote DBMS_CLOUD.

DROP_CREDENTIAL Procedimento

Este procedimento remove uma credencial existente do Autonomous Database.

Sintaxe

DBMS_CLOUD.DROP_CREDENTIAL (
   credential_name     IN VARCHAR2);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial a ser removida.

Procedimento REFRESH_VAULT_CREDENTIAL

Este procedimento atualiza o segredo do vault de uma credencial de segredo do vault.

Este procedimento permite que você atualize imediatamente o segredo do vault de uma credencial de segredo do vault para obter a versão mais recente do segredo do vault para o credential_name especificado.

Sintaxe

DBMS_CLOUD.REFRESH_VAULT_CREDENTIAL (
    credential_name   IN VARCHAR2);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial a ser atualizada.

Observações de Uso

  • O usuário ADMIN pode ver todas as credenciais consultando a tabela dba_credentials.

  • Você pode listar credenciais na view ALL_CREDENTIALS. Por exemplo, execute o seguinte comando para listar credenciais:

    SELECT credential_name, username, comments FROM all_credentials;

Exemplo

BEGIN
  DBMS_CLOUD.REFRESH_VAULT_CREDENTIAL(
     credential_name => 'AZURE_SECRET_CRED'); 
END;
/

UPDATE_CREDENTIAL Procedimento

Este procedimento atualiza um atributo com um novo valor para um credential_name especificado.

Use credenciais armazenadas para carregamento de dados, para consultar dados externos que residem na Nuvem ou sempre que usar procedimentos DBMS_CLOUD com o parâmetro credential_name.

Sintaxe

DBMS_CLOUD.UPDATE_CREDENTIAL (
    credential_name   IN VARCHAR2,
    attribute         IN VARCHAR2,
    value             IN VARCHAR2);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial a ser atualizada.

attribute

Nome do atributo a ser atualizado.

Para uma credencial do tipo de nome de usuário/senha, os valores válidos de attribute são: USERNAME e PASSWORD.

Para uma credencial de um Amazon ARN, os valores attribute válidos são: aws_role_arn e external_id_type.

Para uma credencial do Google BigQuery ou do Google Analytics, os valores válidos de attribute são: client_id, client_secret e refresh_token.

Dependendo do vault que você está usando, para Credenciais do Segredo do Vault, os valores válidos de attribute são:
  • Oracle Cloud Infrastructure Vault: secret_id, region

  • Vault de Chaves do Azure: secret_id, azure_vault_name

  • AWS Secrets Manager: secret_id, region

  • Gerenciador de segredos do GCP: secret_id, gcp_project_id

Consulte CREATE_CREDENTIAL Procedimento para obter mais informações.

value

Novo valor para o atributo especificado.

Observações de Uso

  • O valor do nome do usuário faz distinção entre maiúsculas e minúsculas. Ele não pode conter aspas duplas ou espaços.

  • O usuário ADMIN pode ver todas as credenciais consultando dba_credentials.

  • Você só precisa criar credenciais uma vez, a menos que suas credenciais de serviço de nuvem mudem. Depois de armazenar as credenciais, você poderá usar o mesmo nome de credencial para procedimentos DBMS_CLOUD que exigem um parâmetro credential_name.

  • Você pode listar credenciais na view ALL_CREDENTIALS. Por exemplo, execute o seguinte comando para listar credenciais:

    SELECT credential_name, username, comments FROM all_credentials;

Exemplos

BEGIN
  DBMS_CLOUD.UPDATE_CREDENTIAL(
     credential_name => 'OBJ_STORE_CRED',
     attribute => 'PASSWORD',
     value => 'password'); 
END;
/
BEGIN
  DBMS_CLOUD.UPDATE_CREDENTIAL(
     credential_name => 'ARN_CRED',
     attribute => 'aws_role_arn',
     value => 'NEW_AWS_ARN'); 
END;
/

DBMS_CLOUD para Objetos e Arquivos

Os subprogramas para gerenciamento de objetos e arquivos no pacote DBMS_CLOUD.

Subprograma Descrição

Procedimento COPY_COLLECTION

Este procedimento carrega dados na coleção SODA existente do Cloud Object Storage ou de arquivos em um diretório.

COPY_DATA Procedimento

Este procedimento carrega dados em tabelas existentes do Autonomous Database do Cloud Object Storage ou de arquivos em um diretório.

COPY_DATA Procedimento para Arquivos Avro, ORC ou Parquet

Esse procedimento com o parâmetro format type definido com o valor orc, parquet ou avro carrega dados para tabelas existentes do Autonomous Database de arquivos ORC, Parquet ou Avro na Nuvem ou de arquivos ORC, Parquet ou Avro em um diretório.

Semelhante a arquivos de texto, os dados são copiados do arquivo ORC, Parquet ou Avro de origem para a tabela interna preexistente.

Procedimento COPY_OBJECT

Este procedimento copia arquivos de um bucket do Cloud Object Storage para outro.

Procedimento CREATE_EXTERNAL_TABLE

Este procedimento cria uma tabela externa em arquivos na Nuvem ou em arquivos em um diretório. Isso permite que você execute consultas em dados externos do Autonomous Database.
Procedimento CREATE_CLOUD_TABLE

Este procedimento cria uma tabela de nuvem na qual todos os dados persistentes são armazenados no Oracle-Managed Object Storage.

CREATE_EXTERNAL_TABLE Procedimento para o Apache Iceberg

Esse procedimento cria tabelas externas para tabelas do Apache Iceberg nas configurações suportadas.

CREATE_EXTERNAL_TABLE Procedimento para Arquivos Avro, ORC ou Parquet

Esse procedimento com o parâmetro format type definido com o valor parquet, orc ou avro cria uma tabela externa com arquivos de formato Parquet, ORC ou Avro na Nuvem ou em um diretório.

Isso permite que você execute consultas em dados externos do Autonomous Database.

Procedimento CREATE_EXTERNAL_PART_TABLE

Esse procedimento cria uma tabela particionada externa em arquivos na Nuvem. Isso permite que você execute consultas em dados externos do Autonomous Database.

Procedimento CREATE_EXTERNAL_TEXT_INDEX

Este procedimento cria o índice de texto nos arquivos de armazenamento de objetos.

CREATE_HYBRID_PART_TABLE Procedimento

Esse procedimento cria uma tabela particionada híbrida. Isso permite que você execute consultas em dados particionados híbridos do Autonomous Database.

Procedimento DELETE_ALL_OPERATIONS

Este procedimento limpa todas as operações de carregamento de dados registradas na tabela user_load_operations do seu esquema ou limpa todas as operações de carregamento de dados do tipo especificado, conforme indicado com o parâmetro type.

Procedimento DELETE_FILE

Este procedimento remove o arquivo especificado do diretório indicado no Autonomous Database

DELETE_OBJECT Procedimento

Este procedimento exclui o objeto especificado no armazenamento de objetos.

Procedimento DELETE_OPERATION

Este procedimento aceita um operation_id como entrada e exclui os logs associados ao operation_id especificado.

Procedimento DROP_EXTERNAL_TEXT_INDEX

Este procedimento elimina o índice de texto nos arquivos de armazenamento de objetos.

Procedimento EXPORT_DATA

Esse procedimento exporta dados do Autonomous Database para arquivos na Nuvem com base no resultado de uma consulta. O formulário sobrecarregado permite que você use o parâmetro operation_id. Dependendo da opção type do parâmetro format especificada, o procedimento exporta linhas para o Armazenamento de Objetos na Nuvem como texto com opções de CSV, JSON, Parquet ou XML; ou usando o driver de acesso ORACLE_DATAPUMP para gravar dados em um arquivo de dump.

GET_OBJECT Procedimento e Função

Este procedimento é sobrecarregado. O form de procedimento lê um objeto do Cloud Object Storage e o copia para o Autonomous Database. O form de função lê um objeto do Cloud Object Storage e retorna um BLOB para o Autonomous Database.

Função LIST_FILES

Esta função lista os arquivos no diretório especificado. Os resultados incluem os nomes de arquivos e metadados adicionais sobre os arquivos, como tamanho do arquivo em bytes, timestamp de criação e o último timestamp de modificação.

LIST_OBJECTS Função

Esta função lista objetos no local especificado no armazenamento de objetos. Os resultados incluem os nomes de objetos e metadados adicionais sobre os objetos, como tamanho, soma de verificação, timestamp de criação e o último timestamp de modificação.

Procedimento MOVE_OBJECT

Este procedimento move um objeto de um bucket do Cloud Object Storage para outro.

PUT_OBJECT Procedimento

Este procedimento é sobrecarregado. De uma forma, o procedimento copia um arquivo do Autonomous Database para o Cloud Object Storage. De outra, o procedimento copia um BLOB do Autonomous Database para o Cloud Object Storage.

Procedimento SYNC_EXTERNAL_PART_TABLE

Esse procedimento simplifica a atualização de uma tabela particionada externa de arquivos na Nuvem. Execute esse procedimento sempre que novas partições forem adicionadas ou quando as partições forem removidas da origem de Armazenamento de Objetos da tabela particionada externa.

Procedimento VALIDATE_EXTERNAL_TABLE

Este procedimento valida os arquivos de origem de uma tabela externa, gera informações de log e armazena as linhas que não correspondem às opções de formato especificadas para a tabela externa em uma tabela de arquivos incorretos no Autonomous Database.

Procedimento VALIDATE_EXTERNAL_PART_TABLE

Este procedimento valida os arquivos de origem de uma tabela particionada externa, gera informações de log e armazena as linhas que não correspondem às opções de formato especificadas para a tabela externa em uma tabela arquivo inválido no Autonomous Database.

Procedimento VALIDATE_HYBRID_PART_TABLE

Esse procedimento valida os arquivos de origem de uma tabela particionada híbrida, gera informações de log e armazena as linhas que não correspondem às opções de formato especificadas para a tabela híbrida em uma tabela de arquivos inválidos do Autonomous Database.

Procedimento COPY_COLLECTION

Este procedimento carrega dados em uma coleção SODA do Cloud Object Storage ou de um diretório. Se a coleção SODA especificada não existir, o procedimento a criará. O formulário sobrecarregado permite que você use o parâmetro operation_id.

Sintaxe

DBMS_CLOUD.COPY_COLLECTION (
    collection_name   IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    format            IN CLOB     DEFAULT NULL
);

DBMS_CLOUD.COPY_COLLECTION (
    collection_name   IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    format            IN CLOB     DEFAULT NULL,
    operation_id      OUT NOCOPY NUMBER
);

Parâmetros

Parâmetro Descrição

collection_name

O nome da coleção SODA na qual os dados serão carregados. Se já existir uma coleção com esse nome, os dados especificados serão carregados; caso contrário, uma nova coleção será criada.

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Esse parâmetro não é usado quando você especifica um diretório com file_uri_list.

file_uri_list

Esse parâmetro especifica uma lista delimitada por vírgulas dos URIs de arquivo de origem ou um ou mais diretórios e arquivos de origem.

URIs do arquivo de origem da nuvem

Você pode usar curingas, bem como expressões regulares nos nomes de arquivo nos URIs de arquivo de origem da Nuvem.

As expressões regulares só podem ser usadas quando o parâmetro regexuri format está definido como TRUE.

Os caracteres "*" e "?" são considerados caracteres curinga quando o parâmetro regexuri é definido como FALSE. Quando o parâmetro regexuri é definido como TRUE, os caracteres "*" e "?" fazem parte do padrão de expressão regular especificado.

Padrões de expressão regulares só são suportados para o nome do arquivo ou caminho da subpasta em seus URIs e a correspondência de padrões é idêntica à executada pela função REGEXP_LIKE.

Por exemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

O formato dos URIs depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte DBMS_CLOUD Formatos de URI.

Consulte Condição REGEXP_LIKE para obter mais informações sobre a condição REGEXP_LIKE.

Diretório

Você pode especificar um diretório e um ou mais nomes de arquivo ou usar uma lista separada por vírgulas de diretórios e nomes de arquivo. O formato para especificar um diretório é:'MY_DIR:filename.ext'. Por padrão, o nome do diretório MY_DIR é um objeto de banco de dados e não faz distinção entre maiúsculas e minúsculas. O nome do arquivo diferencia maiúsculas de minúsculas.

Expressões regulares não são suportadas ao especificar os nomes de arquivo em um diretório. Você só pode usar curingas para especificar nomes de arquivo em um diretório. O caractere "*" pode ser usado como curinga para vários caracteres, e o caractere "?" pode ser usado como curinga para um único caractere. Por exemplo:'MY_DIR:*" ou 'MY_DIR:test?'

Para especificar vários diretórios, use uma lista separada por vírgulas de diretórios: Por exemplo:'MY_DIR1:*, MY_DIR2:test?'

use aspas duplas para especificar um nome de diretório com distinção entre maiúsculas e minúsculas. Por exemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir um caractere de aspas, use duas aspas. Por exemplo:'MY_DIR:''filename.ext'. Isso especifica que filename começa com uma cotação (').

format

As opções que descrevem o formato dos arquivos de origem. Essas opções são especificadas como uma string JSON.

Os formatos suportados são: characterset, compression, encryption, ignoreblanklines, jsonpath, maxdocsize, recorddelimiter, rejectlimit, type, unpackarrays, keyassignment e keypath.

Além dos formatos mencionados para dados JSON, o Autonomous Database também oferece suporte a outros formatos. Para obter a lista de argumentos de formato suportados pelo Autonomous Database, consulte DBMS_CLOUD Opções de Formato do Pacote.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

Exemplo

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'OBJ_STORE_CRED',
            username        => 'user_name@oracle.com',
            password        => 'password'
            );

    DBMS_CLOUD.COPY_COLLECTION(
            collection_name => 'myCollection',
            credential_name => 'OBJ_STORE_CRED',
            file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/adbexample/b/json/o/myCollection.json'  
            );
END;
/

Procedimento COPY_DATA

Este procedimento carrega dados em tabelas existentes do Autonomous Database de arquivos na Nuvem ou de arquivos em um diretório. O formulário sobrecarregado permite que você use o parâmetro operation_id.

Sintaxe

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    schema_name       IN VARCHAR2,
    field_list        IN CLOB,
    format            IN CLOB);

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB DEFAULT NULL,
    schema_name       IN VARCHAR2 DEFAULT NULL,
    field_list        IN CLOB DEFAULT NULL,
    format            IN CLOB DEFAULT NULL
    operation_id      OUT NOCOPY NUMBER);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela de destino no banco de dados. A tabela de destino precisa ser criada antes de você executar COPY_DATA.

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Esse parâmetro não é usado quando você especifica um diretório ou URL de Hiperlink de Tabela com file_uri_list.

file_uri_list

Este parâmetro especifica uma das seguintes opções:

  • Lista delimitada por vírgulas dos URIs do arquivo de origem

  • Lista delimitada por vírgulas de URLs de Hyperlink de Tabela

  • Um ou mais diretórios e arquivos de origem

Você pode usar curingas, bem como expressões regulares nos nomes de arquivo nos URIs de arquivo de origem da Nuvem.

URIs do arquivo de origem da nuvem

Esse parâmetro especifica uma lista delimitada por vírgulas dos URIs de arquivo de origem ou um ou mais diretórios e arquivos de origem.

As expressões regulares só podem ser usadas quando o parâmetro regexuri format está definido como TRUE.

Os caracteres "*" e "?" são considerados caracteres curinga quando o parâmetro regexuri é definido como FALSE. Quando o parâmetro regexuri é definido como TRUE, os caracteres "*" e "?" fazem parte do padrão de expressão regular especificado.

Padrões de expressão regulares só são suportados para o nome do arquivo ou caminho da subpasta em seus URIs e a correspondência de padrões é idêntica à executada pela função REGEXP_LIKE.

Por exemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

O formato dos URIs depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte DBMS_CLOUD Formatos de URI.

Consulte Condição REGEXP_LIKE para obter mais informações sobre a condição REGEXP_LIKE.

URL do Hiperlink da Tabela

Você pode usar um Hiperlink de Tabela das seguintes maneiras:
  • Especifique um único URL de Hiperlink de Tabela.

    Por exemplo:
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data'
    
  • Especifique uma lista delimitada por vírgulas de URLs de Hiperlink de Tabela. Certifique-se de que todos os Hiperlinks de Tabela incluídos tenham os mesmos nomes de coluna, ordem de coluna e tipos de dados de coluna.

    Por exemplo:
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data','https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K7XExample/data'
    
Consulte Sobre Hiperlinks de Tabela no Autonomous Database e Procedimento GET_PREAUTHENTICATED_URL para obter mais informações.

Diretório

Você pode especificar um diretório e um ou mais nomes de arquivo ou usar uma lista separada por vírgulas de diretórios e nomes de arquivo. O formato para especificar um diretório é:'MY_DIR:filename.ext'. Por padrão, o nome do diretório MY_DIR é um objeto de banco de dados e não faz distinção entre maiúsculas e minúsculas. O nome do arquivo diferencia maiúsculas de minúsculas.

Expressões regulares não são suportadas ao especificar os nomes de arquivo em um diretório. Você só pode usar curingas para especificar nomes de arquivo em um diretório. O caractere "*" pode ser usado como curinga para vários caracteres, e o caractere "?" pode ser usado como curinga para um único caractere. Por exemplo:'MY_DIR:*" ou 'MY_DIR:test?'

Para especificar vários diretórios, use uma lista separada por vírgulas de diretórios: Por exemplo:'MY_DIR1:*, MY_DIR2:test?'

use aspas duplas para especificar um nome de diretório com distinção entre maiúsculas e minúsculas. Por exemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir um caractere de aspas, use duas aspas. Por exemplo:'MY_DIR:''filename.ext'. Isso especifica que filename começa com uma cotação (').

schema_name

O nome do esquema em que a tabela de destino reside. O valor padrão é NULL, o que significa que a tabela de destino está no mesmo esquema que o usuário que está executando o procedimento.

field_list

Identifica os campos nos arquivos de origem e seus tipos de dados. O valor padrão é NULL, o que significa que os campos e os tipos de dados são determinados pela definição da tabela de destino. A sintaxe desse argumento é a mesma da cláusula field_list nas tabelas externas regulares do sistema Oracle. Para obter mais informações sobre field_list consulte Oracle® Database Utilities.

Quando o valor da opção type do parâmetro format é json, esse parâmetro é ignorado.

Para obter um exemplo usando field_list, consulte Procedimento CREATE_EXTERNAL_TABLE.

format

As opções que descrevem o formato dos arquivos de origem, log e arquivos inválidos. Para ver a lista de opções e saber como especificar os valores, consulte DBMS_CLOUD Package Format Options.

Para as opções de formato de arquivo Avro, ORC ou Parquet, consulte DBMS_CLOUD Opções de Formato do Pacote para Avro, ORC ou Parquet.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

Nota de Uso

O limite de registro padrão é detected newline. Com detected newline, o DBMS_CLOUD tenta localizar automaticamente o caractere correto de nova linha a ser usado como delimitador de registro. O DBMS_CLOUD primeiro procura o caractere de nova linha do Windows \r\n. Se encontrar o caractere de nova linha do Windows, ele será usado como delimitador de registro para todos os arquivos do procedimento. Se um caractere de nova linha do Windows não for encontrado, o DBMS_CLOUD procurará o \n do UNIX/Linux e, caso encontre um, ele usará \n como delimitador para todos os arquivos do procedimento. Se os arquivos de origem usarem uma combinação de diferentes delimitadores de registro, você poderá encontrar um erro como, "KUP-04020: found record longer than buffer size supported". Nesse caso, modifique os arquivos de origem para usar o mesmo delimitador de registro ou só especifique arquivos de origem que utilizem o mesmo delimitador de registro.

Consulte DBMS_CLOUD Package Format Options para obter informações sobre a opção de formato recorddelmiter.

Exemplos

BEGIN
    DBMS_CLOUD.CREATE_CREDENTIAL(
            credential_name => 'DEF_CRED_NAME',
            username        => 'user_name@oracle.com',
            password        => 'password'
            );
END;
/
BEGIN
 DBMS_CLOUD.COPY_DATA(
    table_name =>'CHANNELS',
    credential_name =>'DEF_CRED_NAME',
    file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/channels.txt',
    format => json_object('delimiter' value ',')
 );
END;
/
BEGIN
    DBMS_CLOUD.COPY_DATA(
            table_name      => 'ORDERS',
            schema_name     => 'TEST_SCHEMA',
            credential_name => 'DEF_CRED_NAME',
	     file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/adbexample/b/json/o/orde[r]s.tbl.1'
            format          =>  json_object('ignoreblanklines' value TRUE,
                                            'rejectlimit' value '0',
                                            'dateformat' value 'yyyy-mm-dd',
                                            'regexuri' value TRUE)
            );
END;
/

COPY_DATA Procedimento para Arquivos Avro, ORC ou Parquet

Esse procedimento com o parâmetro format type definido com o valor avro, orc ou parquet carrega dados para tabelas existentes do Autonomous Database de arquivos Avro, ORC ou Parquet na Nuvem ou de arquivos em um diretório.

Assim como os arquivos de texto, os dados são copiados do arquivo Avro, ORC ou Parquet de origem para a tabela interna pré-existente.

Sintaxe

DBMS_CLOUD.COPY_DATA (
    table_name        IN VARCHAR2,
    credential_name   IN VARCHAR2 DEFAULT NULL,
    file_uri_list     IN CLOB,
    schema_name       IN VARCHAR2 DEFAULT,
    field_list        IN CLOB DEFAULT,
    format            IN CLOB DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela de destino no banco de dados. A tabela de destino precisa ser criada antes de você executar COPY_DATA.

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Esse parâmetro não é usado quando você especifica um diretório com file_uri_list.

file_uri_list

Esse parâmetro especifica uma lista delimitada por vírgulas dos URIs de arquivo de origem ou um ou mais diretórios e arquivos de origem.

URIs do arquivo de origem da nuvem

Você pode usar curingas, bem como expressões regulares nos nomes de arquivo nos URIs de arquivo de origem da Nuvem.

As expressões regulares só podem ser usadas quando o parâmetro regexuri format está definido como TRUE.

Os caracteres "*" e "?" são considerados caracteres curinga quando o parâmetro regexuri é definido como FALSE. Quando o parâmetro regexuri é definido como TRUE, os caracteres "*" e "?" fazem parte do padrão de expressão regular especificado.

Padrões de expressão regulares só são suportados para o nome do arquivo ou caminho da subpasta em seus URIs e a correspondência de padrões é idêntica à executada pela função REGEXP_LIKE.

Por exemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

O formato dos URIs depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte DBMS_CLOUD Formatos de URI.

Consulte Condição REGEXP_LIKE para obter mais informações sobre a condição REGEXP_LIKE.

Diretório

Você pode especificar um diretório e um ou mais nomes de arquivo ou usar uma lista separada por vírgulas de diretórios e nomes de arquivo. O formato para especificar um diretório é:'MY_DIR:filename.ext'. Por padrão, o nome do diretório MY_DIR é um objeto de banco de dados e não faz distinção entre maiúsculas e minúsculas. O nome do arquivo diferencia maiúsculas de minúsculas.

Expressões regulares não são suportadas ao especificar os nomes de arquivo em um diretório. Você só pode usar curingas para especificar nomes de arquivo em um diretório. O caractere "*" pode ser usado como curinga para vários caracteres, e o caractere "?" pode ser usado como curinga para um único caractere. Por exemplo:'MY_DIR:*" ou 'MY_DIR:test?'

Para especificar vários diretórios, use uma lista separada por vírgulas de diretórios: Por exemplo:'MY_DIR1:*, MY_DIR2:test?'

use aspas duplas para especificar um nome de diretório com distinção entre maiúsculas e minúsculas. Por exemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir um caractere de aspas, use duas aspas. Por exemplo:'MY_DIR:''filename.ext'. Isso especifica que filename começa com uma cotação (').

schema_name

O nome do esquema em que a tabela de destino reside. O valor padrão é NULL, o que significa que a tabela de destino está no mesmo esquema que o usuário que está executando o procedimento.

field_list

Ignorado para arquivos Avro, ORC ou Parquet.

Os campos na origem correspondem às colunas da tabela externa por nome. os tipos de dados de origem são convertidos em tipo de dados de coluna de tabela externa.

Para arquivos ORC, consulte DBMS_CLOUD Mapeamento de Tipo de Dados ORC para Oracle do Pacote.

Para arquivos Parquet, consulte DBMS_CLOUD Mapeamento de Tipo de Dados Parquet para Oracle do Pacote Parquet para obter detalhes sobre mapeamento.

Para arquivos Avro, consulte DBMS_CLOUD Mapeamento de Tipo de Dados Avro para Oracle do Pacote para obter detalhes sobre mapeamento.

format

As opções que descrevem o formato dos arquivos de origem. Para arquivos Avro, ORC ou Parquet, somente duas opções são suportadas: consulte DBMS_CLOUD Opções de Formato do Pacote para Avro, ORC ou Parquet.

Observações de Uso

  • Assim como com outros arquivos de dados, as cargas de dados Avro, ORC e Parquet geram logs que podem ser visualizados nas tabelas dba_load_operations e user_load_operations. Cada operação de carga adiciona um registro a dba[user]_load_operations que indica a tabela que contém os logs.

    A tabela de log fornece informações resumidas sobre a carga.

  • Para Avro, ORC ou Parquet, quando o parâmetro format type é definido com o valor avro, orc ou parquet, a tabela BADFILE_TABLE fica sempre vazia.

    • Para arquivos Parquet, erros de restrição PRIMARY KEY geram um erro ORA.

    • Se os dados de uma coluna encontrarem um erro de conversão, por exemplo, a coluna de destino não for grande o suficiente para conter o valor convertido, o valor da coluna será definido como NULL. Isso não gera um registro rejeitado.

Procedimento COPY_OBJECT

Este procedimento copia um objeto de um bucket ou pasta do Cloud Object Storage para outro.

O bucket ou pasta de origem e destino pode estar no mesmo provedor de armazenamento do Cloud Object ou em outro provedor.

Quando a origem e o destino estão em Armazenamentos de Objetos distintos ou têm contas diferentes com o mesmo provedor de nuvem, você pode fornecer nomes de credenciais separados para os locais de origem e destino.

Por padrão, o nome da credencial de origem também é usado pelo local de destino quando o nome da credencial de destino não é fornecido.

Sintaxe

DBMS_CLOUD.COPY_OBJECT (
    source_credential_name  IN  VARCHAR2 DEFAULT NULL,
    source_object_uri       IN  VARCHAR2,
    target_object_uri       IN  VARCHAR2,
    target_credential_name  IN  VARCHAR2 DEFAULT NULL
);

Parâmetros

Parâmetro Descrição

source_credential_name

O nome da credencial para acessar o Cloud Object Storage de origem.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Se você não fornecer um valor source_credential_name, credential_name será definido como NULL.

source_object_uri

Especifica o URI, que aponta para a localização do bucket ou da pasta do Object Storage de origem.

Este parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

target_object_uri

Especifica o URI do Armazenamento de Objetos de destino.

Este parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

target_credential_name

O nome da credencial para acessar o local de destino do Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Se você não fornecer um valor target_credential_name, target_object_uri será definido como o valor source_credential_name.

Exemplo

BEGIN 
DBMS_CLOUD.COPY_OBJECT (
    source_credential_name => 'OCI_CRED',
    source_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/bgfile.csv',
    target_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/myfile.csv'
);
END;
/

Procedimento CREATE_CLOUD_TABLE

Este procedimento cria uma Tabela de Nuvem. Todos os dados da Tabela da Nuvem são armazenados no Object Storage gerenciado pela Oracle (as Tabelas da Nuvem armazenam apenas seus metadados no banco de dados).

Sintaxe

DBMS_CLOUD.CREATE_CLOUD_TABLE (
    table_name       IN VARCHAR2,
    column_list      IN CLOB,
    params           IN CLOB);

Parâmetros

Parâmetro Descrição

table_name

O nome da Tabela da Nuvem.

column_list

Lista delimitada por vírgulas de nomes de colunas e tipos de dados para a Tabela de Nuvem.

Observações de Uso

  • Atributos DEFAULT: O column_list pode incluir a cláusula DEFAULT, que funciona como a cláusula DEFAULT em um CREATE TABLE comum. Consulte CREATE TABLE para obter informações sobre o comportamento da cláusula DEFAULT.

  • Use DROP TABLE para eliminar uma Tabela da Nuvem. As Tabelas da Nuvem não suportam a lixeira.

    Por exemplo:

    DROP TABLE CLOUD_TAB1; 
  • Você pode conceder privilégios SELECT, INSERT e UPDATE para uma Tabela da Nuvem. Nenhum outro privilégio pode ser concedido a uma Tabela da Nuvem.

    Consulte Configurando Autorização de Privilégio e Função para obter mais informações.

Exemplos

EXEC DBMS_CLOUD.CREATE_CLOUD_TABLE( 'CLOUD_TAB1', 'I INTEGER, J INTEGER' );
BEGIN
  DBMS_CLOUD.CREATE_CLOUD_TABLE(
   table_name  => 'CLOUD_TABLE_WITH_DEFAULT',
   column_list => 'I INTEGER,
                   A VARCHAR2(32) DEFAULT ''ABC''' );
END;
/

Procedimento CREATE_EXTERNAL_PART_TABLE

Esse procedimento cria uma tabela particionada externa em arquivos na Nuvem ou em arquivos em um diretório. Isso permite que você execute consultas em dados externos do Autonomous Database.

Sintaxe

DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    partitioning_clause  IN CLOB,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);


DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    file_uri_list        IN VARCHAR2,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

partitioning_clause

Especifica a cláusula de partição completa, incluindo as informações de localização para partições individuais.

Se você usar o parâmetro partitioning_clause, o parâmetro file_uri_list não será permitido.

file_uri_list

Esse parâmetro especifica uma lista delimitada por vírgulas dos URIs de arquivo de origem ou um ou mais diretórios e arquivos de origem.

URIs do arquivo de origem da nuvem

Você pode usar curingas, bem como expressões regulares nos nomes de arquivo nos URIs de arquivo de origem da Nuvem.

As expressões regulares só podem ser usadas quando o parâmetro regexuri format está definido como TRUE.

Os caracteres "*" e "?" são considerados caracteres curinga quando o parâmetro regexuri é definido como FALSE. Quando o parâmetro regexuri é definido como TRUE, os caracteres "*" e "?" fazem parte do padrão de expressão regular especificado.

Padrões de expressão regulares só são suportados para o nome do arquivo ou caminho da subpasta em seus URIs e a correspondência de padrões é idêntica à executada pela função REGEXP_LIKE.

Essa opção só é suportada com tabelas externas criadas em um arquivo no Object Storage.

Por exemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

Se você usar o parâmetro file_uri_list, o parâmetro partitioning_clause não será permitido.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

Consulte Condição REGEXP_LIKE para obter mais informações sobre a condição REGEXP_LIKE.

column_list

Lista delimitada por vírgulas de nomes de colunas e tipos de dados para a tabela externa. Esse parâmetro tem os seguintes requisitos, dependendo do tipo dos arquivos de dados especificados com o parâmetro file_uri_list:

  • O parâmetro column_list é obrigatório com arquivos não estruturados. Usando arquivos não estruturados, por exemplo, com arquivos de texto CSV, o parâmetro column_list deve especificar todos os nomes de coluna e tipos de dados dentro do arquivo de dados, bem como as colunas de partição derivadas do nome do objeto.

  • O parâmetro column_list é opcional com arquivos estruturados. Por exemplo, com arquivos de dados Avro, ORC ou Parquet, o parâmetro column_list não é obrigatório. Quando column_list não for incluído, a opção partition_columns do parâmetro format deverá incluir especificações para nomes de colunas (name) e tipos de dados (type).

field_list

Identifica os campos nos arquivos de origem e seus tipos de dados. O valor padrão é NULL, o que significa que os campos e seus tipos de dados são determinados pelo parâmetro column_list. A sintaxe desse argumento é a mesma da cláusula field_list nas tabelas externas regulares do sistema Oracle. Para obter mais informações sobre field_list consulte Oracle® Database Utilities.

format

A opção de formato partition_columns especifica os nomes de coluna DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE e os tipos de dados de colunas de partição quando as colunas de partição são derivadas do caminho do arquivo, dependendo do tipo de arquivo de dados, estruturado ou não estruturado:

  • Quando DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE inclui o parâmetro column_list e os arquivos de dados não são estruturados, como com arquivos de texto CSV, o parâmetro partition_columns não inclui o tipo de dados. Por exemplo, use um formato como o seguinte para esse tipo de especificação partition_columns:

    '"partition_columns":["state","zipcode"]'

    O tipo de dados não é obrigatório porque ele está especificado no parâmetro column_list DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE.

  • Quando o DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE não inclui o parâmetro column_list e os arquivos de dados são estruturados, como arquivos Avro, ORC ou Parquet, a opção partition_columns inclui o nome da coluna, a subcláusula name e o tipo de dados, a subcláusula type. Veja o seguinte exemplo que mostra uma especificação partition_columns:

    '"partition_columns":[
                   {"name":"country", "type":"varchar2(10)"},
                   {"name":"year", "type":"number"},
                   {"name":"month", "type":"varchar2(10)"}]'

Se os arquivos de dados não forem estruturados e a subcláusula type for especificada com partition_columns, a subcláusula type será ignorada.

Para nomes de objetos que não se baseiam no formato hive, a ordem das colunas especificadas partition_columns deve corresponder à ordem em que elas aparecem no nome do objeto, no caminho de arquivo especificado no parâmetro file_uri_list.

Para ver todas as opções de parâmetro format que descrevem o formato dos arquivos de origem, consulte DBMS_CLOUD Opções de Formato do Pacote.

Observações de Uso

  • Você não pode chamar esse procedimento com os parâmetros partitioning_clause e file_uri_list.

  • A especificação do parâmetro column_list é opcional com arquivos de dados estruturados, incluindo arquivos de dados Avro, Parquet ou ORC. Se column_list não for especificado, a opção partition_columns do parâmetro format deverá incluir name e type.

  • O parâmetro column_list é obrigatório com arquivos de dados não estruturados, como arquivos de texto CSV.

  • O procedimento DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE suporta arquivos particionados externos nos serviços de armazenamento de objetos na nuvem suportados, que incluem:
    • Oracle Cloud Infrastructure Object Storage

    • Azure Blob Storage ou Azure Data Lake Storage

    • Amazon S3

    • Compatível com Amazon S3, incluindo: Oracle Cloud Infrastructure Object Storage, Google Cloud Storage e Wasabi Hot Cloud Storage.

    • GitHub Repositório

    Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

  • O procedimento DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE suporta arquivos particionados externos em diretórios, seja em um sistema de arquivos local ou em um sistema de arquivos de rede.

  • Quando você chama DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE com o parâmetro file_uri_list, os tipos das colunas especificadas no nome do arquivo do Armazenamento de Objetos na Nuvem devem ser um destes:

    VARCHAR2(n)
    NUMBER(n)
    NUMBER(p,s)
    NUMBER
    DATE
    TIMESTAMP(9)
  • O limite de registro padrão é detected newline. Com detected newline, o DBMS_CLOUD tenta localizar automaticamente o caractere correto de nova linha a ser usado como delimitador de registro. O DBMS_CLOUD primeiro procura o caractere de nova linha do Windows \r\n. Se encontrar o caractere de nova linha do Windows, ele será usado como delimitador de registro para todos os arquivos do procedimento. Se um caractere de nova linha do Windows não for encontrado, o DBMS_CLOUD procurará o \n do UNIX/Linux e, caso encontre um, ele usará \n como delimitador para todos os arquivos do procedimento. Se os arquivos de origem usarem uma combinação de diferentes delimitadores de registro, você poderá encontrar um erro como, "KUP-04020: found record longer than buffer size supported". Nesse caso, modifique os arquivos de origem para usar o mesmo delimitador de registro ou só especifique arquivos de origem que utilizem o mesmo delimitador de registro.

    Consulte DBMS_CLOUD Package Format Options para obter informações sobre a opção de formato recorddelmiter.

  • As tabelas particionadas externas criadas com DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE incluem duas colunas invisíveis file$path e file$name. Essas colunas ajudam a identificar de qual arquivo um registro está vindo.

    • file$path: Especifica o texto do caminho do arquivo até o início do nome do objeto.

    • file$name: Especifica o nome do objeto, incluindo todo o texto que segue o nome do bucket.

Exemplos

Exemplo usando o parâmetro partitioning_clause:

BEGIN  
   DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
      table_name =>'PET1',  
      credential_name =>'OBJ_STORE_CRED',
      format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),
      column_list => 'col1 number, col2 number, col3 number',
      partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) location
                                    ( ''&base_URL//file_11.txt'')
                                 ,
                                 partition p2 values less than (2000) location
                                    ( ''&base_URL/file_21.txt'')
                                 ,
                                 partition p3 values less than (3000) location 
                                    ( ''&base_URL/file_31.txt'')
                                 )'
     );
   END;
/  


BEGIN
    DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
       table_name          => 'PET',
       format              => json_object('delimiter'value ','),
       column_list         => 'name varchar2(20), gender varchar2(10), salary number',
       partitioning_clause => 'partition by range (salary)
              (   -- Use test1.csv in the DEFAULT DIRECTORY DATA_PUMP_DIR 
                  partition p1 values less than (100) LOCATION (''test1.csv''),
                   -- Use test2.csv in a specified directory MY_DIR
                  partition p2 values less than (300) DEFAULT DIRECTORY MY_DIR LOCATION (''test2.csv'')        )'   );                       
END;                     
/

Exemplo usando os parâmetros file_uri_list e column_list com arquivos de dados não estruturados:

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
   table_name => 'MYSALES',
   credential_name => 'DEF_CRED_NAME',
   file_uri_list     => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/*.csv', 
   column_list       => 'product varchar2(100), units number, country varchar2(100), year number, month varchar2(2)', 
   field_list        => 'product, units', --[Because country, year and month are not in the file, they are not listed in the field list]
   format            => '{"type":"csv", "partition_columns":["country","year","month"]}');
END;
/ 

Exemplo usando o file_uri_list sem o parâmetro column_list com arquivos de dados estruturados:

BEGIN
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
  table_name => 'MYSALES',
  credential_name => 'DEF_CRED_NAME',
  DBMS_CLOUD.CREATE_EXTERNAL_PART_TABLE(
    table_name      => 'MYSALES',
    credential_name => 'DEF_CRED_NAME',
    file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/*.parquet',
    format          => 
        json_object('type' value 'parquet', 'schema' value 'first',
                    'partition_columns' value 
                          json_array(
                                json_object('name' value 'country', 'type' value 'varchar2(100)'),
                                json_object('name' value 'year', 'type' value 'number'),
                                json_object('name' value 'month', 'type' value 'varchar2(2)')
                          )
         )
    );
END;
/

Procedimento CREATE_EXTERNAL_TABLE

Este procedimento cria uma tabela externa em arquivos na Nuvem ou em arquivos em um diretório. Isso permite que você execute consultas em dados externos do Autonomous Database.

Sintaxe

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB,
    field_list       IN CLOB DEFAULT,
    format           IN CLOB DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Esse parâmetro não é usado quando você especifica um diretório ou um URL de Hiperlink de Tabela com file_uri_list.

file_uri_list

Este parâmetro especifica uma das seguintes opções:

  • Lista delimitada por vírgulas dos URIs do arquivo de origem.

  • Lista delimitada por vírgulas de URLs de Hiperlink de Tabela.

  • Um ou mais diretórios e arquivos de origem.

URIs do arquivo de origem da nuvem

Você pode usar curingas, bem como expressões regulares nos nomes de arquivo nos URIs de arquivo de origem da Nuvem.

As expressões regulares só podem ser usadas quando o parâmetro regexuri format está definido como TRUE.

Os caracteres "*" e "?" são considerados caracteres curinga quando o parâmetro regexuri é definido como FALSE. Quando o parâmetro regexuri é definido como TRUE, os caracteres "*" e "?" fazem parte do padrão de expressão regular especificado.

Padrões de expressão regulares só são suportados para o nome do arquivo ou caminho da subpasta em seus URIs e a correspondência de padrões é idêntica à executada pela função REGEXP_LIKE.

Essa opção só é suportada com tabelas externas criadas em um arquivo no Object Storage.

Por exemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.csv'

O formato dos URIs depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte DBMS_CLOUD Formatos de URI.

Consulte Condição REGEXP_LIKE para obter mais informações sobre a condição REGEXP_LIKE.

URL do Hiperlink da Tabela

Você pode usar um URL de Hiperlink de Tabela para criar uma tabela externa das seguintes maneiras:
  • Especifique um único URL de Hiperlink de Tabela do Autonomous Database. Também é possível aplicar filtros e cláusulas aos dados ao ler dados da tabela. Por exemplo, você pode filtrar os dados usando a cláusula WHERE ou classificá-los usando a cláusula ORDER BY.

    Por exemplo:
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data'
    
  • Especifique uma lista delimitada por vírgulas de URLs de Hiperlinks de Tabela do Autonomous Database. Certifique-se de que todos os Hiperlinks de Tabela incluídos tenham os mesmos nomes de coluna, ordem de coluna e tipos de dados de coluna no mesmo esquema.

    Por exemplo:
    file_uri_list => 'https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K6XExample/data','https://dataaccess.adb.us-chicago-1.oraclecloudapps.com/adb/p/K7XExample/data'
    
Observação

Os URLs de Hiperlink de Tabela não suportam curingas.
Consulte Sobre Hiperlinks de Tabela no Autonomous Database e Procedimento GET_PREAUTHENTICATED_URL para obter mais informações.
Diretório

Você pode especificar um diretório e um ou mais nomes de arquivo ou usar uma lista separada por vírgulas de diretórios e nomes de arquivo. O formato para especificar um diretório é:'MY_DIR:filename.ext'. Por padrão, o nome do diretório MY_DIR é um objeto de banco de dados e não faz distinção entre maiúsculas e minúsculas. O nome do arquivo diferencia maiúsculas de minúsculas.

Expressões regulares não são suportadas ao especificar os nomes de arquivo em um diretório. Você só pode usar curingas para especificar nomes de arquivo em um diretório. O caractere "*" pode ser usado como curinga para vários caracteres, e o caractere "?" pode ser usado como curinga para um único caractere. Por exemplo:'MY_DIR:*" ou 'MY_DIR:test?'

Para especificar vários diretórios, use uma lista separada por vírgulas de diretórios: Por exemplo:'MY_DIR1:*, MY_DIR2:test?'

use aspas duplas para especificar um nome de diretório com distinção entre maiúsculas e minúsculas. Por exemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir um caractere de aspas, use duas aspas. Por exemplo:'MY_DIR:''filename.ext'. Isso especifica que filename começa com uma cotação (').

column_list

Lista delimitada por vírgulas de nomes de colunas e tipos de dados para a tabela externa.

field_list

Identifica os campos nos arquivos de origem e seus tipos de dados. O valor padrão é NULL, o que significa que os campos e seus tipos de dados são determinados pelo parâmetro column_list. A sintaxe desse argumento é a mesma da cláusula field_list nas tabelas externas regulares do Oracle Database. Para obter mais informações sobre field_list, consulte ORACLE_LOADER Access Driver field_list na Cláusula field_definitions em Oracle Database Utilities.

format

As opções que descrevem o formato dos arquivos de origem. Para ver a lista de opções e saber como especificar os valores, consulte DBMS_CLOUD Package Format Options.

Para arquivos de formato Avro, ORC ou Parquet, consulte CREATE_EXTERNAL_TABLE Procedimento para Arquivos Avro, ORC ou Parquet.

Observações de Uso

  • O procedimento DBMS_CLOUD.CREATE_EXTERNAL_TABLE suporta arquivos particionados externos nas origens de armazenamento de objetos na nuvem compatíveis, incluindo:

    • Oracle Cloud Infrastructure Object Storage

    • Azure Blob Storage ou Azure Data Lake Storage

    • Amazon S3

    • Compatível com Amazon S3, incluindo: Oracle Cloud Infrastructure Object Storage, Google Cloud Storage e Wasabi Hot Cloud Storage.

    • GitHub Repositório

    • Oracle Cloud Infrastructure Object Storage com URLs de Hiperlink de Tabela

    A credencial é uma propriedade em nível de tabela; portanto, os arquivos externos devem estar no mesmo armazenamento de objetos.

    Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

  • O limite de registro padrão é detected newline. Com detected newline, o DBMS_CLOUD tenta localizar automaticamente o caractere correto de nova linha a ser usado como delimitador de registro. O DBMS_CLOUD primeiro procura o caractere de nova linha do Windows \r\n. Se encontrar o caractere de nova linha do Windows, ele será usado como delimitador de registro para todos os arquivos do procedimento. Se um caractere de nova linha do Windows não for encontrado, o DBMS_CLOUD procurará o \n do UNIX/Linux e, caso encontre um, ele usará \n como delimitador para todos os arquivos do procedimento. Se os arquivos de origem usarem uma combinação de diferentes delimitadores de registro, você poderá encontrar um erro como, "KUP-04020: found record longer than buffer size supported". Nesse caso, modifique os arquivos de origem para usar o mesmo delimitador de registro ou só especifique arquivos de origem que utilizem o mesmo delimitador de registro.

    Consulte DBMS_CLOUD Package Format Options para obter informações sobre a opção de formato recorddelimiter.

Exemplo

BEGIN  
   DBMS_CLOUD.CREATE_EXTERNAL_TABLE(   
      table_name =>'WEATHER_REPORT_DOUBLE_DATE',   
      credential_name =>'OBJ_STORE_CRED',   
      file_uri_list =>'&base_URL/Charlotte_NC_Weather_History_Double_Dates.csv',
      format => json_object('type' value 'csv', 'skipheaders' value '1'),   
      field_list => 'REPORT_DATE DATE''mm/dd/yy'',                   
                     REPORT_DATE_COPY DATE ''yyyy-mm-dd'',
                     ACTUAL_MEAN_TEMP,                 
                     ACTUAL_MIN_TEMP,                 
                     ACTUAL_MAX_TEMP,                 
                     AVERAGE_MIN_TEMP,                    
                     AVERAGE_MAX_TEMP,     
                     AVERAGE_PRECIPITATION',   
      column_list => 'REPORT_DATE DATE,   
                     REPORT_DATE_COPY DATE,
                     ACTUAL_MEAN_TEMP NUMBER,  
                     ACTUAL_MIN_TEMP NUMBER,  
                     ACTUAL_MAX_TEMP NUMBER,  
                     AVERAGE_MIN_TEMP NUMBER,   
                     AVERAGE_MAX_TEMP NUMBER,                  
                     AVERAGE_PRECIPITATION NUMBER');
   END;
/ 

SELECT * FROM WEATHER_REPORT_DOUBLE_DATE where         
   actual_mean_temp > 69 and actual_mean_temp < 74

CREATE_EXTERNAL_TABLE Procedimento para o Apache Iceberg

Esse procedimento cria tabelas externas para tabelas do Apache Iceberg nas configurações suportadas.

Para obter uma descrição das configurações suportadas, consulte Sobre a consulta de tabelas do Apache Iceberg.

Sintaxe

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB DEFAULT NULL,
    field_list       IN CLOB DEFAULT NULL,
    format           IN CLOB DEFAULT NULL
);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

credential_name

O nome da credencial usada para acessar os arquivos de dados, os arquivos de metadados e o Catálogo do Iceberg (se usado).

Para configurações do AWS e do OCI, a credencial deve ser criada conforme descrito no Procedimento CREATE_CREDENTIAL.

No momento, não há suporte para as credenciais do AWS ARN (Amazon Resource Names).

file_uri_list

Deve ser NULL se um catálogo Iceberg for especificado (consulte o parâmetro format abaixo). Se um catálogo de iceberg não for usado, o file_uri_list deverá conter o URI do arquivo de metadados do iceberg.

column_list

Deve ser NULL, pois os nomes e tipos de coluna são derivados automaticamente dos metadados Iceberg.

Os nomes de coluna correspondem aos nomes encontrados nos arquivos de dados subjacentes (Parquet, Avro, ORC). Os tipos de dados Oracle são derivados usando os mapeamentos Parquet/Avro/ORC entre os tipos de dados Iceberg e Parquet, Avro e ORC. Portanto, os usuários não podem especificar column_list.

field_list

Deve ser NULL, pois os nomes de coluna e os tipos de dados são derivados automaticamente dos metadados Iceberg.

format

O parâmetro format tem uma estrutura diferente, dependendo do tipo de tabela Iceberg, AWS ou OCI, e quais informações são usadas para criar a tabela externa, por exemplo, informações de um catálogo de dados ou de um URI de metadados direto.

Para obter exemplos e informações adicionais: consulte os exemplos abaixo, Suporte Iceberg a Amostras do OCI Data Flow, Formatos de URI DBMS_CLOUD.

Exemplo de tabelas AWS Iceberg usando um catálogo AWS Glue

O parâmetro format ao criar tabelas em uma tabela do AWS Iceberg usando um AWS Glue Catalog é o seguinte:

format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg',
                   'protocol_config' value
                    json_object('iceberg_catalog_type' value 'aws_glue',
                                'iceberg_glue_region'  value 'glue region',
                                'iceberg_table_path'   value 'database_name.table_name'))); 
Em que, o parâmetro access_protocol contém um objeto JSON com dois elementos da seguinte forma:
  • protocol_type: Deve ser 'iceberg'
  • protocol_config: Um objeto JSON aninhado que especifica os detalhes do catálogo do iceberg.
    • iceberg_catalog_type: Deve ser 'aws_glue'
    • iceberg_glue_region: A região do catálogo, por exemplo, 'us-west-1'
    • iceberg_table_path: Um caminho glue database.glue table name.

Exemplo de tabela AWS Iceberg usando um URI de arquivo de metadados

O parâmetro format ao criar tabelas em uma tabela do AWS Iceberg usando um URI de arquivo de metadados é o seguinte:
format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg')

Exemplo de tabela Iceberg do OCI usando o catálogo HadoopCatalog

O parâmetro format ao criar tabelas por meio de uma tabela Iceberg do OCI criada pelo OCI Data Flow usando o catálogo HadoopCatalog é o seguinte:
format => json_object('access_protocol' value
       json_object('protocol_type'   value 'iceberg',
                   'protocol_config' value
                   json_object('iceberg_catalog_type'  value 'hadoop',
                               'iceberg_warehouse'     value '<OCI folder URI>',
                               'iceberg_table_path'    value 'database_name.table_name')));
Em que, o parâmetro access_protocol contém um objeto JSON com dois elementos da seguinte forma:
  • protocol_type: Deve ser 'iceberg'
  • protocol_config: Um objeto JSON aninhado que especifica os detalhes do catálogo do iceberg.
    • iceberg_catalog_type: Deve ser 'hadoop'
    • iceberg_warehouse: O caminho do diretório do warehouse usado ao gerar a tabela, no formato de URI nativo.
    • iceberg_table_path: O caminho database_name.table name usado ao criar a tabela.

Exemplo de tabela Iceberg do OCI usando o URI do arquivo de metadados

O parâmetro format ao criar tabelas em uma tabela Iceberg do OCI usando o URI do arquivo de metadados é o seguinte:
format => json_object('access_protocol' value
       json_object('protocol_type' value 'iceberg')
Em que, o parâmetro access_protocol contém um objeto JSON com um elemento da seguinte forma:
  • protocol_type: Deve ser 'iceberg'

CREATE_EXTERNAL_TABLE Procedimento para Arquivos Avro, ORC ou Parquet

Esse procedimento com o parâmetro format type definido com o valor avro, orc ou parquet cria uma tabela externa com arquivos de formato Avro, ORC ou Parquet na Nuvem ou em um diretório.

Isso permite que você execute consultas em dados externos do Autonomous Database.

Sintaxe

DBMS_CLOUD.CREATE_EXTERNAL_TABLE (
    table_name       IN VARCHAR2,
    credential_name  IN VARCHAR2 DEFAULT NULL,
    file_uri_list    IN CLOB,
    column_list      IN CLOB,
    field_list       IN CLOB DEFAULT,
    format           IN CLOB DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Esse parâmetro não é usado quando você especifica um diretório com file_uri_list.

file_uri_list

Esse parâmetro especifica uma lista delimitada por vírgulas dos URIs de arquivo de origem ou um ou mais diretórios e arquivos de origem.

URIs do arquivo de origem da nuvem

Você pode usar curingas, bem como expressões regulares nos nomes de arquivo nos URIs de arquivo de origem da Nuvem.

As expressões regulares só podem ser usadas quando o parâmetro regexuri format está definido como TRUE.

Os caracteres "*" e "?" são considerados caracteres curinga quando o parâmetro regexuri é definido como FALSE. Quando o parâmetro regexuri é definido como TRUE, os caracteres "*" e "?" fazem parte do padrão de expressão regular especificado.

Padrões de expressão regulares só são suportados para o nome do arquivo ou caminho da subpasta em seus URIs e a correspondência de padrões é idêntica à executada pela função REGEXP_LIKE.

Essa opção só é suportada com tabelas externas criadas em um arquivo no Object Storage.

Por exemplo:

file_uri_list => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.parquet'

O formato dos URIs depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte DBMS_CLOUD Formatos de URI.

Consulte Condição REGEXP_LIKE para obter mais informações sobre a condição REGEXP_LIKE.

Diretório

Você pode especificar um diretório e um ou mais nomes de arquivo ou usar uma lista separada por vírgulas de diretórios e nomes de arquivo. O formato para especificar um diretório é:'MY_DIR:filename.ext'. Por padrão, o nome do diretório MY_DIR é um objeto de banco de dados e não faz distinção entre maiúsculas e minúsculas. O nome do arquivo diferencia maiúsculas de minúsculas.

Expressões regulares não são suportadas ao especificar os nomes de arquivo em um diretório. Você só pode usar curingas para especificar nomes de arquivo em um diretório. O caractere "*" pode ser usado como curinga para vários caracteres, e o caractere "?" pode ser usado como curinga para um único caractere. Por exemplo:'MY_DIR:*" ou 'MY_DIR:test?'

Para especificar vários diretórios, use uma lista separada por vírgulas de diretórios: Por exemplo:'MY_DIR1:*, MY_DIR2:test?'

use aspas duplas para especificar um nome de diretório com distinção entre maiúsculas e minúsculas. Por exemplo:'"my_dir1":*, "my_dir2":Test?'

Para incluir um caractere de aspas, use duas aspas. Por exemplo:'MY_DIR:''filename.ext'. Isso especifica que filename começa com uma cotação (').

column_list

(Opcional) Esse campo, quando especificado, substitui o parâmetro format->schema que especifica que o esquema, as colunas e os tipos de dados são derivados automaticamente. Consulte o parâmetro de formato para obter detalhes.

Quando column_list for especificado para a origem Avro, ORC ou Parquet, os nomes de coluna deverão corresponder às colunas encontradas no arquivo. Os tipos de dados Oracle devem ser mapeados corretamente para os tipos de dados Avro, ORC ou Parquet.

Para arquivos Parquet, consulte DBMS_CLOUD Mapeamento de Tipo de Dados Parquet para Oracle para obter detalhes.

Para arquivos ORC, consulte DBMS_CLOUD Mapeamento de Tipo de Dados do Pacote ORC para Oracle para obter detalhes.

Para arquivos Avro, consulte DBMS_CLOUD Mapeamento de Tipo de Dados Avro para Oracle do Pacote para obter detalhes.

field_list

Ignorado para arquivos Avro, ORC ou Parquet.

Os campos na origem correspondem às colunas da tabela externa por nome. os tipos de dados de origem são convertidos em tipo de dados de coluna de tabela externa.

Para arquivos ORC, consulte DBMS_CLOUD Mapeamento de Tipo de Dados ORC para Oracle do Pacote

Para arquivos Parquet, consulte DBMS_CLOUD Mapeamento de Tipo de Dados Parquet para Oracle para obter detalhes.

Para arquivos Avro, consulte DBMS_CLOUD Mapeamento de Tipo de Dados Avro para Oracle do Pacote para obter detalhes.

format

Para arquivos de origem type de Avro, ORC ou Parquet, consulte DBMS_CLOUD Opções de Formato do Pacote para Avro, ORC ou Parquet para obter detalhes.

Exemplos de ORC

format => '{"type":"orc", "schema": "all"}'
format => json_object('type' value 'orc', 'schema' value 'first')

Exemplos de Avro

format => '{"type":"avro", "schema": "all"}'
format => json_object('type' value 'avro', 'schema' value 'first')

Exemplos de Parquet

format => '{"type":"parquet", "schema": "all"}'
format => json_object('type' value 'parquet', 'schema' value 'first')

Mapeamento de Nome de Coluna Avro, ORC ou Parquet para Nomes de Coluna Oracle

Consulte DBMS_CLOUD Mapeamento de Nome de Coluna Avro, ORC e Parquet para Oracle do Pacote para obter informações sobre mapeamento de nome de coluna e uso de conversão de nome de coluna no Oracle SQL.

Procedimento CREATE_EXTERNAL_TEXT_INDEX

Este procedimento cria um índice de texto nos arquivos do Object Storage.

O procedimento CREATE_EXTERNAL_TEXT_INDEX cria índice de texto nos arquivos do serviço Object Storage especificados no local location_uri. O índice é atualizado em intervalos regulares, para quaisquer novas adições ou exclusões feitas com arquivos no URI do local.

Sintaxe

DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX (
      credential_name  IN  VARCHAR2 DEFAULT NULL,
      location_uri     IN  VARCHAR2,
      index_name       IN  VARCHAR2,
      format           IN  CLOB     DEFAULT NULL
);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o local do Cloud Object Storage. Para URIs de bucket públicos, pré-autenticados ou pré-assinados, um NULL pode ser especificado.

Consulte Configurar Políticas e Atribuições para Acessar Recursos para obter mais informações.

Se você não fornecer um valor credential_name, credential_name será definido como um valor NULL.

location_uri

Especifica o bucket do Object Store ou o URI da pasta.

Este parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

index_name Especifica o nome do índice que você está construindo nos arquivos localizados no local location_uri.

Este parâmetro é obrigatório.

format

Especifica opções de configuração adicionais. As opções são especificadas como uma string JSON.

As opções de formato suportadas são:

refresh_rate: Especifica a frequência em minutos na qual o índice local é atualizado. Novos uploads e exclusões de arquivos resultam em uma atualização de índice. O valor default é 5 minutos.

binary_files: Especifica se o conteúdo dos arquivos a serem indexados é binário. Por exemplo, PDF, MS-Word, O valor padrão é FALSE.

json_index: Especifica se o conteúdo dos arquivos a serem indexados é JSON ou JSON de linha. O valor padrão é FALSE.

json_index_doc_sep: Especifica o separador usado para pré-processar documentos JSON de linha. O valor padrão é '\n' (nova linha).

json_index_doc_len: Especifica o tamanho de cada documento JSON no objeto. O valor padrão é 32767 e o valor máximo é 200000.

file_compression: Especifica o formato de compactação dos arquivos JSON. O valor padrão é gzip.

stop_words: Especifica uma lista de palavras de interrupção que podem ser fornecidas quando você cria índices.

O valor stop_words indica se é uma lista de palavras de interrupção ou uma tabela de palavras de interrupção. Quando um array JSON é fornecido, o parâmetro de palavras de interrupção é tratado como uma lista; caso contrário, o parâmetro de palavras de interrupção é tratado como um nome de tabela cuja coluna "STOP_WORDS" é usada para ler na lista de palavras de interrupção.

Você pode especificar palavras de interrupção usando os seguintes métodos:

  • Array JSON: Por exemplo: format := '{"stop_words":["king","queen"]}'
  • Nome da tabela de palavras de interrupção: Por exemplo: format := '{"stop_words":"STOP_WORDS_TABLE"}'

Se você não fornecer um parâmetro format, o format será definido como um valor NULL.

Exemplo

BEGIN 
DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX (
        credential_name => 'DEFAULT_CREDENTIAL',
        location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/ts_data/'
        index_name      => 'EMP',
        format          => JSON_OBJECT ('refresh_rate' value 10)
);
END;
/

CREATE_HYBRID_PART_TABLE Procedimento

Esse procedimento cria uma tabela particionada híbrida. Isso permite executar consultas em dados particionados híbridos do Autonomous Database usando objetos e arquivos de banco de dados na Nuvem ou objetos e arquivos de banco de dados em um diretório.

Sintaxe

DBMS_CLOUD.CREATE_HYBRID_PART_TABLE (
    table_name           IN VARCHAR2,
    credential_name      IN VARCHAR2,
    partitioning_clause  IN CLOB,
    column_list          IN CLOB,
    field_list           IN CLOB DEFAULT,
    format               IN CLOB DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

partitioning_clause

Especifica a cláusula de partição completa, incluindo as informações de localização para partições individuais.

Para usar diretórios, a cláusula de particionamento suporta os valores LOCATION e DEFAULT DIRECTORY.

Você pode usar curingas, bem como expressões regulares nos nomes de arquivo nos URIs de arquivo de origem da Nuvem.

As expressões regulares só podem ser usadas quando o parâmetro regexuri format está definido como TRUE.

Os caracteres "*" e "?" são considerados caracteres curinga quando o parâmetro regexuri é definido como FALSE. Quando o parâmetro regexuri é definido como TRUE, os caracteres "*" e "?" fazem parte do padrão de expressão regular especificado.

Padrões de expressão regulares só são suportados para o nome do arquivo ou caminho da subpasta em seus URIs e a correspondência de padrões é idêntica à executada pela função REGEXP_LIKE. Padrões de expressão regular não são suportados para nomes de diretório.

Por exemplo:

partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) external location
				    ( ''https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o(/)*year=[0-9]+(/)*month=[0-9]+(/)*[a-z]+[1-3]??.txt''),….

Consulte Condição REGEXP_LIKE para obter mais informações sobre a condição REGEXP_LIKE.

column_list

Lista delimitada por vírgulas de nomes de colunas e tipos de dados para a tabela externa.

field_list

Identifica os campos nos arquivos de origem e seus tipos de dados. O valor padrão é NULL, o que significa que os campos e seus tipos de dados são determinados pelo parâmetro column_list. A sintaxe desse argumento é a mesma da cláusula field_list nas tabelas externas regulares do sistema Oracle. Para obter mais informações sobre field_list consulte Oracle® Database Utilities.

format

As opções que descrevem o formato dos arquivos de origem. Para ver a lista de opções e saber como especificar os valores, consulte DBMS_CLOUD Package Format Options.

Observações de Uso

  • O procedimento DBMS_CLOUD.CREATE_HYBRID_PART_TABLE suporta arquivos particionados externos nos serviços de armazenamento de objetos na nuvem suportados, que incluem:

    • Oracle Cloud Infrastructure Object Storage

    • Azure Blob Storage ou Azure Data Lake Storage

    • Amazon S3

    • Compatível com Amazon S3, incluindo: Oracle Cloud Infrastructure Object Storage, Google Cloud Storage e Wasabi Hot Cloud Storage.

    • GitHub Repositório

    A credencial é uma propriedade em nível de tabela; portanto, os arquivos externos devem estar no mesmo armazenamento de objetos.

    Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

  • O procedimento DBMS_CLOUD.CREATE_HYBRID_PART_TABLE suporta arquivos particionados híbridos em diretórios, seja em um sistema de arquivos local ou em um sistema de arquivos de rede.

  • As tabelas particionadas externas criadas com DBMS_CLOUD.CREATE_HYBRID_PART_TABLE incluem duas colunas invisíveis file$path e file$name. Essas colunas ajudam a identificar de qual arquivo um registro está vindo.

    • file$path: Especifica o texto do caminho do arquivo até o início do nome do objeto.

    • file$name: Especifica o nome do objeto, incluindo todo o texto que segue o nome do bucket.

Exemplos

BEGIN  
   DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
      table_name =>'HPT1',  
      credential_name =>'OBJ_STORE_CRED',  
      format => json_object('delimiter' value ',', 'recorddelimiter' value 'newline', 'characterset' value 'us7ascii'),  
      column_list => 'col1 number, col2 number, col3 number',
      partitioning_clause => 'partition by range (col1)
                                (partition p1 values less than (1000) external location
                                    ( ''&base_URL/file_11.txt'')
                                 ,
                                 partition p2 values less than (2000) external location
                                    ( ''&base_URL/file_21.txt'')
                                 ,
                                 partition p3 values less than (3000)
                                 )'
     );
   END;
/ 


BEGIN
   DBMS_CLOUD.CREATE_HYBRID_PART_TABLE(
    table_name  => 'HPT1',
    format      => json_object('delimiter'value ',', 'recorddelimiter'value 'newline'),
    column_list => 'NAME VARCHAR2(30), GENDER VARCHAR2(10), BALANCE number',
    partitioning_clause => 'partition by range (B  2  ALANCE)
               (partition p1 values less than (1000) external DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION (''Scott_male_1000.csv''),
                partition p2 values less than (2000) external DEFAULT DIRECTORY DATA_PUMP_DIR LOCATION (''Mary_female_3000.csv''),
                partition p3 values less than (3000))' );
END;
/

Procedimento DELETE_ALL_OPERATIONS

Este procedimento limpa todas as operações de carregamento de dados registradas na tabela user_load_operations do seu esquema ou limpa todas as operações de carregamento de dados do tipo especificado, conforme indicado com o parâmetro type.

Sintaxe

DBMS_CLOUD.DELETE_ALL_OPERATIONS (
	type      IN VARCHAR DEFAULT NULL);

Parâmetros

Parâmetro Descrição

type

Especifica o tipo de operação a ser excluída. Valores de tipo podem ser encontrados na coluna TYPE na tabela user_load_operations.

Se nenhum type for especificado, todas as linhas serão excluídas.

Observações de Uso

  • Este procedimento não exclui operações em execução no momento (operações com status "Em Execução").

  • Este procedimento exclui todas as tabelas de log e arquivos de log associados às operações.

DELETE_FILE Procedimento

Este procedimento remove o arquivo especificado do diretório indicado no Autonomous Database.

Sintaxe

 DBMS_CLOUD.DELETE_FILE ( 
       directory_name     IN VARCHAR2,
       file_name          IN VARCHAR2,
       force              IN BOOLEAN DEFAULT FALSE); 

Parâmetros

Parâmetro Descrição

directory_name

O nome do diretório na instância do Autonomous Database.

file_name

O nome do arquivo a ser removido.

force

Ignore e não reporte erros se o arquivo não existir. Os valores válidos são: TRUE e FALSE. O valor padrão é FALSE.

Observação

Para executar DBMS_CLOUD.DELETE_FILE com um usuário diferente de ADMIN, você precisa conceder privilégios de gravação no diretório que contém o arquivo para esse usuário. Por exemplo, execute o seguinte comando como ADMIN para conceder privilégios de gravação a adb_user:
GRANT WRITE ON DIRECTORY data_pump_dir TO adb_user;

Exemplo

BEGIN
   DBMS_CLOUD.DELETE_FILE(
      directory_name =>  'DATA_PUMP_DIR',
      file_name => 'exp1.dmp' );
   END;
/ 

Procedimento DELETE_OBJECT

Este procedimento exclui o objeto especificado no armazenamento de objetos.

Sintaxe

DBMS_CLOUD.DELETE_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       force                IN BOOLEAN DEFAULT FALSE);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

object_uri

Objeto ou URI do arquivo para o objeto a ser excluído. O formato do URI depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte DBMS_CLOUD Formatos de URI.

force

Ignore e não reporte erros se o objeto não existir. Os valores válidos são: TRUE e FALSE. O valor padrão é FALSE.

Exemplo

BEGIN
   DBMS_CLOUD.DELETE_OBJECT(
       credential_name => 'DEF_CRED_NAME',
       object_uri => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.dmp' );
   END;
/ 

Procedimento DELETE_OPERATION

Este procedimento limpa as entradas de carga de dados para o ID de operação especificado registrado nas tabelas user_load_operations ou dba_load_operations no seu esquema.

Sintaxe

DBMS_CLOUD.DELETE_OPERATION (
	id      IN NUMBER);

Parâmetros

Parâmetro Descrição

id

Especifica o ID da operação associado às entradas do arquivo de log que você deseja excluir.

Nota de Uso

  • Este procedimento exclui todas as tabelas de log e arquivos de log associados ao ID de operação especificado na entrada.

Exemplo

SELECT id FROM user_load_operations WHERE type LIKE '%BAD%';
EXEC DBMS_CLOUD.DELETE_OPERATION(id);

Procedimento DROP_EXTERNAL_TEXT_INDEX

Este procedimento elimina o índice de texto nos arquivos do Object Storage.

O procedimento DROP_EXTERNAL_TEXT_INDEX elimina o índice especificado criado com o procedimento CREATE_EXTERNAL_TEXT_INDEX.

Sintaxe

DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
      index_name       IN  VARCHAR2,
);

Parâmetros

Parâmetro Descrição
index_name

Especifica o nome do índice que você está eliminando.

O nome do índice deve corresponder ao nome fornecido no momento da criação do índice.

Este parâmetro é obrigatório.

Exemplo

BEGIN 
DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
        index_name => 'EMP',
);
END;
/

Procedimento EXPORT_DATA

Esse procedimento exporta dados do Autonomous Database com base no resultado de uma consulta. Este procedimento é sobrecarregado e suporta a gravação de arquivos na nuvem ou em um diretório.

Com base no parâmetro format type, o procedimento exporta arquivos para a Nuvem ou para um local de diretório como arquivos de texto no formato CSV, JSON, Parquet ou XML ou usando o driver de acesso ORACLE_DATAPUMP para gravar dados em um arquivo de dump do Oracle Datapump.

Sintaxe

DBMS_CLOUD.EXPORT_DATA (
      credential_name   IN VARCHAR2 DEFAULT NULL,
      file_uri_list     IN CLOB,
      format            IN CLOB,
      query             IN CLOB);

DBMS_CLOUD.EXPORT_DATA (
      credential_name   IN VARCHAR2 DEFAULT NULL,
      file_uri_list     IN CLOB DEFAULT NULL,
      format            IN CLOB DEFAULT NULL,
      query             IN CLOB DEFAULT NULL,
      operation_id      OUT NOCOPY NUMBER);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Quando o parâmetro de credencial não é incluído, isso especifica a saída para um diretório.

file_uri_list

Existem diferentes formulários, dependendo do valor do parâmetro de formato e se você incluir um parâmetro de credencial:
  • Quando o valor type do parâmetro format é json: O JSON no Armazenamento de Objetos ou a localização do diretório especificado é salvo com um nome de arquivo gerado com base no valor do parâmetro file_uri_list. Consulte Nomenclatura de Arquivo para Saída de Texto (CSV, JSON, Parquet ou XML) para obter mais informações.

  • Quando o valor datapump do parâmetro format é type, file_uri_list é uma lista delimitada por vírgulas dos arquivos de dump. Isso especifica os arquivos a serem criados no Armazenamento de Objetos. o uso de caracteres curinga e de substituição não é suportado no file_uri_list.

  • Quando o parâmetro credential_name não for especificado, forneça um nome de diretório em file_uri_list.

O formato dos URIs depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte DBMS_CLOUD Formatos de URI.

format

Uma string JSON que fornece opções de formato de exportação.

A opção suportada é:

  • type: A opção type format é obrigatória e deve ter um dos valores: csv | datapump | json | parquet | xml.

Consulte DBMS_CLOUD Package Format Options for EXPORT_DATA.

query

Use esse parâmetro para especificar uma instrução SELECT para que apenas os dados necessários sejam exportados. A consulta determina o conteúdo dos arquivos exportados como arquivos de texto CSV, JSON, Parquet ou XML ou como arquivos de dump. Por exemplo:

SELECT warehouse_id, quantity FROM inventories

Para obter informações com o formato type valor datapump, consulte Filtros de Dados de Exportação do Oracle Data Pump e Descarregando e Carregando Dados com o Driver de Acesso ORACLE_DATAPUMP para obter mais informações.

Quando o valor format type é json, cada resultado de consulta é verificado e, se não for JSON, conforme determinado com a função JSON_OBJECT_T.parse(), o DBMS_CLOUD.EXPORT_DATA transformará a consulta para incluir a função JSON_OBJECT para converter a linha em JSON. Consulte JSON_OBJECT_T Tipo de Objeto para obter mais informações.

Por exemplo:

SELECT JSON_OBJECT(* RETURNING CLOB) from(SELECT warehouse_id, quantity FROM inventories)

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de exportação como ID correspondente na view USER_LOAD_OPERATIONS.

Observações de Uso:

  • O valor do parâmetro query fornecido pode ser uma consulta avançada, se necessário, como uma consulta que inclui junções ou subconsultas.

  • Dependendo do parâmetro de formato especificado, o DBMS_CLOUD.EXPORT_DATA gera os resultados da consulta especificada no Armazenamento de Objetos na Nuvem ou em um local de diretório em um destes formatos:

  • Para saída CSV, JSON ou XML, por padrão, quando um arquivo gerado contém 10 MB de dados, um novo arquivo de saída é criado. No entanto, se você tiver menos de 10 MB de dados de resultado, poderá ter vários arquivos de saída, dependendo do serviço de banco de dados e do número de ECPUs (OCPUs, se o seu banco de dados usar OCPUs) da instância do Autonomous Database.

    Consulte Nomenclatura de Arquivo para Saída de Texto (CSV, JSON, Parquet ou XML) para obter mais informações.

    O tamanho do arquivo de saída padrão é 10 MB para CSV, JSON ou XML. Você pode alterar esse valor com a opção maxfilesize do parâmetro format. Consulte DBMS_CLOUD Package Format Options para EXPORT_DATA para obter mais informações.

  • Para saída Parquet, cada arquivo gerado tem menos de 128 MB e vários arquivos de saída podem ser gerados. No entanto, se você tiver menos de 128 MB de dados de resultado, poderá ter vários arquivos de saída, dependendo do serviço de banco de dados e do número de ECPUs (OCPUs, se o seu banco de dados usar OCPUs) da instância do Autonomous Database.

    Consulte Nomenclatura de Arquivo para Saída de Texto (CSV, JSON, Parquet ou XML) para obter mais informações.

Observações de Uso para a Saída ORACLE_DATAPUMP (DBMS_CLOUD.EXPORT_DATA com o parâmetro format type opção datapump):

  • EXPORT_DATA usa DATA_PUMP_DIR como o diretório de log padrão. Portanto, o privilégio de gravação em DATA_PUMP_DIR é necessário ao usar a saída ORACLE_DATAPUMP.

  • A exportação do Autonomous Database usando DBMS_CLOUD.EXPORT_DATA com o parâmetro format, a opção type, datapump só suporta os armazenamentos de objetos Oracle Cloud Infrastructure Object Storage, Oracle Cloud Infrastructure Object Storage Classic ou a saída de diretório.

  • Quando você especifica DBMS_CLOUD.EXPORT_DATA com a opção type do parâmetro format datapump, o valor do parâmetro credential_name não pode ser um controlador de recursos do OCI.

  • O Oracle Data Pump divide cada parte do arquivo de dump em chunks menores para a obtenção de uploads mais rápidos. A console do Oracle Cloud Infrastructure Object Storage mostra vários arquivos para cada parte do arquivo de dump que você exporta. O tamanho dos arquivos de dump reais será exibido como 0 (zero) e seus chunks de arquivos relacionados como 10 MB ou menos. Por exemplo:
    exp01.dmp
    exp01.dmp_aaaaaa
    exp02.dmp
    exp02.dmp_aaaaaa
    O download do arquivo de dump de zero byte na console do Oracle Cloud Infrastructure ou usando a CLI do Oracle Cloud Infrastructure não fornecerá a você os arquivos de dump completos. Para fazer download dos arquivos de dump completos do Object Store, use uma ferramenta que suporte Swift, como curl, e forneça seu log-in de usuário e token de autenticação Swift.
    curl -O -v -X GET -u 'user1@example.com:auth_token' \
       https://swiftobjectstorage.us-ashburn-1.oraclecloud.com/v1/namespace-string/bucketname/exp01.dmp

    Se você importar um arquivo com os procedimentos DBMS_CLOUD que suportam o parâmetro format type com o valor 'datapump', só será necessário fornecer o nome do arquivo principal. Os procedimentos que suportam o tipo de formato 'datapump' descobrem e fazem download automaticamente dos chunks.

    Quando você usa DBMS_CLOUD.DELETE_OBJECT, o procedimento descobre e exclui automaticamente os chunks quando o procedimento exclui o arquivo principal.

  • O procedimento DBMS_CLOUD.EXPORT_DATA cria o(s) arquivo(s) de dump com base nos valores file_uri_list especificados por você, da seguinte maneira:

    • Conforme mais arquivos são necessários, o procedimento cria arquivos adicionais usando file_uri_list.

    • O procedimento não substitui arquivos. Se um arquivo de dump no file_uri_list existir, o DBMS_CLOUD.EXPORT_DATA reportará um erro.

    • O DBMS_CLOUD.EXPORT_DATA não cria buckets.

  • O número de arquivos de dump que o DBMS_CLOUD.EXPORT_DATA gera é determinado quando o procedimento é executado. O número de arquivos de dump gerados depende do número de nomes de arquivos fornecidos no parâmetro file_uri_list, bem como do número de OCPUs do Autonomous Database disponíveis para a instância, do nível de serviço e do tamanho dos dados.

    Por exemplo, se você usar uma instância do Autonomous Database com 1 OCPU ou o serviço low, um único arquivo de dump será exportado sem paralelismo, mesmo que você forneça vários nomes de arquivo. Se você usar uma instância do Autonomous Database com 4 OCPUs com o serviço medium ou high, os jobs poderão ser executados em paralelo e vários arquivos de dump serão exportados se você fornecer vários nomes de arquivo.

  • Os arquivos de dump criados com DBMS_CLOUD.EXPORT_DATA não podem ser importados usando o impdp do Oracle Data Pump. Dependendo do banco de dados, você pode usar esses arquivos da seguinte forma:

    • Em um Autonomous Database, você pode usar os arquivos de dump com os procedimentos DBMS_CLOUD que suportam o parâmetro format type com o valor 'datapump'. Você pode importar os arquivos de dump usando DBMS_CLOUD.COPY_DATA ou pode chamar DBMS_CLOUD.CREATE_EXTERNAL_TABLE para criar uma tabela externa.

    • Em qualquer outro Oracle Database, como o Oracle Database 19c on-premises, você pode importar os arquivos de dump criados com o procedimento DBMS_CLOUD.EXPORT_DATA usando o driver de acesso ORACLE_DATAPUMP. Consulte Unloading and Loading Data with the ORACLE_DATAPUMP Access Driver para obter mais informações.

  • O valor do parâmetro query fornecido pode ser uma consulta avançada, se necessário, como uma consulta que inclui junções ou subconsultas.

Observações de Uso de DBMS_CLOUD.EXPORT_DATA com Saída para um Diretório

  • O diretório fornecido deve existir e você deve estar conectado como o usuário ADMIN ou ter acesso WRITE ao diretório.

  • O DBMS_CLOUD.EXPORT_DATA não cria diretórios.

  • O procedimento não substitui arquivos. Por exemplo, se um arquivo de dump no file_uri_list existir, o DBMS_CLOUD.EXPORT_DATA reportará um erro como:

    ORA-31641: unable to create dump file  "/u02/exports/123.dmp"
    ORA-27038: created file already exists

Exemplos

O exemplo a seguir mostra DBMS_CLOUD.EXPORT_DATA com o parâmetro de formato type com o valor datapump:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name =>'OBJ_STORE_CRED',
      file_uri_list =>'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.dmp',
      format => json_object('type' value 'datapump', 'compression' value 'basic', 'version' value 'latest'),
      query => 'SELECT warehouse_id, quantity FROM inventories'
     );
   END;
/  

Neste exemplo, namespace-string corresponde ao namespace do armazenamento de objetos do Oracle Cloud Infrastructure e bucketname corresponde ao nome do bucket. Consulte Noções Básicas de Namespaces do serviço Object Storage para obter mais informações.

O exemplo a seguir mostra DBMS_CLOUD.EXPORT_DATA com o parâmetro de formato type com o valor json:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.json', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'json', 'compression' value 'gzip'));
     );
   END;
/  

O exemplo a seguir mostra DBMS_CLOUD.EXPORT_DATA com o parâmetro de formato type com o valor xml:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp1.xml', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'xml', 'compression' value 'gzip'));
     );
   END;
/

O exemplo a seguir mostra DBMS_CLOUD.EXPORT_DATA com o parâmetro de formato type com o valor csv:

BEGIN  
   DBMS_CLOUD.EXPORT_DATA(
      credential_name => 'OBJ_STORE_CRED',
      file_uri_list   => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/exp.csv', 
      query           => 'SELECT * FROM DEPT',
      format          => JSON_OBJECT('type' value 'csv', 'delimiter' value '|', 'compression' value 'gzip', 'header' value true, 'encryption' value ('user_defined_function' value 'ADMIN.decryption_callback')));
     );
   END;
/  

O exemplo a seguir mostra DBMS_CLOUD.EXPORT_DATA exportando dados para um local de diretório com o parâmetro type com o valor datapump:

BEGIN
 DBMS_CLOUD.EXPORT_DATA(
    file_uri_list => 'export_dir:sales.dmp',
    format        => json_object('type' value 'datapump'),
    query         => 'SELECT * FROM sales'
 );
END;
/

GET_OBJECT Procedimento e Função

Este procedimento é sobrecarregado. O form de procedimento lê um objeto do Cloud Object Storage e o copia para o Autonomous Database. O form de função lê um objeto do Cloud Object Storage e retorna um BLOB para o Autonomous Database.

Sintaxe

DBMS_CLOUD.GET_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       directory_name       IN VARCHAR2,
       file_name            IN VARCHAR2 DEFAULT  NULL,
       startoffset          IN NUMBER DEFAULT  0,
       endoffset            IN NUMBER DEFAULT  0,
       compression          IN VARCHAR2 DEFAULT  NULL);


DBMS_CLOUD.GET_OBJECT(
       credential_name      IN VARCHAR2 DEFAULT NULL,
       object_uri           IN VARCHAR2,
       startoffset          IN NUMBER DEFAULT  0,
       endoffset            IN NUMBER DEFAULT  0,
       compression          IN VARCHAR2 DEFAULT  NULL)
RETURN BLOB;

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

object_uri

URI do objeto ou do arquivo. O formato do URI depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte DBMS_CLOUD Formatos de URI.

directory_name

O nome do diretório no banco de dados.

Pé 1
Você pode usar um URL de Hiperlink de Tabela das seguintes maneiras:
  • Especifique um único URL de Hiperlink de Tabela do Autonomous Database.

  • Especifique uma lista delimitada por vírgulas de URLs de Hiperlinks de Tabela do Autonomous Database. Certifique-se de que todos os Hiperlinks de Tabela incluídos tenham os mesmos nomes de coluna, ordem de coluna e tipos de dados de coluna no mesmo esquema.

Consulte Sobre Hiperlinks de Tabela no Autonomous Database e Procedimento GET_PREAUTHENTICATED_URL para obter mais informações.

file_name

Especifica o nome do arquivo a ser criado. Se o nome do arquivo não for especificado, o nome do arquivo será obtido após a última barra no parâmetro object_uri. Para casos especiais, por exemplo, quando o nome do arquivo contiver barras, use o parâmetro file_name.

startoffset

O deslocamento, em bytes, de onde o procedimento inicia a leitura.

endoffset

O deslocamento, em bytes, até onde o procedimento interrompe a leitura.

compression

Especifica a compactação usada para armazenar o objeto. Quando o parâmetro compression é definido como ‘AUTO’, o arquivo é descompactado (o valor ‘AUTO’ implica que o objeto especificado com object_uri é compactado com Gzip).

Nota de rodapé 1

Observação

Para executar DBMS_CLOUD.GET_OBJECT com um usuário diferente de ADMIN, você precisa conceder privilégios WRITE no diretório a esse usuário. Por exemplo, execute o seguinte comando como ADMIN para conceder privilégios de gravação a adb_user:

GRANT WRITE ON DIRECTORY data_pump_dir TO adb_user;

Retornar Valores

O form de função é lido no Armazenamento de Objetos e DBMS_CLOUD.GET_OBJECT retorna um BLOB.

Exemplos

BEGIN 
   DBMS_CLOUD.GET_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file.txt',
     directory_name => 'DATA_PUMP_DIR'); 
END;
/

Para ler dados de caracteres de um arquivo no Armazenamento de Objetos:

SELECT to_clob(
     DBMS_CLOUD.GET_OBJECT(
       credential_name => 'OBJ_STORE_CRED',
       object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/file.txt'))
FROM DUAL;

Para adicionar uma imagem armazenada no Armazenamento de Objetos em um BLOB no banco de dados:


DECLARE
   l_blob BLOB := NULL;
BEGIN
   l_blob := DBMS_CLOUD.GET_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/MyImage.gif' );
END;
/

Neste exemplo, namespace-string corresponde ao namespace do armazenamento de objetos do Oracle Cloud Infrastructure e bucketname corresponde ao nome do bucket. Consulte Noções Básicas de Namespaces do serviço Object Storage para obter mais informações.

Função LIST_FILES

Esta função lista os arquivos no diretório especificado. Os resultados incluem os nomes de arquivos e metadados adicionais sobre os arquivos, como tamanho do arquivo em bytes, timestamp de criação e o último timestamp de modificação.

Sintaxe

DBMS_CLOUD.LIST_FILES (
	directory_name      IN VARCHAR2)
       RETURN TABLE;

Parâmetros

Parâmetro Descrição

directory_name

O nome do diretório no banco de dados.

Observações de Uso

  • Para executar DBMS_CLOUD.LIST_FILES com um usuário diferente de ADMIN, conceda privilégios de leitura no diretório a esse usuário. Por exemplo, execute o seguinte comando como ADMIN para conceder privilégios de leitura a adb_user:

    GRANT READ ON DIRECTORY data_pump_dir TO adb_user;
  • Essa é uma função de tabela em pipeline com tipo de retorno como DBMS_CLOUD_TYPES.list_object_ret_t.

  • O DBMS_CLOUD.LIST_FILES não obtém o valor da soma de verificação e retorna NULL para esse campo.

Exemplo

Essa é uma função em pipeline que retorna uma linha para cada arquivo. Por exemplo, use a consulta a seguir para usar esta função:

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

OBJECT_NAME       BYTES   CHECKSUM      CREATED              LAST_MODIFIED
------------ ---------- ----------    ---------------------  ---------------------
cwallet.sso        2965               2018-12-12T18:10:47Z   2019-11-23T06:36:54Z

LIST_OBJECTS Função

Esta função lista objetos no local especificado no armazenamento de objetos. Os resultados incluem os nomes de objetos e metadados adicionais sobre os objetos, como tamanho, soma de verificação, timestamp de criação e o último timestamp de modificação.

Sintaxe

DBMS_CLOUD.LIST_OBJECTS (
       credential_name      IN VARCHAR2,
       location_uri         IN VARCHAR2)
   RETURN TABLE;

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

location_uri

URI do objeto ou do arquivo. O formato do URI depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte DBMS_CLOUD Formatos de URI.

Observações de Uso

  • Dependendo dos recursos do armazenamento de objetos, o DBMS_CLOUD.LIST_OBJECTS não retorna valores para determinados atributos e o valor de retorno do campo é NULL nesse caso.

    Todos os Armazenamentos de Objetos suportados retornam valores para os campos OBJECT_NAME, BYTES e CHECKSUM.

    A tabela a seguir mostra o suporte para os campos CREATED e LAST_MODIFIED pelo Armazenamento de Objetos:

    Armazenamento de Objetos CREATED LAST_MODIFIED
    Nativo do Oracle Cloud Infrastructure Retorna o timestamp Retorna o timestamp
    Swift da Oracle Cloud Infrastructure Retorna NULL Retorna o timestamp
    Oracle Cloud Infrastructure Classic Retorna NULL Retorna o timestamp
    Amazon S3 Retorna NULL Retorna o timestamp
    Compatível com Amazon S3 Retorna NULL Retorna o timestamp
    Azure Retorna o timestamp Retorna o timestamp
    GitHub Repositório    
  • O valor da soma de verificação é a soma de verificação MD5. Esse é um número sextavado de 32 caracteres que é calculado no conteúdo do objeto. Espera-se que ele tenha um valor de soma de verificação diferente se a credencial OCI$RESOURCE_PRINCIPAL for usada.

  • Essa é uma função de tabela em pipeline com tipo de retorno como DBMS_CLOUD_TYPES.list_object_ret_t.

Exemplo

Essa é uma função em pipeline que retorna uma linha para cada objeto. Por exemplo, use a consulta a seguir para usar esta função:

SELECT * FROM DBMS_CLOUD.LIST_OBJECTS('OBJ_STORE_CRED', 
    'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/');


OBJECT_NAME   BYTES              CHECKSUM                       CREATED         LAST_MODIFIED
------------ ---------- -------------------------------- --------------------- --------------------
cwallet.sso   2965      2339a2731ba24a837b26d344d643dc07 2019-11-23T06:36:54Z          

Neste exemplo, namespace-string corresponde ao namespace do armazenamento de objetos do Oracle Cloud Infrastructure e bucketname corresponde ao nome do bucket. Consulte Noções Básicas de Namespaces do serviço Object Storage para obter mais informações.

Procedimento MOVE_OBJECT

Este procedimento move um objeto de um bucket ou pasta do Cloud Object Storage para outro.

O bucket ou pasta de origem e destino pode estar no mesmo provedor de armazenamento do Cloud Object ou em outro provedor.

Quando a origem e o destino estão em Armazenamentos de Objetos distintos ou têm contas diferentes com o mesmo provedor de nuvem, você pode fornecer nomes de credenciais separados para os locais de origem e destino.

Por padrão, o nome da credencial de origem também é usado pelo local de destino quando o nome da credencial de destino não é fornecido.

Sintaxe

DBMS_CLOUD.MOVE_OBJECT (
    source_credential_name  IN  VARCHAR2 DEFAULT NULL,
    source_object_uri       IN  VARCHAR2,
    target_object_uri       IN  VARCHAR2,
    target_credential_name  IN  VARCHAR2 DEFAULT NULL
);

Parâmetros

Parâmetro Descrição

source_credential_name

O nome da credencial para acessar o Cloud Object Storage de origem.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Se você não fornecer um valor source_credential_name, credential_name será definido como NULL.

source_object_uri

Especifica o URI, que aponta para a localização do bucket ou da pasta do Object Storage de origem.

Este parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

target_object_uri

Especifica o URI do bucket ou pasta do Object Storage de destino, onde os arquivos precisam ser movidos.

Este parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

target_credential_name

O nome da credencial para acessar o local de destino do Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Se você não fornecer um valor target_credential_name, target_object_uri será definido como o valor source_credential_name.

Exemplo

BEGIN 
DBMS_CLOUD.MOVE_OBJECT (
    source_credential_name => 'OCI_CRED',
    source_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/bgfile.csv',
    target_object_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/myfile.csv'
);
END;
/

Procedimento PUT_OBJECT

Este procedimento é sobrecarregado. De uma forma, o procedimento copia um arquivo do Autonomous Database para o Cloud Object Storage. De outra, o procedimento copia um BLOB do Autonomous Database para o Cloud Object Storage.

Sintaxe

DBMS_CLOUD.PUT_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       directory_name       IN VARCHAR2,
       file_name            IN VARCHAR2
       compression          IN VARCHAR2 DEFAULT  NULL);


DBMS_CLOUD.PUT_OBJECT (
       credential_name      IN VARCHAR2,
       object_uri           IN VARCHAR2,
       contents             IN BLOB
       compression          IN VARCHAR2 DEFAULT  NULL);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

object_uri

URI do objeto ou do arquivo. O formato do URI depende do serviço Cloud Object Storage que você está usando. Para obter detalhes, consulte DBMS_CLOUD Formatos de URI.

directory_name

O nome do diretório no Autonomous Database.

Pé 2

contents

Especifica o BLOB a ser copiado do Autonomous Database para o Cloud Object Storage.

file_name

O nome do arquivo no diretório especificado.

compression

Especifica a compactação usada para armazenar o objeto.

Valor padrão: NULL

Nota de rodapé 2

Observação

Para executar DBMS_CLOUD.PUT_OBJECT com um usuário diferente de ADMIN, você precisa conceder privilégios de leitura no diretório a esse usuário. Por exemplo, execute o seguinte comando como ADMIN para conceder privilégios de leitura a adb_user:

GRANT READ ON DIRECTORY data_pump_dir TO adb_user;

Exemplo

Para tratar dados BLOB após o processamento no banco de dados e, em seguida, armazenar os dados diretamente em um arquivo no armazenamento de objetos:

DECLARE
      my_blob_data BLOB;
BEGIN 
 /* Some processing producing BLOB data and populating my_blob_data */
DBMS_CLOUD.PUT_OBJECT(
     credential_name => 'OBJ_STORE_CRED',
     object_uri => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/my_new_file',
     contents => my_blob_data)); 
END;
/

Observações de Uso

Dependendo do Cloud Object Storage, o tamanho do objeto transferido é limitado da seguinte forma:

Serviço Cloud Object Storage Limite de Tamanho de Transferência de Objeto

Oracle Cloud Infrastructure Object Storage

50 GB

Amazon S3

5 GB

Azure Blob Storage ou Azure Data Lake Storage

256 MB

Compatível com Amazon S3

Definido pelo provedor de armazenamento de objetos. Para obter mais informações, consulte a documentação do provedor.

O armazenamento de objetos do Oracle Cloud Infrastructure não permite gravar arquivos em um bucket público sem fornecer credenciais (o Oracle Cloud Infrastructure permite que os usuários façam download de objetos de buckets públicos). Portanto, você deve fornecer um nome de credencial com credenciais válidas para armazenar um objeto em um bucket público do Oracle Cloud Infrastructure usando PUT_OBJECT.

Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

Procedimento SYNC_EXTERNAL_PART_TABLE

Esse procedimento simplifica a atualização de uma tabela particionada externa de arquivos na Nuvem. Execute esse procedimento sempre que novas partições forem adicionadas ou quando as partições forem removidas da origem de Armazenamento de Objetos da tabela particionada externa.

Sintaxe

DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE (
	table_name        IN VARCHAR2,
	schema_name       IN VARCHAR2 DEFAULT,
	update_columns    IN BOOLEAN DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela de destino. É necessário criar a tabela de destino antes de executar DBMS_CLOUD.SYNC_EXTERNAL_PART_TABLE.

schema_name

O nome do esquema em que a tabela de destino reside. O valor padrão é NULL, o que significa que a tabela de destino está no mesmo esquema que o usuário que está executando o procedimento.

update_columns

Os novos arquivos podem introduzir uma alteração no esquema. As atualizações suportadas incluem: novas colunas, colunas excluídas. Atualizações de colunas existentes, por exemplo, uma alteração no tipo de dados gera erros.

Valor padrão: falso

Procedimento VALIDATE_EXTERNAL_PART_TABLE

Este procedimento valida os arquivos de origem de uma tabela particionada externa, gera informações de log e armazena as linhas que não correspondem às opções de formato especificadas para a tabela externa em uma tabela arquivo inválido no Autonomous Database. O formulário sobrecarregado permite que você use o parâmetro operation_id.

Sintaxe

DBMS_CLOUD.VALIDATE_EXTERNAL_PART_TABLE (
       table_name                 IN VARCHAR2,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_EXTERNAL_PART_TABLE (
       table_name                 IN VARCHAR2,
       operation_id               OUT NUMBER,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

partition_name

Se definido, apenas uma partição específica será validada. Se não for especificado, leia todas as partições sequencialmente até atingir rowcount.

subpartition_name

Se definido, apenas uma subpartição específica será validada. Se não for especificado, leia todas as partições ou subpartições externas sequencialmente até atingir rowcount.

schema_name

O nome do esquema em que a tabela externa reside. O valor padrão é NULL, o que significa que a tabela externa está no mesmo esquema que o usuário que está executando o procedimento.

rowcount

Número de linhas a serem verificadas. O valor padrão é NULL, o que significa que todas as linhas dos arquivos de origem são verificadas.

partition_key_validation

Somente para uso interno. Não use esse parâmetro.

stop_on_error

Determina se a validação deve ser interrompida quando uma linha for rejeitada. O valor padrão é TRUE, o que significa que a validação é interrompida na primeira linha rejeitada. A definição do valor como FALSE especifica que a validação não é interrompida na primeira linha rejeitada e valida todas as linhas até o valor especificado para o parâmetro rowcount.

Procedimento VALIDATE_EXTERNAL_TABLE

Este procedimento valida os arquivos de origem de uma tabela externa, gera informações de log e armazena as linhas que não correspondem às opções de formato especificadas para a tabela externa em uma tabela de arquivos incorretos no Autonomous Database. O formulário sobrecarregado permite que você use o parâmetro operation_id.

Sintaxe

DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE (
	table_name      IN VARCHAR2,
	schema_name     IN VARCHAR2 DEFAULT,		
	rowcount        IN NUMBER DEFAULT,
	stop_on_error   IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE(
	table_name      IN VARCHAR2,
	operation_id    OUT NOCOPY NUMBER,
	schema_name     IN VARCHAR2 DEFAULT NULL,		
	rowcount        IN NUMBER DEFAULT 0,
	stop_on_error   IN BOOLEAN DEFAULT TRUE);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

schema_name

O nome do esquema em que a tabela externa reside. O valor padrão é NULL, o que significa que a tabela externa está no mesmo esquema que o usuário que está executando o procedimento.

rowcount

Número de linhas a serem verificadas. O valor padrão é NULL, o que significa que todas as linhas dos arquivos de origem são verificadas.

stop_on_error

Determina se a validação deve ser interrompida quando uma linha for rejeitada. O valor padrão é TRUE, o que significa que a validação é interrompida na primeira linha rejeitada. A definição do valor como FALSE especifica que a validação não é interrompida na primeira linha rejeitada e valida todas as linhas até o valor especificado para o parâmetro rowcount.

Se a tabela externa se referir aos arquivos Avro, ORC ou Parquet, a validação será interrompida na primeira linha rejeitada.

Quando a tabela externa especifica o parâmetro format type definido com o valor avro, orc ou parquet, o parâmetro stop_on_error sempre tem efetivamente o valor TRUE. Assim, o arquivo inválido de tabela sempre estará vazio para uma tabela externa que menciona os arquivos Avro, ORC ou Parquet.

Observações de Uso

  • O DBMS_CLOUD.VALIDATE_EXTERNAL_TABLE funciona com tabelas externas particionadas e tabelas híbridas particionadas. Isso potencialmente lê dados de todas as partições externas até que rowcount seja atingido ou stop_on_error seja aplicado. Você não tem controle sobre qual partição, ou partes de uma partição, é lida em que ordem.

Procedimento VALIDATE_HYBRID_PART_TABLE

Esse procedimento valida os arquivos de origem de uma tabela particionada híbrida, gera informações de log e armazena as linhas que não correspondem às opções de formato especificadas para a tabela híbrida em uma tabela de arquivos inválidos do Autonomous Database. O formulário sobrecarregado permite que você use o parâmetro operation_id.

Sintaxe

DBMS_CLOUD.VALIDATE_HYBRID_PART_TABLE (
       table_name                 IN VARCHAR2,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);


DBMS_CLOUD.VALIDATE_HYBRID_PART_TABLE (
       table_name                 IN VARCHAR2,
       operation_id               OUT NUMBER,
       partition_name             IN CLOB DEFAULT,
       subpartition_name          IN CLOB DEFAULT,
       schema_name                IN VARCHAR2 DEFAULT,
       rowcount                   IN NUMBER DEFAULT,
       partition_key_validation   IN BOOLEAN DEFAULT,
       stop_on_error              IN BOOLEAN DEFAULT);

Parâmetros

Parâmetro Descrição

table_name

O nome da tabela externa.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

partition_name

Se definido, apenas uma partição específica será validada. Se não for especificado, leia todas as partições externas sequencialmente até que rowcount seja atingido.

subpartition_name

Se definido, apenas uma subpartição específica será validada. Se não for especificado, leia todas as partições ou subpartições externas sequencialmente até atingir rowcount.

schema_name

O nome do esquema em que a tabela externa reside. O valor padrão é NULL, o que significa que a tabela externa está no mesmo esquema que o usuário que está executando o procedimento.

rowcount

Número de linhas a serem verificadas. O valor padrão é NULL, o que significa que todas as linhas dos arquivos de origem são verificadas.

partition_key_validation

Somente para uso interno. Não use esse parâmetro.

stop_on_error

Determina se a validação deve ser interrompida quando uma linha for rejeitada. O valor padrão é TRUE, o que significa que a validação é interrompida na primeira linha rejeitada. A definição do valor como FALSE especifica que a validação não é interrompida na primeira linha rejeitada e valida todas as linhas até o valor especificado para o parâmetro rowcount.

DBMS_CLOUD para Gerenciamento de Arquivos em Massa

Os subprogramas para operações de arquivo em massa no pacote DBMS_CLOUD.

Subprograma Descrição
Procedimento BULK_COPY

Este procedimento copia arquivos de um bucket do Cloud Object Storage para outro.

Procedimento BULK_DELETE

O procedimento exclui arquivos do bucket ou pasta do Cloud Object Storage.

Procedimento BULK_DOWNLOAD

Este procedimento faz download de arquivos do bucket do Cloud Object Store para um diretório no Autonomous Database.

Procedimento BULK_MOVE

Este procedimento move arquivos de um bucket do Cloud Object Storage para outro.

Procedimento BULK_UPLOAD

Este procedimento faz upload de arquivos de um diretório no Autonomous Database para o Cloud Object Storage.

Procedimento BULK_COPY

Esse procedimento copia arquivos em massa de um bucket do Cloud Object Storage para outro. O formulário sobrecarregado permite que você use o parâmetro operation_id.

Você pode filtrar a lista de arquivos a serem excluídos usando um padrão de expressão regular compatível com o operador REGEXP_LIKE.

O bucket ou pasta de origem e destino pode estar no mesmo provedor de armazenamento do Cloud Object ou em outro provedor.

Quando a origem e o destino estão em Armazenamentos de Objetos distintos ou têm contas diferentes com o mesmo provedor de nuvem, você pode fornecer nomes de credenciais separados para os locais de origem e destino.

Por padrão, o nome da credencial de origem também é usado pelo local de destino.

Sintaxe

DBMS_CLOUD.BULK_COPY (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_COPY (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL,
      operation_id            OUT NUMBER
);

Parâmetros

Parâmetro Descrição

source_credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Se você não fornecer um valor source_credential_name, credential_name será definido como NULL.

source_location_uri

Especifica o URI, que aponta para a localização do bucket ou da pasta do Object Storage de origem.

Este parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

target_location_uri

Especifica o URI do bucket ou pasta do Object Storage de destino, no qual os arquivos precisam ser copiados.

Este parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

target_credential_name

O nome da credencial para acessar o local de destino do Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Se você não fornecer um valor target_credential_name, target_location_uri será definido como o valor source_credential_name.

regex_filter

Especifica a expressão REGEX para filtrar arquivos. O padrão de expressão REGEX deve ser compatível com o operador REGEXP_LIKE.

Se você não fornecer um valor regex_filter, o regex_filter será definido como NULL.

Consulte REGEXP_LIKE Condição para obter mais informações.

format

Especifica as opções de configuração adicionais para a operação de arquivo. Essas opções são especificadas como uma string JSON.

As opções de formato suportadas são:
  • logretention: Aceita um valor inteiro que determina a duração em dias pela qual a tabela de status é retida para uma operação em massa.

    O valor default é 2 dias.

  • logprefix: Aceita um valor de string que determina a string de prefixo do nome da tabela de status da operação em massa.

    O tipo de operação é o valor padrão. Para BULK_COPY, o valor logprefix padrão é COPYOBJ.

  • priority: Aceita um valor de string que determina o número de operações de arquivo executadas simultaneamente.

    Uma operação com uma prioridade mais alta consome mais recursos de banco de dados e deve ser executada mais rapidamente.

    Ele aceita os seguintes valores:

    • HIGH: Determina o número de arquivos paralelos tratados usando a contagem de ECPUs do banco de dados (contagem de OCPUs se seu banco de dados usar OCPUs)

    • MEDIUM: Determina o número de processos simultâneos usando o limite de simultaneidade para o serviço Médio. O valor padrão é 4.

    • LOW: Processe os arquivos em ordem serial.

    O valor padrão é MEDIUM.

    O número máximo de operações de arquivo simultâneas é limitado a 64.

Se você não fornecer um valor format, o format será definido como NULL.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

Observações de Uso

  • Um erro é retornado quando o URI de origem e destino aponta para o mesmo bucket ou pasta do Object Storage.

Exemplo

BEGIN 
DBMS_CLOUD.BULK_COPY (
     source_credential_name => 'OCI_CRED',
     source_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/o',
     target_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
     format       => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
);
END;
/

Procedimento BULK_DELETE

Este procedimento exclui arquivos em massa do Cloud Object Storage. O formulário sobrecarregado permite que você use o parâmetro operation_id. Você pode filtrar a lista de arquivos a serem excluídos usando um padrão de expressão regular compatível com o operador REGEXP_LIKE.

Sintaxe

 DBMS_CLOUD.BULK_DELETE(
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_DELETE (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL,
     operation_id     OUT NUMBER
);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Se você não fornecer um valor credential_name, credential_name será definido como NULL.

location_uri

Especifica o URI, que aponta para um local do serviço Object Storage no Autonomous Database.

Este parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

regex_filter

Especifica a expressão REGEX para filtrar arquivos. O padrão de expressão REGEX deve ser compatível com o operador REGEXP_LIKE.

Se você não fornecer um valor regex_filter, o regex_filter será definido como NULL.

Consulte REGEXP_LIKE Condição para obter mais informações.

format

Especifica as opções de configuração adicionais para a operação de arquivo. Essas opções são especificadas como uma string JSON.

As opções de formato suportadas são:
  • logretention: Aceita um valor inteiro que determina a duração em dias pela qual a tabela de status é retida para uma operação em massa.

    O valor default é 2 dias.

  • logprefix: Aceita um valor de string que determina a string de prefixo do nome da tabela de status da operação em massa.

    O tipo de operação é o valor padrão. Para BULK_DELETE, o valor logprefix padrão é DELETE.

  • priority: Aceita um valor de string que determina o número de operações de arquivo executadas simultaneamente.

    Uma operação com uma prioridade mais alta consome mais recursos de banco de dados e é concluída antes.

    Ele aceita os seguintes valores:

    • HIGH: Determina o número de arquivos paralelos tratados usando a contagem de ECPUs do banco de dados (contagem de OCPUs se seu banco de dados usar OCPUs).

    • MEDIUM: Determina o número de processos simultâneos usando o limite de simultaneidade para o serviço Médio. O valor padrão é 4.

    • LOW: Processe os arquivos em ordem serial.

    O valor padrão é MEDIUM.

    O número máximo de operações de arquivo simultâneas é limitado a 64.

Se você não fornecer um valor format, o format será definido como NULL.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

Exemplo

BEGIN
DBMS_CLOUD.BULK_DELETE (    
     credential_name => 'OCI_CRED',
     location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
     format          => JSON_OBJECT ('logretention' value 5, 'logprefix' value 'BULKDEL')
);
END;
/

Procedimento BULK_DOWNLOAD

Este procedimento faz download de arquivos para um diretório do Autonomous Database no Cloud Object Storage. O formulário sobrecarregado permite que você use o parâmetro operation_id. Você pode filtrar a lista de arquivos a serem baixados usando um padrão de expressão regular compatível com o operador REGEXP_LIKE.

Sintaxe

DBMS_CLOUD.BULK_DOWNLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_DOWNLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL,
     operation_id     OUT NUMBER
);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Se você não fornecer um valor credential_name, credential_name será definido como NULL.

location_uri

Especifica o URI, que aponta para um local do serviço Object Storage no Autonomous Database.

Este parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

directory_name

O nome do diretório no Autonomous Database do qual você deseja fazer download dos arquivos.

Este parâmetro é obrigatório.

regex_filter

Especifica a expressão REGEX para filtrar arquivos. O padrão de expressão REGEX deve ser compatível com o operador REGEXP_LIKE.

Se você não fornecer um valor regex_filter, o regex_filter será definido como NULL.

Consulte REGEXP_LIKE Condição para obter mais informações.

format

Especifica as opções de configuração adicionais para a operação de arquivo. Essas opções são especificadas como uma string JSON.

As opções de formato suportadas são:
  • logretention: Aceita um valor inteiro que determina a duração em dias pela qual a tabela de status é retida para uma operação em massa.

    O valor default é 2 dias.

  • logprefix: Aceita um valor de string que determina a string de prefixo do nome da tabela de status da operação em massa. Para BULK_DOWNLOAD, o valor logprefix padrão é DOWNLOAD.

    O tipo de operação é o valor padrão.

  • priority: Aceita um valor de string que determina o número de operações de arquivo executadas simultaneamente.

    Uma operação com uma prioridade mais alta consome mais recursos de banco de dados e é concluída antes.

    Ele aceita os seguintes valores:

    • HIGH: Determina o número de arquivos paralelos tratados usando a contagem de ECPUs do banco de dados (contagem de OCPUs se seu banco de dados usar OCPUs).

    • MEDIUM: Determina o número de processos simultâneos usando o limite de simultaneidade para o serviço Médio. O valor padrão é 4.

    • LOW: Processe os arquivos em ordem serial.

    O valor padrão é MEDIUM.

    O número máximo de operações de arquivo simultâneas é limitado a 64.

Se você não fornecer um valor format, o format será definido como NULL.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

Exemplo

BEGIN
DBMS_CLOUD.BULK_DOWNLOAD (    
     credential_name => 'OCI_CRED',
     location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
     directory_name  => 'BULK_TEST',
     format          => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKOP')
 );
END;
/

Procedimento BULK_MOVE

Esse procedimento move arquivos em massa de um bucket ou pasta do Cloud Object Storage para outro. O formulário sobrecarregado permite que você use o parâmetro operation_id.

Você pode filtrar a lista de arquivos a serem excluídos usando um padrão de expressão regular compatível com o operador REGEXP_LIKE.

O bucket ou pasta de origem e destino pode estar no mesmo provedor de armazenamento do Cloud Object ou em outro provedor.

Quando a origem e o destino estão em Armazenamentos de Objetos distintos ou têm contas diferentes com o mesmo provedor de nuvem, você pode fornecer nomes de credenciais separados para os locais de origem e destino.

Por padrão, o nome da credencial de origem também é usado pelo local de destino quando o nome da credencial de destino não é fornecido.

A primeira etapa na movimentação de arquivos é copiá-los para o local de destino e, em seguida, excluir os arquivos de origem, uma vez copiados com sucesso.

O objeto será renomeado em vez de movido se o Armazenamento de Objetos permitir a renomeação de operações entre os locais de origem e de destino.

Sintaxe

DBMS_CLOUD.BULK_MOVE (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_MOVE (
      source_credential_name  IN  VARCHAR2 DEFAULT NULL,
      source_location_uri     IN  VARCHAR2,
      target_location_uri     IN  VARCHAR2,
      target_credential_name  IN  VARCHAR2 DEFAULT NULL,
      regex_filter            IN  VARCHAR2 DEFAULT NULL,
      format                  IN  CLOB     DEFAULT NULL,
      operation_id            OUT NUMBER
);

Parâmetros

Parâmetro Descrição

source_credential_name

O nome da credencial para acessar o Cloud Object Storage de origem.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Se você não fornecer um valor source_credential_name, credential_name será definido como NULL.

source_location_uri

Especifica o URI, que aponta para a localização do bucket ou da pasta do Object Storage de origem.

Este parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

target_location_uri

Especifica o URI do bucket ou pasta do Object Storage de destino, onde os arquivos precisam ser movidos.

Este parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

target_credential_name

O nome da credencial para acessar o local de destino do Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Se você não fornecer um valor target_credential_name, target_location_uri será definido como o valor source_credential_name.

regex_filter

Especifica a expressão REGEX para filtrar arquivos. O padrão de expressão REGEX deve ser compatível com o operador REGEXP_LIKE.

Se você não fornecer um valor regex_filter, o regex_filter será definido como NULL.

Consulte REGEXP_LIKE Condição para obter mais informações.

format

Especifica as opções de configuração adicionais para a operação de arquivo. Essas opções são especificadas como uma string JSON.

As opções de formato suportadas são:
  • logretention: Aceita um valor inteiro que determina a duração em dias pela qual a tabela de status é retida para uma operação em massa.

    O valor default é 2 dias.

  • logprefix: Aceita um valor de string que determina a string de prefixo do nome da tabela de status da operação em massa.

    O tipo de operação é o valor padrão. Para BULK_MOVE, o valor logprefix padrão é MOVE.

  • priority: Aceita um valor de string que determina o número de operações de arquivo executadas simultaneamente.

    Uma operação com uma prioridade mais alta consome mais recursos de banco de dados e é concluída antes.

    Ele aceita os seguintes valores:

    • HIGH: Determina o número de arquivos paralelos tratados usando a contagem de ECPUs do banco de dados (contagem de OCPUs se seu banco de dados usar OCPUs).

    • MEDIUM: Determina o número de processos simultâneos usando o limite de simultaneidade para o serviço Médio. O valor padrão é 4.

    • LOW: Processe os arquivos em ordem serial.

    O valor padrão é MEDIUM.

    O número máximo de operações de arquivo simultâneas é limitado a 64.

Se você não fornecer um valor format, o format será definido como NULL.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

Exemplo

BEGIN 
DBMS_CLOUD.BULK_MOVE (    
     source_credential_name => 'OCI_CRED',
     source_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname1/o',
     target_location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname2/o',
     format                 => JSON_OBJECT ('logretention' value 7, 'logprefix' value 'BULKMOVE')
);
END;
/
Observação

Um erro é retornado quando o URI de origem e destino aponta para o mesmo bucket ou pasta do serviço Object Storage.

Procedimento BULK_UPLOAD

Este procedimento copia arquivos de um diretório do Autonomous Database para o Cloud Object Storage. O formulário sobrecarregado permite que você use o parâmetro operation_id.

Sintaxe

DBMS_CLOUD.BULK_UPLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL
);

DBMS_CLOUD.BULK_UPLOAD (
     credential_name  IN  VARCHAR2 DEFAULT NULL,
     location_uri     IN  VARCHAR2,
     directory_name   IN  VARCHAR2,
     regex_filter     IN  VARCHAR2 DEFAULT NULL,
     format           IN  CLOB     DEFAULT NULL,
     operation_id     OUT NUMBER
);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para acessar o Cloud Object Storage.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

Se você não fornecer um valor credential_name, credential_name será definido como NULL.

location_uri

Especifica o URI, que aponta para um local de Armazenamento de Objetos para fazer upload de arquivos.

Este parâmetro é obrigatório.

O formato dos URIs depende do serviço Cloud Object Storage. Consulte DBMS_CLOUD Formatos de URI para obter mais informações.

directory_name

O nome do diretório no Autonomous Database do qual você faz upload dos arquivos.

Este parâmetro é obrigatório.

regex_filter

Especifica a expressão REGEX para filtrar arquivos. O padrão de expressão REGEX deve ser compatível com o operador REGEXP_LIKE.

Se você não fornecer um valor regex_filter, o regex_filter será definido como NULL.

Consulte REGEXP_LIKE Condição para obter mais informações.

format

Especifica as opções de configuração adicionais para a operação de arquivo. Essas opções são especificadas como uma string JSON.

As opções de formato suportadas são:
  • logretention: Aceita um valor inteiro que determina a duração em dias pela qual a tabela de status é retida para uma operação em massa.

    O valor default é 2 dias.

  • logprefix: Aceita um valor de string que determina a string de prefixo do nome da tabela de status da operação em massa.

    O tipo de operação é o valor padrão. Para BULK_UPLOAD, o valor logprefix padrão é UPLOAD.

  • priority: Aceita um valor de string que determina o número de operações de arquivo executadas simultaneamente.

    Uma operação com uma prioridade mais alta consome mais recursos de banco de dados e é concluída antes.

    Ele aceita os seguintes valores:

    • HIGH: Determina o número de arquivos paralelos tratados usando a contagem de ECPUs do banco de dados (contagem de OCPUs se seu banco de dados usar OCPUs).

    • MEDIUM: Determina o número de processos simultâneos usando o limite de simultaneidade para o serviço Médio. O valor padrão é 4.

    • LOW: Processe os arquivos em ordem serial.

    O valor padrão é MEDIUM.

    O número máximo de operações de arquivo simultâneas é limitado a 64.

Se você não fornecer um valor format, o format será definido como NULL.

operation_id

Use esse parâmetro para rastrear o andamento e o status final da operação de carga como o ID correspondente na view USER_LOAD_OPERATIONS.

Exemplo

BEGIN
DBMS_CLOUD.BULK_UPLOAD ( 
     credential_name => 'OCI_CRED',
     location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o',
     directory_name  => 'BULK_TEST',
     format          => JSON_OBJECT ('logretention' value 5, 'logprefix' value 'BULKUPLOAD')
 );
END;
/

DBMS_CLOUD APIs REST

Esta seção abrange as APIs REST DBMS_CLOUD fornecidas com o Autonomous Database.

API REST Descrição

GET_RESPONSE_HEADERS Função

Essa função retorna os cabeçalhos de resposta HTTP como dados JSON em um objeto JSON no Autonomous Database.

GET_RESPONSE_RAW Função

Essa função retorna a resposta HTTP no formato RAW do Autonomous Database. Isso será útil se for esperado que a resposta HTTP seja de formato binário.

Função GET_RESPONSE_STATUS_CODE

Essa função retorna o código de status de resposta HTTP como número inteiro no Autonomous Database. O código de status ajuda a identificar se a solicitação foi bem-sucedida.

Função GET_RESPONSE_TEXT

Essa função retorna a resposta HTTP no formato VARCHAR2 ou CLOB no Autonomous Database. Geralmente, a maioria das APIs REST na Nuvem retorna a resposta JSON em formato de texto. Esta função é útil se você espera que a resposta HTTP esteja no formato de texto.

Função GET_API_RESULT_CACHE_SIZE

Essa função retorna o tamanho do cache de resultados configurado.

SEND_REQUEST Função e Procedimento

Essa função inicia uma solicitação HTTP, obtém a resposta e encerra a resposta no Autonomous Database. Essa função oferece um workflow para enviar uma solicitação de API REST na Nuvem com argumentos e um código de resposta e payload de retorno.

SET_API_RESULT_CACHE_SIZE Procedimento

Esse procedimento define o tamanho máximo do cache para a sessão atual.

DBMS_CLOUD Visão Geral da API REST

Quando você usa PL/SQL no seu aplicativo e precisa chamar APIs REST na Nuvem, pode usar DBMS_CLOUD.SEND_REQUEST para enviar as solicitações da API REST.

As funções da API REST DBMS_CLOUD permitem que você faça solicitações HTTP usando DBMS_CLOUD.SEND_REQUEST, obtenha os resultados e os salve. Essas funções fornecem uma API genérica que permite chamar qualquer API REST com os seguintes serviços de nuvem suportados:

DBMS_CLOUD Constantes de API REST

Descreve as constantes DBMS_CLOUD ao fazer solicitações HTTP usando DBMS_CLOUD.SEND_REQUEST.

DBMS_CLOUD supports GET, PUT, POST, HEAD and DELETE HTTP methods. The REST API method to be used for an HTTP request is typically documented in the Cloud REST API documentation.

Nome Tipo Valor
METHOD_DELETE VARCHAR2(6) 'DELETE'
METHOD_GET VARCHAR2(3) 'GET'
METHOD_HEAD VARCHAR2(4) 'HEAD'
METHOD_POST VARCHAR2(4) 'POST'
METHOD_PUT VARCHAR2(3) 'PUT'

DBMS_CLOUD Cache de Resultados da API REST

Você pode salvar os resultados da API REST DBMS_CLOUD ao definir o parâmetro cache como verdadeiro com DBMS_CLOUD.SEND_REQUEST. A view SESSION_CLOUD_API_RESULTS descreve as colunas que você pode usar quando os resultados da API REST são salvos.

Por padrão, as chamadas de API REST DBMS_CLOUD não salvam os resultados da sessão. Nesse caso, você usa a função DBMS_CLOUD.SEND_REQUEST para retornar resultados.

Quando você usa DBMS_CLOUD.SEND_REQUEST e define o parâmetro cache como TRUE, os resultados são salvos e você pode exibir os resultados passados na view SESSION_CLOUD_API_RESULTS. Salvar e consultar resultados históricos de solicitações da API REST DBMS_CLOUD podem ajudar você quando precisar trabalhar com resultados anteriores em seus aplicativos.

Por exemplo, para consultar resultados recentes da API REST DBMS_CLOUD, use a view SESSION_CLOUD_API_RESULTS:

SELECT timestamp FROM SESSION_CLOUD_API_RESULTS;

Quando você salva os resultados da API DBMS_CLOUD REST com DBMS_CLOUD.SEND_REQUEST, os dados salvos só ficam disponíveis na mesma sessão (conexão) Depois que a sessão for encerrada, os dados salvos não estarão mais disponíveis.

Use DBMS_CLOUD.GET_API_RESULT_CACHE_SIZE e DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE para exibir e definir o tamanho do cache da API REST DBMS_CLOUD e para desativar o armazenamento no cache.

Parâmetro cache_scope de Resultados da API REST DBMS_CLOUD

Quando você salva os resultados da API REST DBMS_CLOUD com DBMS_CLOUD.SEND_REQUEST, o acesso aos resultados em SESSION_CLOUD_API_RESULTS é fornecido com base no valor de cache_scope.

Por padrão, cache_scope é 'PRIVATE' e somente o usuário atual da sessão pode acessar os resultados. Se você definir cache_scope como 'PUBLIC', todos os usuários da sessão poderão acessar os resultados. O valor padrão para cache_scope especifica que cada usuário só pode ver os resultados da API REST DBMS_CLOUD.SEND_REQUEST gerados pelos procedimentos que eles chamam com os direitos do chamador. Quando você chama DBMS_CLOUD.SEND_REQUEST em uma sessão, há três possibilidades que determinam se o usuário atual pode ver resultados no cache, com base no valor cache_scope:

  • Você executa diretamente DBMS_CLOUD.SEND_REQUEST como instrução de nível superior e a chamada para DBMS_CLOUD.SEND_REQUEST e os resultados da API REST são salvos com o mesmo nome de usuário. Nesse caso, você tem acesso a todos os resultados com o valor padrão, 'PRIVATE', definido para cache_scope.

  • Você grava um procedimento de direitos do invocador do encapsulador e, como usuário atual, sua chamada com DBMS_CLOUD.SEND_REQUEST chama o procedimento e os resultados da API REST são salvos com o mesmo nome de usuário. Nesse caso, você tem acesso a todos os resultados com o valor padrão, PRIVATE', definido para cache_scope.

  • Você grava o procedimento de direitos do definidor de um wrapper e o procedimento pertence a outro usuário. Quando você chama DBMS_CLOUD.SEND_REQUEST dentro do procedimento, os resultados são salvos com o nome de usuário do proprietário do procedimento.

    Para esse caso, um usuário dos direitos de outro definidor está chamando DBMS_CLOUD.SEND_REQUEST e os resultados da API REST são salvos com o proprietário do procedimento desse definidor. Para esse caso, por padrão, quando cache_scope é PRIVATE', a sessão do chamador não pode ver os resultados.

    Se o proprietário do procedimento do definidor quiser disponibilizar os resultados para qualquer usuário da sessão de chamada, ele deverá definir cache_scope como 'PUBLIC' no DBMS_CLOUD.SEND_REQUEST.

Exibição DBMS_CLOUD API REST SESSION_CLOUD_API_RESULTS

Você pode salvar os resultados da API REST DBMS_CLOUD ao definir o parâmetro cache como verdadeiro com DBMS_CLOUD.SEND_REQUEST. A view SESSION_CLOUD_API_RESULTS descreve as colunas que você pode usar quando os resultados da API REST são salvos.

A view SESSION_CLOUD_API_RESULTS será a view criada se você armazenar resultados no cache com DBMS_CLOUD.SEND_REQUEST. Você pode consultar resultados históricos que pertencem à sessão de usuário. Quando a sessão termina, os dados em SESSION_CLOUD_API_RESULTS são expurgados.

Coluna Descrição
URI O URL de solicitação da API REST DBMS_CLOUD
TIMESTAMP O timestamp de resposta da API REST DBMS_CLOUD
CLOUD_TYPE O tipo de nuvem da API REST DBMS_CLOUD, como Oracle Cloud Infrastructure, AMAZON_S3 e AZURE_BLOB
REQUEST_METHOD O método de solicitação da API REST DBMS_CLOUD, como GET, PUT, HEAD
REQUEST_HEADERS Os cabeçalhos de solicitação da API REST DBMS_CLOUD
REQUEST_BODY_TEXT O corpo da solicitação da API REST DBMS_CLOUD em CLOB
RESPONSE_STATUS_CODE O código de status de resposta da API REST DBMS_CLOUD, como 200(OK), 404(Not Found)
RESPONSE_HEADERS Os cabeçalhos de resposta da API REST DBMS_CLOUD
RESPONSE_BODY_TEXT O corpo da resposta da API REST DBMS_CLOUD em CLOB
SCOPE

O cache_scope definido por DBMS_CLOUD.SEND_REQUEST. Os valores válidos são PUBLIC ou PRIVATE.

GET_RESPONSE_HEADERS Função

Essa função retorna os cabeçalhos de resposta HTTP como dados JSON em um objeto JSON.

Sintaxe

DBMS_CLOUD.GET_RESPONSE_HEADERS(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN JSON_OBJECT_T;

Parâmetros

Parâmetro Descrição
resp

O tipo de Resposta HTTP retornada de DBMS_CLOUD.SEND_REQUEST.

Exceções

Exceção Erro Descrição
invalid_response ORA-20025

Objeto de tipo de resposta inválido informado para DBMS_CLOUD.GET_RESPONSE_HEADERS.

GET_RESPONSE_RAW Função

Essa função retorna a resposta HTTP no formato RAW. Isso será útil se for esperado que a resposta HTTP seja de formato binário.

Sintaxe

DBMS_CLOUD.GET_RESPONSE_RAW(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN BLOB;

Parâmetros

Parâmetro Descrição
resp

O tipo de Resposta HTTP retornada de DBMS_CLOUD.SEND_REQUEST.

Exceções

Exceção Erro Descrição
invalid_response ORA-20025

Objeto de tipo de resposta inválido informado para DBMS_CLOUD.GET_RESPONSE_RAW.

Função GET_RESPONSE_STATUS_CODE

Essa função retorna o código de status de resposta HTTP como número inteiro. O código de status ajuda a identificar se a solicitação foi bem-sucedida.

Sintaxe

DBMS_CLOUD.GET_RESPONSE_STATUS_CODE(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN PLS_INTEGER;

Parâmetros

Parâmetro Descrição
resp

O tipo de Resposta HTTP retornada de DBMS_CLOUD.SEND_REQUEST.

Exceções

Exceção Erro Descrição
invalid_response ORA-20025

Objeto de tipo de resposta inválido informado para DBMS_CLOUD.GET_RESPONSE_STATUS_CODE.

Função GET_RESPONSE_TEXT

Essa função retorna a resposta HTTP no formato TEXT (VARCHAR2 ou CLOB). Geralmente, a maioria das APIs REST na Nuvem retorna a resposta JSON em formato de texto. Esta função é útil se você espera que a resposta HTTP esteja no formato de texto.

Sintaxe

DBMS_CLOUD.GET_RESPONSE_TEXT(
       resp          IN DBMS_CLOUD_TYPES.resp)
   RETURN CLOB;

Parâmetros

Parâmetro Descrição
resp

O tipo de Resposta HTTP retornada de DBMS_CLOUD.SEND_REQUEST.

Exceções

Exceção Erro Descrição
invalid_response ORA-20025

Objeto de tipo de resposta inválido informado para DBMS_CLOUD.GET_RESPONSE_TEXT.

Função GET_API_RESULT_CACHE_SIZE

Essa função retorna o tamanho do cache de resultados configurado. O valor do tamanho do cache só se aplica à sessão atual.

Sintaxe

DBMS_CLOUD.GET_API_RESULT_CACHE_SIZE()
   RETURN NUMBER;

SEND_REQUEST Função e Procedimento

Essa função e procedimento inicia uma solicitação HTTP, obtém a resposta e finaliza a resposta. Esta função fornece um workflow para enviar uma solicitação de API REST na nuvem com argumentos e retorna um código de resposta e um payload. Se você usar o procedimento, poderá exibir resultados e detalhes da resposta dos resultados salvos com a view SESSION_CLOUD_API_RESULTS.

Sintaxe

DBMS_CLOUD.SEND_REQUEST(
       credential_name    IN VARCHAR2,
       uri                IN VARCHAR2,
       method             IN VARCHAR2,
       headers            IN CLOB DEFAULT NULL,
       async_request_url  IN VARCHAR2 DEFAULT NULL,
       wait_for_states    IN DBMS_CLOUD_TYPES.wait_for_states_t DEFAULT NULL,
       timeout            IN NUMBER DEFAULT 0,
       cache              IN PL/SQL BOOLEAN DEFAULT FALSE,
       cache_scope        IN VARCHAR2 DEFAULT 'PRIVATE',
       body               IN BLOB DEFAULT NULL)
   RETURN DBMS_CLOUD_TYPES.resp;

DBMS_CLOUD.SEND_REQUEST(
       credential_name    IN VARCHAR2,
       uri                IN VARCHAR2,
       method             IN VARCHAR2,
       headers            IN CLOB DEFAULT NULL,
       async_request_url  IN VARCHAR2 DEFAULT NULL,
       wait_for_states    IN DBMS_CLOUD_TYPES.wait_for_states_t DEFAULT NULL,
       timeout            IN NUMBER DEFAULT 0,
       cache              IN PL/SQL BOOLEAN DEFAULT FALSE,
       cache_scope        IN VARCHAR2 DEFAULT 'PRIVATE',
       body               IN BLOB DEFAULT NULL);

Parâmetros

Parâmetro Descrição

credential_name

O nome da credencial para autenticação com a API nativa da nuvem correspondente.

Você pode usar 'OCI$RESOURCE_PRINCIPAL' como credential_name quando o controlador de recursos está ativado. Consulte ENABLE_RESOURCE_PRINCIPAL para obter mais informações.

uri

URI HTTP para fazer a solicitação.

method

Método de Solicitação HTTP: GET, PUT, POST, HEAD, DELETE. Use a constante do pacote DBMS_CLOUD para especificar o método.

Para obter mais informações, consulte DBMS_CLOUD Constantes da API REST.

headers

Cabeçalhos da Solicitação HTTP para a API nativa da nuvem correspondente no formato JSON. Os cabeçalhos de autenticação são definidos automaticamente; só informam cabeçalhos personalizados.

async_request_url

Um URL de solicitação assíncrona.

Para obter o URL, selecione sua API de solicitação na lista de APIs (consulte https://docs.cloud.oracle.com/en-us/iaas/api/). Em seguida, navegue para encontrar a API da sua solicitação no painel esquerdo. Por exemplo, API de Serviços de Banco de Dados → Autonomous Database → StopAutonomousDatabase. Esta página mostra o home da API (e mostra o ponto final base). Em seguida, anexe o ponto final base com o caminho relativo obtido para o link WorkRequest da solicitação de serviço.

wait_for_states

Aguardar estados é um status do tipo: DBMS_CLOUD_TYPES.wait_for_states_t. Estes são valores válidos para os estados esperados: "ACTIVE", "CANCELED", "COMPLETED", "DELETED", "FAILED", "SUCCEEDED".

Vários estados são permitidos para wait_for_states. O valor padrão de wait_for_states é aguardar qualquer um dos estados esperados: "ACTIVE", "CANCELED", "COMPLETED", "DELETED", "FAILED", "SUCCEEDED".

timeout

Especifica o timeout, em segundos, para solicitações assíncronas com os parâmetros async_request_url e wait_for_states.

O valor default é 0. Isso indica para aguardar a conclusão da solicitação sem qualquer timeout.

cache

Se TRUE, especifica que a solicitação deve ser armazenada no cache da API REST de resultados.

O valor padrão é FALSE, o que significa que as solicitações da API REST não são armazenadas.

cache_scope

Especifica se todos podem ter acesso a esse cache de resultados de solicitação. Valores válidos: "PRIVATE" e "PUBLIC". O valor padrão é "PRIVATE".

body

Corpo da Solicitação HTTP para solicitações PUT e POST.

Exceções

Exceção Erro Descrição
invalid_req_method ORA-20023

O método de solicitação informado para DBMS_CLOUD.SEND_REQUEST é inválido.

invalid_req_header ORA-20024

Os cabeçalhos de solicitação especificados para DBMS_CLOUD.SEND_REQUEST não estão em formato JSON válido.

Observações sobre Uso

  • Se você estiver usando o Oracle Cloud Infrastructure, use um valor de credencial baseado em Chave de Assinatura para o credential_name. Consulte CREATE_CREDENTIAL Procedimento para obter mais informações.

  • Os parâmetros opcionais async_request_url, wait_for_states e timeout permitem tratar solicitações de longa execução. Usando essa forma assíncrona de send_request, a função aguarda o status de conclusão especificado em wait_for_states antes de retornar. Com esses parâmetros na solicitação de envio, você informa os estados esperados de retorno no parâmetro wait_for_states e usa o parâmetro async_request_url para especificar uma solicitação de serviço associada. A solicitação não é retornada imediatamente. Em vez disso, ela sonda async_request_url até que o estado de retorno seja um dos estados esperados ou até que timeout seja excedido (timeout é opcional). Se nenhum timeout for especificado, a solicitação aguardará até que ocorra um estado encontrado em wait_for_states.

SET_API_RESULT_CACHE_SIZE Procedimento

Esse procedimento define o tamanho máximo do cache para a sessão atual. O valor do tamanho do cache só se aplica à sessão atual.

Sintaxe

DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE(
       cache_size          IN NUMBER);

Parâmetros

Parâmetro Descrição
cache_size

Defina o tamanho máximo do cache para o valor especificado cache_size. Se o novo tamanho máximo do cache for menor que o atual, os registros mais antigos serão eliminados até que o número de linhas seja igual ao tamanho máximo especificado do cache. O valor máximo é 10000.

Se o tamanho do cache for definido como 0, o armazenamento no cache será desativado na sessão.

O tamanho padrão do cache é 10.

Exceções

Exceção Erro Descrição
invalid API result cache size ORA-20032

O valor mínimo é 0 e o máximo é 10000. Essa exceção é mostrada quando o valor de entrada é menor que 0 ou maior que 10000.

Exemplo

EXEC DBMS_CLOUD.SET_API_RESULT_CACHE_SIZE(101);

DBMS_CLOUD Exemplos de API REST

Mostra exemplos usando DBMS_CLOUD.SEND_REQUEST para criar e excluir um bucket do Oracle Cloud Infrastructure Object Storage e um exemplo para listar todos os compartimentos na tenancy.

Observação

Esses exemplos mostram as APIs de solicitação do Oracle Cloud Infrastructure e exigem que você use uma credencial baseada em Chave de Assinatura para o credential_name. As credenciais baseadas em Chave de Assinatura do Oracle Cloud Infrastructure incluem os argumentos private_key e fingerprint.

Por exemplo:

BEGIN
   DBMS_CLOUD.CREATE_CREDENTIAL (
       credential_name => ‘OCI_KEY_CRED’,
       user_ocid       => ‘ocid1.user.oc1..aaaaaaaauq54mi7zdyfhw33ozkwuontjceel7fok5nq3bf2vwetkpqsoa’,
       tenancy_ocid    => ‘ocid1.tenancy.oc1..aabbbbbbaafcue47pqmrf4vigneebgbcmmoy5r7xvoypicjqqge32ewnrcyx2a’,
       private_key     => ‘MIIEogIBAAKCAQEAtUnxbmrekwgVac6FdWeRzoXvIpA9+0r1.....wtnNpESQQQ0QLGPD8NM//JEBg=’,
       fingerprint     => ‘f2:db:f9:18:a4:aa:fc:94:f4:f6:6c:39:96:16:aa:27’);
END;
/
Consulte CREATE_CREDENTIAL Procedure para obter informações sobre DBMS_CLOUD.CREATE_CREDENTIAL.

Exemplo de Criação de Bucket

Mostra um exemplo usando DBMS_CLOUD.SEND_REQUEST com o método HTTP POST para criar um bucket de armazenamento de objetos chamado bucketname.

Consulte CreateBucket para obter detalhes sobre a API do Oracle Cloud Infrastructure Object Storage Service desse exemplo.

SET SERVEROUTPUT ON
DECLARE
  resp DBMS_CLOUD_TYPES.resp;
BEGIN
  -- Send request
  resp := DBMS_CLOUD.send_request(
            credential_name => 'OCI_KEY_CRED',
            uri => 'https://objectstorage.region.oraclecloud.com/n/namespace-string/b/',
            method => DBMS_CLOUD.METHOD_POST,
            body => UTL_RAW.cast_to_raw(
                        JSON_OBJECT('name' value 'bucketname',
                                    'compartmentId' value 'compartment_OCID'))
          );
 
  -- Response Body in TEXT format
  dbms_output.put_line('Body: ' || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_text(resp) || CHR(10));
  
  -- Response Headers in JSON format
  dbms_output.put_line('Headers: ' || CHR(10) || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_headers(resp).to_clob || CHR(10));
 
  -- Response Status Code
  dbms_output.put_line('Status Code: ' || CHR(10) || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_status_code(resp));
 
END;
/

Observações

  • Neste exemplo, namespace-string corresponde ao namespace do armazenamento de objetos do Oracle Cloud Infrastructure e bucketname corresponde ao nome do bucket. Consulte Noções Básicas de Namespaces do serviço Object Storage para obter mais informações.

  • Em que: region é uma região de ponto final. Consulte a referência de API do Armazenamento de Objetos em Referência de API e Pontos Finais para obter mais informações. Por exemplo, em que region é: us-phoenix-1.

Exemplo de Exclusão de Bucket

Mostra um exemplo usando DBMS_CLOUD.SEND_REQUEST com o método HTTP DELETE para excluir um bucket de armazenamento de objetos chamado bucketname.

Consulte DeleteBucket para obter detalhes sobre a API do Oracle Cloud Infrastructure Object Storage Service desse exemplo.

SET SERVEROUTPUT ON
DECLARE
  resp DBMS_CLOUD_TYPES.resp;
BEGIN
  -- Send request
  resp := DBMS_CLOUD.send_request(
            credential_name => 'OCI_KEY_CRED',
            uri => 'https://objectstorage.region.oraclecloud.com/n/namespace-string/b/bucketname',
            method => DBMS_CLOUD.METHOD_DELETE
          );
 
  -- Response Body in TEXT format
  dbms_output.put_line('Body: ' || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_text(resp) || CHR(10));
  
  -- Response Headers in JSON format
  dbms_output.put_line('Headers: ' || CHR(10) || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_headers(resp).to_clob || CHR(10));
 
  -- Response Status Code
  dbms_output.put_line('Status Code: ' || CHR(10) || '------------' || CHR(10) ||
  DBMS_CLOUD.get_response_status_code(resp));
 
END;
/

Observações

  • Neste exemplo, namespace-string corresponde ao namespace do armazenamento de objetos do Oracle Cloud Infrastructure e bucketname corresponde ao nome do bucket. Consulte Noções Básicas de Namespaces do serviço Object Storage para obter mais informações.

  • Em que: region é uma região de ponto final. Consulte a referência de API do Armazenamento de Objetos em Referência de API e Pontos Finais para obter mais informações. Por exemplo, em que region é: us-phoenix-1.

Exemplo de Lista de Compartimentos

Mostra um exemplo usando DBMS_CLOUD.SEND_REQUEST com o método HTTP GET para listar todos os compartimentos na tenancy (compartimento raiz). Esse exemplo mostra como especificar cabeçalhos de solicitação no DBMS_CLOUD.SEND_REQUEST.

Consulte ListCompartments para obter detalhes sobre a API do Oracle Cloud Infrastructure Identity and Access Management Service desse exemplo.

--
-- List compartments
--
DECLARE
  resp DBMS_CLOUD_TYPES.resp;
  root_compartment_ocid VARCHAR2(512) := '&1';
BEGIN
  -- Send request
  dbms_output.put_line('Send Request');
  resp := DBMS_CLOUD.send_request(
            credential_name => 'OCI_KEY_CRED',
            uri => 'https://identity.region.oraclecloud.com/20160918/compartments?compartmentId=' || root_compartment_ocid,
            method => DBMS_CLOUD.METHOD_GET,
            headers => JSON_OBJECT('opc-request-id' value 'list-compartments')
          );
  dbms_output.put_line('Body: ' || '------------' || CHR(10) || DBMS_CLOUD.get_response_text(resp) || CHR(10));
  dbms_output.put_line('Headers: ' || CHR(10) || '------------' || CHR(10) || DBMS_CLOUD.get_response_headers(resp).to_clob || CHR(10));
  dbms_output.put_line('Status Code: ' || CHR(10) || '------------' || CHR(10) || DBMS_CLOUD.get_response_status_code(resp));
  dbms_output.put_line(CHR(10));
END;
/

Em que: region é uma região de ponto final. Consulte a referência de API do IAM ( Identity and Access Management) em Referência de API e Pontos Finais para obter mais informações. Por exemplo, em que region é: uk-london-1.

Exemplo de Solicitação Assíncrona

Mostra um exemplo usando DBMS_CLOUD.SEND_REQUEST com o método HTTP POST para executar a operação de interrupção do Autonomous Database e aguardar o status. Esse exemplo mostra como usar DBMS_CLOUD.SEND_REQUEST com os parâmetros async_request_url, wait_for_states e timeout.

--
-- Sent Work Request Autonomous Database Stop Request with Wait for Status
DECLARE
    l_resp DBMS_CLOUD_TYPES.resp;
    l_resp_json JSON_OBJECT_T;
    l_key_shape JSON_OBJECT_T;
    l_body JSON_OBJECT_T;
    status_array DBMS_CLOUD_TYPES.wait_for_states_t;
BEGIN
  status_array := DBMS_CLOUD_TYPES.wait_for_states_t('SUCCEEDED');
  l_body := JSON_OBJECT_T('{}');
  l_body.put('autonomousDatabaseId', 'ocid');
-- Send request
  dbms_output.put_line(l_body.to_clob);
  dbms_output.put_line('Send Request');
  l_resp := DBMS_CLOUD.send_request(
                       credential_name    => 'NATIVE_CRED_OCI',
                       uri                => 'https://database.region.oraclecloud.com/20160918/autonomousDatabases/ocid/actions/stop',
                       method             => DBMS_CLOUD.METHOD_POST,
                       body               => UTL_RAW.cast_to_raw(l_body.to_clob),
                       async_request_url  => 'https://iaas.region.oraclecloud.com/20160918/workRequests',
                       wait_for_states    => status_array,
                       timeout            => 600
                  );
   dbms_output.put_line('resp body: '||DBMS_CLOUD.get_response_text(l_resp));
   dbms_output.put_line('resp headers: '||DBMS_CLOUD.get_response_headers(l_resp).to_clob);
END;
/

Em que: region é uma região de ponto final. Consulte a referência de API do IAM ( Identity and Access Management) em Referência de API e Pontos Finais para obter mais informações. Por exemplo, em que region é: uk-london-1.

O ocid é o identificador de recursos do Oracle Cloud Infrastructure. Consulte Identificadores de Recursos para obter mais informações.



Legenda da Nota de Rodapé

Nota de rodapé 3: O suporte para chamadas de API REST do Azure Cloud é limitado ao domínio "blob.windows.net".