Usa tabelle cloud per memorizzare informazioni di log e diagnostica

È possibile creare tabelle cloud in cui i dati delle tabelle risiedono nello storage cloud gestito da Oracle e i dati delle tabelle non utilizzano lo storage del database.

Informazioni sulle tabelle cloud

È possibile creare tabelle cloud come alternativa complementare alle tabelle nel database. Tutti i dati delle tabelle cloud vengono memorizzati nello storage degli oggetti gestito da Oracle. Lo storage degli oggetti gestito da Oracle è lo storage esterno, esterno al database, che Autonomous Database crea e gestisce.

È possibile utilizzare le tabelle cloud per memorizzare i dati di log delle applicazioni, le informazioni di diagnostica o per memorizzare altri dati non utilizzati di frequente. In alcune applicazioni esistenti che non vengono eseguite su Autonomous Database, è possibile memorizzare questo tipo di informazioni nei file di un file system locale (ad esempio, utilizzando le API UTL_FILE). Tali meccanismi di registrazione e i file associati possono essere molto utili quando è necessario diagnosticare e risolvere gli errori dell'applicazione. Tuttavia, la memorizzazione delle informazioni nelle tabelle di database può utilizzare grandi quantità di storage del database per i dati utilizzati raramente. Utilizzando le tabelle cloud, i dati persistenti vengono salvati nello storage degli oggetti gestito da Oracle, senza consumare lo storage del database.

Limitazioni SELECT e DML per le tabelle cloud

Le tabelle cloud funzionano come le normali tabelle di database con alcune limitazioni. È possibile utilizzare SELECT e DML, istruzioni di manipolazione dei dati, con le seguenti eccezioni:

  • Le istruzioni MERGE non sono supportate.
  • Le colonne LOB sono limitate a 10 MB di dati.
  • Il controllo della concorrenza DML è diverso e pertanto:
    • LOCK TABLE non può impedire il DML concorrente come per una tabella di database.
    • INSERT non acquisisce un blocco sulla tabella, pertanto INSERT non viene mai bloccato da operazioni DML concorrenti.
    • Le operazioni UPDATE e DELETE acquisiscono entrambi un blocco esclusivo su una tabella cloud. Pertanto, le transazioni UPDATE o DELETE bloccano le operazioni concorrenti di UPDATE o DELETE in una tabella cloud.
  • Vengono applicati solo vincoli NOT NULL.
  • DML è consentito in un Autonomous Database di lettura-scrittura come per qualsiasi altra tabella; le tabelle cloud consentono anche le operazioni DML in una copia aggiornabile.

Le tabelle cloud non supportano quanto riportato di seguito.

  • Indici
  • Colonne invisibili
  • Colonne virtuali
  • Trigger DML
  • Più di 996 colonne
  • Colonne di tipo dati booleano

Operazioni di Lifecycle Management e tabelle cloud

I dati delle tabelle cloud vengono memorizzati nello storage degli oggetti gestito da Oracle. Ciò significa che determinate operazioni su Autonomous Database gestiscono le tabelle cloud in modo diverso rispetto alle tabelle nel database, come indicato di seguito.

  • I dati della tabella cloud vengono esclusi dal backup e dal recupero di un'istanza di Autonomous Database (i dati non vengono sottoposti a backup e non è possibile ripristinare i dati della tabella cloud).

  • I dati delle tabelle cloud sono protetti tramite lo storage degli oggetti gestito da Oracle.

  • Le operazioni di gestione del ciclo di vita che influiscono sullo stato di un'istanza di Autonomous Database non hanno alcun impatto sui dati memorizzati nelle tabelle cloud.

La denominazione delle tabelle cloud nello storage degli oggetti è definita in modo univoco per ogni istanza di Autonomous Database, in base al relativo OCID. Ciò significa che qualsiasi operazione che modifica o introduce un nuovo OCID per un database esistente ha un impatto sulle tabelle cloud. Di seguito viene illustrato l'impatto delle operazioni del ciclo di vita sui dati delle tabelle cloud.

