Usar Tabelas da Nuvem para Armazenar Informações de Log e Diagnóstico

Você pode criar Tabelas de Nuvem em que os dados da tabela residem no Cloud Storage gerenciado pela Oracle e os dados da tabela não consomem armazenamento de banco de dados.

Sobre Tabelas de Nuvem

Você pode criar Tabelas de Nuvem como uma alternativa complementar às tabelas no banco de dados. Todos os dados da Tabela da Nuvem são armazenados no Object Storage gerenciado pela Oracle. O Oracle Managed Object Storage é um armazenamento externo, fora do banco de dados, que o Autonomous Database cria e gerencia.

Você pode usar Tabelas de Nuvem para armazenar dados de log de aplicativos usados com pouca frequência, informações de diagnóstico ou para armazenar outros dados. Em alguns aplicativos existentes que não são executados no Autonomous Database, você pode armazenar esse tipo de informação em arquivos em um sistema de arquivos local (por exemplo, usando APIs UTL_FILE). Tais mecanismos de registro e os arquivos associados podem ser muito úteis quando você precisa diagnosticar e resolver erros de aplicativo. No entanto, o armazenamento de informações em tabelas de banco de dados pode usar grandes quantidades de armazenamento de banco de dados para dados que são usados com pouca frequência. Usando Tabelas de Nuvem, os dados persistentes são salvos no Object Storage gerenciado pela Oracle, sem consumir armazenamento de banco de dados.

Restrições SELECT e DML para Tabelas em Nuvem

As Tabelas de Nuvem funcionam como tabelas de banco de dados comuns com algumas restrições. Você pode usar instruções SELECT e DML, de manipulação de dados, com as seguintes exceções:

  • Instruções MERGE não são suportadas.
  • As colunas LOB são limitadas a 10 MB de dados.
  • O controle de simultaneidade DML é diferente e, portanto:
    • LOCK TABLE não pode impedir DML simultânea como faz para uma tabela de banco de dados.
    • INSERT não adquire um bloqueio na tabela e, portanto, INSERT nunca é bloqueado por operações DML simultâneas.
    • As operações UPDATE e DELETE adquirem um bloqueio exclusivo em uma Tabela de Nuvem. Portanto, as transações UPDATE ou DELETE bloqueiam operações UPDATE ou DELETE simultâneas em uma Tabela de Cloud.
  • Somente restrições NOT NULL são impostas.
  • O DML é permitido em um Autonomous Database de Leitura e Gravação como é para qualquer outra tabela; as Tabelas de Nuvem também permitem operações DML em um Clone Atualizável.

As Tabelas de Nuvem não suportam o seguinte:

  • Índices
  • Colunas invisíveis
  • Colunas virtuais
  • Acionadores DML
  • Mais de 996 colunas
  • Colunas de tipo de dados boolianos

Operações de Gerenciamento do Ciclo de Vida e Tabelas da Nuvem

Os dados da Tabela da Nuvem são armazenados no Object Storage gerenciado pela Oracle. Isso significa que determinadas operações no Autonomous Database lidam com Tabelas de Nuvem de maneira diferente das tabelas no banco de dados, da seguinte forma:

  • Os dados da Tabela do Cloud são excluídos do backup e da recuperação de uma instância do Autonomous Database (não há backup dos dados e não é possível restaurar os dados da Tabela do Cloud).

  • Os Dados da Tabela da Nuvem são protegidos por meio do Object Storage gerenciado pela Oracle.

  • As operações de gerenciamento do ciclo de vida que afetam o estado de uma instância do Autonomous Database não têm impacto nos dados armazenados nas Tabelas de Nuvem.

A nomeação da Tabela da Nuvem no serviço Object Storage é definida exclusivamente para cada instância do Autonomous Database, com base em seu OCID. Isso significa que qualquer operação que altere ou introduza um novo OCID para um banco de dados existente tem um impacto nas Tabelas de Nuvem. O exemplo a seguir ilustra o impacto das operações do ciclo de vida nos dados da Tabela do Cloud.

Operação de Ciclo de Vida Disponibilidade de Dados da Tabela da Nuvem
O mesmo clone do banco de dados da região A Tabela do Cloud é clonada sem dados da Tabela do Cloud
Clone de banco de dados entre regiões A Tabela do Cloud é clonada sem dados da Tabela do Cloud
Stand-by do Autonomous Data Guard na mesma região (local) Os dados da Tabela da Nuvem e da Tabela da Nuvem estão acessíveis
Stand-by do Autonomous Data Guard entre Regiões A Tabela do Cloud está disponível no stand-by, sem os dados da Tabela do Cloud
Mesmo pareamento de Recuperação de Desastre Baseado em Backup (local) da mesma região Os dados da Tabela da Nuvem e da Tabela da Nuvem estão acessíveis
Par de Recuperação de Desastres Baseada em Backup entre Regiões A Tabela do Cloud está disponível no stand-by, sem dados da Tabela do Cloud
Operações de gerenciamento do ciclo de vida que afetam o SCN/timestamp de uma instância do Autonomous Database, incluindo:
  • Backup a longo prazo
  • Restaurar banco de dados (restauração de ponto no tempo)
  • Clonar do backup

