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

Você pode criar Tabelas na Nuvem nas quais os dados da tabela residem no Armazenamento na Nuvem gerenciado pela Oracle e os dados da tabela não consomem o armazenamento do banco de dados.

Sobre Tabelas de Nuvem

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

Você pode usar Tabelas na Nuvem para armazenar dados de log de aplicativos não usados com 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 log 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 não são usados com frequência. Usando Tabelas em Nuvem, os dados persistentes são salvos no Object Storage gerenciado pela Oracle, sem consumir o armazenamento do banco de dados.

Restrições SELECT e DML para Tabelas de Nuvem

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

  • As instruções MERGE não são suportadas.
  • As colunas LOB estão limitadas a 10 MB de dados.
  • O controle de simultaneidade de DML é diferente e, portanto:
    • LOCK TABLE não pode impedir o DML concorrente, 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 da Nuvem. Portanto, as transações UPDATE ou DELETE bloqueiam operações simultâneas UPDATE ou DELETE em uma Tabela da Nuvem.
  • Somente constraints NOT NULL são impostas.
  • O DML é permitido em um Autonomous Database de Leitura/Gravação, como é para qualquer outra tabela; as Tabelas em Nuvem também permitem operações DML em um Clone Atualizável.

As Tabelas da Nuvem não suportam o seguinte:

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

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

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

  • Os dados da Tabela da Nuvem são excluídos do backup e da recuperação de uma instância do Autonomous Database (os dados não são submetidos a backup e você não pode restaurar os dados da Tabela da Nuvem).

  • 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 da Nuvem.

A nomenclatura de Tabela na Nuvem no 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 em Nuvem. Veja a seguir uma ilustração do impacto das operações do ciclo de vida nos dados da Tabela Cloud.

Operação do Ciclo de Vida Disponibilidade de Dados da Tabela da Nuvem
O mesmo clone do banco de dados da região A Tabela da Nuvem é clonada sem dados da Tabela da Nuvem
Clone de banco de dados entre regiões A Tabela da Nuvem é clonada sem dados da Tabela da Nuvem
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 da Nuvem está disponível no stand-by, sem os dados da Tabela da Nuvem
Mesmo par de Recuperação de Desastre Baseada em Backup (local) da região Os dados da Tabela da Nuvem e da Tabela da Nuvem estão acessíveis
Par de Recuperação de Desastre Baseada em Backup entre Regiões A Tabela da Nuvem está disponível no stand-by, sem dados da Tabela da Nuvem
Operações de gerenciamento do ciclo de vida que afetam o SCN/timestamp de uma instância do Autonomous Database, incluindo:
  • Backup de longo prazo
  • Restaurar banco de dados (restauração de ponto no tempo)
  • Copiar do backup

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

Operações do Lifecycle Management, incluindo:
  • Gerenciar alocação de recursos
  • Mover
  • Compactar
  • 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 da Nuvem ou nos dados da Tabela da Nuvem

Criar Tabelas da Nuvem

Mostra as etapas para criar uma Tabela da Nuvem no Autonomous Database.

Para criar uma Tabela da Nuvem:

  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 Procedimento para obter mais informações.

  2. Insira dados na Tabela da Nuvem.
    INSERT INTO cloud_table_test VALUES (1, 'xyz');
  3. Selecionar dados de uma Tabela em Nuvem.
    SELECT * FROM cloud_table_test;
    I          STR1
    ---------- --------------------------------
    1          xyz                            

Use DROP TABLE quando quiser eliminar uma Tabela da Nuvem.

Por exemplo:

DROP TABLE CLOUD_TABLE_TEST;

As Tabelas da Nuvem não suportam a lixeira.

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

Observações da Tabela da Nuvem

Fornece observações para Tabelas da Nuvem:

  • 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.

  • 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 da Nuvem para obter limitações adicionais da Tabela da Nuvem.

  • 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 Cláusula Direitos do Chamador e 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 em 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