Operazione ciclo di vita Disponibilità dati tabella cloud
Copia database della stessa area La tabella cloud è duplicata senza i dati della tabella cloud
Copia database tra più aree La tabella cloud è duplicata senza i dati della tabella cloud
Standby Autonomous Data Guard della stessa area (locale) I dati delle tabelle cloud e delle tabelle cloud sono accessibili
Autonomous Data Guard in standby tra più aree Cloud Table è disponibile in standby, senza i dati della tabella cloud
Stessa area (locale) peer di disaster recovery basato su backup I dati delle tabelle cloud e delle tabelle cloud sono accessibili
Peer di disaster recovery basato su backup tra più aree Cloud Table è disponibile in standby, senza dati Cloud Table
Le operazioni di gestione del ciclo di vita che influiscono sull'SCN/indicatore orario di un'istanza di Autonomous Database, tra cui:
  • Backup a lungo termine
  • Ripristina database (ripristino point in time)
  • Copia dal backup

La tabella cloud continuerà a essere aggiornata e lo stato precedente dei dati della tabella cloud non viene conservato o ripristinato. Ciò significa che sono disponibili solo i dati correnti della tabella cloud.

Operazioni di Lifecycle Management, tra cui:
  • Gestisci allocazione delle risorse
  • Sposta
  • Riduci
  • Ridenominazione
  • Modalità: sola lettura/lettura-scrittura
  • Modifica tipo di carico di lavoro: ad esempio da Data Warehouse a Elaborazione transazioni
Nessun impatto sulle tabelle cloud o sui dati delle tabelle cloud

Crea tabelle cloud

Mostra i passi per creare una tabella cloud in Autonomous Database.

Per creare una tabella cloud:

  1. Eseguire la procedura CREATE_CLOUD_TABLE.

    Ad esempio:

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

    Per ulteriori informazioni, vedere CREATE_CLOUD_TABLE Procedura.

  2. Inserire i dati nella tabella cloud.
    INSERT INTO cloud_table_test VALUES (1, 'xyz');
  3. Selezionare i dati da una tabella cloud.
    SELECT * FROM cloud_table_test;
    I          STR1
    ---------- --------------------------------
    1          xyz                            

Utilizzare DROP TABLE quando si desidera eliminare una tabella cloud.

Ad esempio:

DROP TABLE CLOUD_TABLE_TEST;

Le tabelle cloud non supportano il cestino.

Per ulteriori informazioni, vedere Note della tabella cloud.

Note tabella cloud

Fornisce note per le tabelle cloud:

  • È possibile concedere i privilegi SELECT, INSERT e UPDATE per una tabella cloud. Non è possibile concedere altri privilegi a una tabella cloud.

    Per ulteriori informazioni, vedere Configurazione dell'autorizzazione di privilegi e ruoli.

  • I vincoli della tabella cloud sono limitati ai vincoli in modalità RELY DISABLE NOVALIDATE, il che significa che il vincolo non viene applicato. L'unica eccezione è rappresentata dai vincoli NOT NULL.

    Le tabelle cloud supportano tutte le modalità di vincolo NOT NULL, inclusa la modalità predefinita (ENABLE VALIDATE). Sono supportati i vincoli PRIMARY KEY, UNIQUE, FOREIGN KEY e NOT NULL; i vincoli CHECK non sono supportati.

    È possibile dichiarare i vincoli in linea come parte di COLUMN_LIST.

    Ad esempio:

    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;
    /

    Per ulteriori limitazioni relative alle tabelle cloud, consulta le note delle tabelle cloud.

  • Il pacchetto DBMS_CLOUD è un pacchetto di diritti di un chiamante. La procedura DBMS_CLOUD.CREATE_CLOUD_TABLE consente solo di creare una tabella nello schema del chiamante.

    Per ulteriori informazioni, vedere Clausola relativa ai diritti del richiedente e ai diritti definiti.

  • Il parametro column_list in una chiamata di procedura DBMS_CLOUD.CREATE_CLOUD_TABLE può includere la clausola DEFAULT, che funziona come la clausola DEFAULT in CREATE TABLE. Per ulteriori informazioni, vedere CREATE TABLE.

    Ad esempio:

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

    È quindi possibile inserire i valori predefiniti. Ad esempio:

    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