A Tabela do Cloud continuará a ser atualizada e o estado antigo dos dados da Tabela do Cloud não será preservado nem restaurado. Isso significa que apenas os dados atuais da Tabela do Cloud estão disponíveis.

Operações do Gerenciamento de Ciclo de vida, incluindo:
  • Gerenciar alocação de recursos
  • Mover
  • Reduzir
  • Renomear
  • Modo: Somente leitura/leitura/gravação
  • Alterar tipo de carga de trabalho: por exemplo, de Data Warehouse para Processamento de Transações
Sem impacto nas Tabelas de Nuvem ou nos dados da Tabela de Nuvem

Criar Tabelas de Nuvem

Mostra as etapas para criar uma Tabela do Cloud no Autonomous Database.

Para criar uma Tabela do Cloud:

  1. Execute o procedimento CREATE_CLOUD_TABLE.

    Por exemplo:

    BEGIN
      DBMS_CLOUD.CREATE_CLOUD_TABLE(
       table_name  => 'CLOUD_TABLE_TEST',
       column_list => 'I INTEGER, STR1 VARCHAR2(32)' );
    END;
    /

    Consulte CREATE_CLOUD_TABLE Procedures para obter mais informações.

  2. Inserir dados na Tabela de Cloud.
    INSERT INTO cloud_table_test VALUES (1, 'xyz');
  3. Selecionar dados de uma Tabela do Cloud.
    SELECT * FROM cloud_table_test;
    I          STR1
    ---------- --------------------------------
    1          xyz                            

Use DROP TABLE quando quiser eliminar uma Tabela do Cloud.

Por exemplo:

DROP TABLE CLOUD_TABLE_TEST;

As Tabelas de Nuvem não suportam a lixeira.

Consulte Notas da Tabela da Nuvem para obter informações adicionais.

Observações da Tabela de Nuvem

Fornece observações para Tabelas de Nuvem:

  • Você pode conceder os privilégios SELECT, INSERT e UPDATE para uma Tabela do Cloud. Nenhum outro privilégio pode ser concedido a uma Tabela do Cloud.

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

  • As restrições da Tabela da Nuvem são limitadas a restrições no modo RELY DISABLE NOVALIDATE, o que significa que a restrição não é imposta. A única exceção a isso é para restrições NOT NULL.

    As Tabelas da Nuvem suportam todos os modos de restrição NOT NULL, incluindo o modo padrão (ENABLE VALIDATE). As restrições PRIMARY KEY, UNIQUE, FOREIGN KEY e NOT NULL são suportadas; as restrições CHECK não são suportadas.

    Você pode declarar restrições em linha como parte de COLUMN_LIST.

    Por exemplo:

    BEGIN
      DBMS_CLOUD.CREATE_CLOUD_TABLE(
            table_name  => 'CLOUD_TAB_WITH_CONSTRAINTS',
            column_list => 'PK INTEGER,
                DATE_ID INT REFERENCES DATE_DIM(DATE_ID) RELY DISABLE NOVALIDATE,
                VAL NUMBER NOT NULL,
                CONSTRAINT CLOUD_TAB_PK PRIMARY KEY(PK) RELY DISABLE NOVALIDATE');
    END;
    /

    Consulte Notas da Tabela do Cloud para obter limitações adicionais da Tabela do Cloud.

  • O pacote DBMS_CLOUD é um pacote de direitos do chamador. O procedimento DBMS_CLOUD.CREATE_CLOUD_TABLE só permite criar uma tabela no esquema do chamador.

    Consulte Direitos do Invocador e Cláusula de Direitos do Definidor para obter mais informações.

  • O parâmetro column_list em uma chamada de procedimento DBMS_CLOUD.CREATE_CLOUD_TABLE pode incluir a cláusula DEFAULT, que funciona como a cláusula DEFAULT no CREATE TABLE. Consulte CREATE TABLE para obter mais informações.

    Por exemplo:

    BEGIN
      DBMS_CLOUD.CREATE_CLOUD_TABLE(
       table_name  => 'CLOUD_TABLE_TEST_DEFAULT',
       column_list => 'I INTEGER, STR2 VARCHAR2(32) DEFAULT ''ABC''');
    END;
    /

    Em seguida, você pode inserir com valores padrão. Por exemplo:

    INSERT INTO cloud_table_test_default (i) VALUES (1); 
    1 row created. 
    INSERT INTO cloud_table_test_default VALUES (2, default);
    1 row created.
    INSERT INTO cloud_table_test_default VALUES (3, null);
    1 row created.
    INSERT INTO cloud_table_test_default VALUES (4, 'xyz');
    1 row created.
    COMMIT;
    Commit complete.
    SELECT * FROM cloud_table_test_default ORDER BY i;
    
    I STR2 
    - ---- 
    1 ABC  
    2 ABC  
    3 null 
    4 xyz