Migrazione degli utenti Oracle® a Cloud SQL per PostgreSQL: terminologia e funzionalità

Questo documento fa parte di una serie che fornisce informazioni chiave e indicazioni relative alla pianificazione e all'esecuzione delle migrazioni dei database Oracle® 11g/12c in Cloud SQL per PostgreSQL versione 12. Oltre alla parte introduttiva della configurazione, la serie include le seguenti parti:

Terminologia

Questa sezione descrive le somiglianze e le differenze nella terminologia dei database tra Oracle e Cloud SQL per PostgreSQL. Esamina e confronta gli aspetti principali di ciascuna piattaforma di database. Il confronto fa una distinzione tra le versioni di Oracle 11g e 12c, a causa delle differenze di architettura (ad esempio, Oracle 12c introduce la funzionalità multi-tenant). La versione di Cloud SQL per PostgreSQL a cui viene fatto riferimento qui è 12.

Questa sezione sottolinea le principali differenze terminologiche tra Oracle e Cloud SQL per PostgreSQL. Una descrizione di basso livello viene descritta in dettaglio più avanti in questo documento.

Oracle 11g Description Cloud SQL per PostgreSQL Differenze principali
istanza Una singola istanza Oracle 11g può contenere un solo database. istanza Un'istanza Cloud SQL per PostgreSQL contiene esattamente un cluster di database. Un cluster di database è una raccolta di database archiviata in un'area di dati comune.
database Un database è idoneo come singola istanza (il nome del database è identico al nome dell'istanza). database Più database o singoli database gestiscono più applicazioni.
schema Schema e utenti sono identici perché entrambi sono considerati proprietari degli oggetti di database (un utente può essere creato senza specificare o essere allocato a uno schema). schema Un database contiene uno o più schemi. Oggetti come le tabelle sono contenuti all'interno degli schemi. È possibile usare lo stesso nome oggetto in schema diversi all'interno dello stesso database senza conflitti.
utente Identici allo schema perché entrambi sono proprietari di oggetti di database, ad esempio istanza → database → schemi/utenti → oggetti di database. ruolo Un ruolo può essere un utente del database o un gruppo di utenti del database, a seconda di come è configurato. Può essere proprietario di oggetti del database come le tabelle.

I ruoli hanno come ambito un intero cluster di database ed è possibile concedere l'appartenenza a un ruolo a un altro ruolo.
ruolo Set definito di autorizzazioni per i database che possono essere concatenate come gruppo e possono essere assegnate a utenti del database
admin/
admin/
Utenti amministratori Oracle con il più alto livello di accesso:
SYS
SYSTEM
cloudsqlsuperuser Cloud SQL per PostgreSQL viene fornito con l'utente postgres predefinito. Questo utente fa parte del ruolo cloudsqlsuperuser e dispone dei seguenti attributi (privilegi): CREATEROLE, CREATEDB e LOGIN.

Poiché Cloud SQL per PostgreSQL è un servizio gestito, limita l'accesso ad alcune procedure e tabelle di sistema che richiedono privilegi avanzati. Pertanto, l'utente postgres non dispone degli attributi SUPERUSER o REPLICATION. Non puoi creare utenti con attributi superuser o avere accesso agli utenti.
dizionario/
metadati
Oracle utilizza le seguenti tabelle di metadati:

USER_TableName
ALL_TableName
DBA_TableName
dizionario/
metadati
Cloud SQL per PostgreSQL utilizza lo standard ANSI INFORMATION_SCHEMA per fornire informazioni sul dizionario e sui metadati.
visualizzazioni dinamiche di sistema Visualizzazioni dinamiche Oracle:

V$ViewName
system
viste dinamiche
Cloud SQL per PostgreSQL offre le seguenti visualizzazioni delle statistiche dinamiche:
pg_stat_ViewName
pg_statio_ViewName
spazio tabella Le strutture di archiviazione logiche principali dei database Oracle; ogni spazio tabella può contenere uno o più file di dati. spazio tabella In Cloud SQL per PostgreSQL, i file di dati vengono archiviati insieme nella directory dei dati di un cluster di database PGDATA utilizzando una struttura di directory predefinita. Gli spazi delle tabelle in Cloud SQL per PostgreSQL forniscono un meccanismo per definire posizioni personalizzate nel file system in cui è possibile archiviare i file di dati.

Poiché Cloud SQL per PostgreSQL è un servizio gestito, Google Cloud gestisce per te il file system sottostante della macchina host. Non puoi creare nuovi spazi tabella in Cloud SQL per PostgreSQL.
file di dati Gli elementi fisici
di un database Oracle che contengono i dati e sono definiti in uno spazio tabella specifico.

Un singolo file di dati è definito dalla dimensione iniziale e massima e può contenere dati per più tabelle.

I file di dati Oracle utilizzano il suffisso .dbf (non obbligatorio).
file di dati Cloud SQL per PostgreSQL archivia ogni database in un cluster di database nella propria sottodirectory. Ogni tabella e indice all'interno di un database vengono archiviati in un file separato in quella sottodirectory.
spazio delle tabelle di sistema Contiene le tabelle del dizionario dei dati e gli oggetti delle viste per l'intero database Oracle. Inesistente Gli oggetti delle tabelle e delle viste del dizionario dati sono archiviati in INFORMATION_SCHEMA nella directory dei dati di un cluster di database PGDATA utilizzando una struttura di directory predefinita.
spazio tabella temporaneo Contiene oggetti schema validi per la durata di una sessione; inoltre,
supporta l'esecuzione di operazioni che non possono rimanere nella memoria del server.
file temporanei I file temporanei vengono utilizzati per archiviare le operazioni in esecuzione che non possono rimanere nella memoria del server. Questi file vengono archiviati in una directory denominata pgsql_tmp e vengono creati solo durante l'esecuzione dell'istruzione SQL.
Annulla spazio tabella Un tipo speciale di tablespace permanente del sistema utilizzato da Oracle per gestire le operazioni di rollback
quando il database viene eseguito in modalità di gestione automatica dell'annullamento (impostazione predefinita).
Inesistente Per consentire le operazioni di rollback, Cloud SQL per PostgreSQL conserva le righe aggiornate o eliminate all'interno del file di dati della tabella. L'aspirapolvere è il processo di recupero o riutilizzo dello spazio su disco occupato da righe aggiornate o eliminate.
ASM Oracle Automatic Storage Management è un file system di database e una gestione dischi integrati ad alte prestazioni, il tutto eseguito automaticamente da un database Oracle configurato con ASM. Funzionalità non supportata Cloud SQL per PostgreSQL si basa sul file system del sistema operativo per archiviare i file di dati e non ha un equivalente Oracle ASM. Tuttavia, Cloud SQL per PostgreSQL supporta molte funzionalità che forniscono l'automazione dell'archiviazione, come gli aumenti automatici dell'archiviazione, le prestazioni e la scalabilità.
tabelle/visualizzazioni Oggetti di database di base creati dall'utente. tabelle/visualizzazioni Identico a Oracle.
viste materializzate Definite con
istruzioni SQL specifiche e possono essere aggiornate manualmente o automaticamente in base a configurazioni specifiche.
viste materializzate Le viste materializzate funzionano in modo simile a Oracle. Vengono aggiornate manualmente utilizzando le istruzioni REFRESH MATERIALIZED VIEW.
sequenza Generatore di valori unici Oracle. sequenza Simile ad Oracle.
sinonimo Oggetti di database Oracle che fungono da identificatori alternativi per altri oggetti di database. Funzionalità non supportata Cloud SQL per PostgreSQL non offre sinonimi; come soluzione alternativa, puoi utilizzare le viste durante l'impostazione delle autorizzazioni appropriate.
partizionamento Oracle offre molte soluzioni di partizionamento per la suddivisione di tabelle di grandi dimensioni in parti gestite più piccole. partizionamento Cloud SQL per PostgreSQL supporta il partizionamento dichiarativo e il partizionamento tramite ereditarietà dello stile Oracle, consentendo una maggiore flessibilità di partizionamento.
Database Flashback Caratteristica proprietaria di Oracle che può essere utilizzata per inizializzare un database Oracle in un intervallo di tempo definito in precedenza, permettendoti di eseguire query o ripristinare i dati che sono stati modificati o danneggiati per errore. Funzionalità non supportata Per una soluzione alternativa, puoi utilizzare i backup e il ripristino point-in-time di Cloud SQL per ripristinare lo stato precedente di un database (ad esempio il ripristino prima dell'eliminazione di una tabella).
sqlplus Interfaccia a riga di comando Oracle che consente di eseguire query e gestire l'istanza del database. psql Interfaccia a riga di comando equivalente di Cloud SQL per PostgreSQL per l'esecuzione di query e la gestione. Può essere connesso da qualsiasi client con le autorizzazioni appropriate per Cloud SQL.
PL/SQL Oracle ha esteso il linguaggio procedurale a SQL ANSI. PL/pgSQL Cloud SQL per PostgreSQL ha un proprio linguaggio procedurale chiamato PL/pgSQL, che è simile a PL/SQL di Oracle sotto molti aspetti. Per un riepilogo delle principali differenze tra i due linguaggi, consulta Trasferimento da Oracle PL/SQL.
corpo del pacchetto e del pacco Funzionalità specifiche di Oracle per raggruppare le stored procedure e le funzioni sotto lo stesso riferimento logico. Non supportata Cloud SQL per PostgreSQL organizza le funzioni utilizzando gli schemi.
procedure e funzioni archiviate Utilizza PL/SQL per implementare la funzionalità di codice. Archiviate procedure e funzioni Cloud SQL per PostgreSQL supporta l'implementazione di procedure e funzioni archiviate utilizzando una varietà di linguaggi di programmazione come PL/pgSQL e C.
attivatore Oggetto Oracle utilizzato per controllare l'implementazione di DML sulle tabelle. attivatore Simile ad Oracle.
PFILE/SPFILE I parametri a livello di istanza e database Oracle sono conservati in un file binario chiamato SPFILE (nelle versioni precedenti il file si chiamava PFILE), che può essere utilizzato come file di testo per impostare manualmente i parametri. Flag di database Cloud SQL per PostgreSQL Puoi impostare o modificare i parametri di Cloud SQL per PostgreSQL tramite l'utilità dei flag di database.
SGA/PGA/
AMM
Parametri di memoria Oracle che controllano l'allocazione della memoria all'istanza del database. Una serie di parametri relativi alla memoria Cloud SQL per PostgreSQL ha i propri parametri di memoria. Alcuni parametri simili sono shared_buffers, temp_buffers e work_mem. In Cloud SQL per PostgreSQL, questi parametri sono predefiniti in base al tipo di istanza scelto e il valore cambia di conseguenza. Puoi modificare alcuni di questi parametri utilizzando l'utilità dei flag di database.
cache del buffer Riduce le operazioni di I/O SQL recuperando i dati memorizzati nella cache dalla cache del buffer. I parametri di memoria possono essere gestiti a livello di database e di sessione tramite i suggerimenti delle query. Funzionalità simili Le dimensioni della cache del buffer di Cloud SQL per PostgreSQL sono controllate dal parametro shared_buffer, che non è esposto in Cloud SQL. Cloud SQL fornisce una metrica di utilizzo della memoria, che viene utilizzata per ridimensionare l'istanza.
suggerimenti sul database Capacità di Oracle di fornire un impatto controllato sulle istruzioni SQL, che influiranno sul comportamento dell'ottimizzatore per ottenere prestazioni migliori. Oracle offre oltre 50 hint di database diversi. Funzionalità non supportata Cloud SQL per PostgreSQL non supporta i suggerimenti di database. Con limitazioni, puoi controllare lo strumento di pianificazione delle query di Cloud SQL per PostgreSQL utilizzando una sintassi JOIN esplicita.
RMAN Utilità Oracle Recovery Manager. Utilizzato per eseguire backup di database con funzionalità estesa per supportare più scenari di ripristino di emergenza e altro ancora (clonazione e così via). Backup di Cloud SQL per PostgreSQL Cloud SQL per PostgreSQL offre due metodi per applicare backup completi: backup on demand e automatici.
Pompa dati
(EXPDP/
IMPDP)
Utilità di generazione del dump Oracle che può essere utilizzata per molte funzionalità, come esportazione/importazione, backup del database (a livello di schema o oggetto), metadati di schema, generazione di file SQL di schema e altro ancora. Esportazione/importazione di Cloud SQL per PostgreSQL Cloud SQL per PostgreSQL offre due formati di export/import da e verso i bucket Cloud Storage: SQL e CSV.

In alternativa, puoi connetterti all'istanza di database utilizzando utilità di esportazione/importazione come pg_dump.
SQL*Loader Strumento che consente di caricare i dati da file esterni, come file di testo, file CSV e altro ancora. psql \copy Il comando \copy nel client psql consente di caricare file di testo, CSV o binari (Oracle supporta formati di file aggiuntivi) in una tabella di database con una struttura corrispondente.
Protezione dei dati Soluzione di ripristino di emergenza Oracle che utilizza un'istanza in standby, che consente agli utenti di eseguire operazioni READ dall'istanza in standby. Alta disponibilità e replica di Cloud SQL per PostgreSQL Per ottenere il ripristino di emergenza o l'alta disponibilità, Cloud SQL per PostgreSQL offre l'architettura di replica di failover e per le operazioni di sola lettura (separazione tra READ/WRITE) utilizzando la Replica di lettura.
Active Data Guard/
GoldenGate
Principali soluzioni di replica di Oracle, utili per vari scopi, come standby (RE), istanza di sola lettura, replica bidirezionale (multi-master), data warehousing e altro ancora. Replica di lettura di Cloud SQL per PostgreSQL Replica di lettura di Cloud SQL per PostgreSQL per implementare il clustering con separazione READ/WRITE. Attualmente non è disponibile il supporto per la configurazione multi-master, come la replica BI-direzionale di GoldenGate o la replica eterogenea.
RAC Oracle Real Application Cluster. Soluzione di clustering proprietaria Oracle per fornire alta disponibilità eseguendo il deployment di più istanze di database con una singola unità di archiviazione. Funzionalità non supportata Cloud SQL per PostgreSQL non supporta un'architettura multi-master. Cloud SQL per PostgreSQL offre alta disponibilità tramite un'istanza in standby e una maggiore scalabilità di lettura tramite le repliche di lettura.
Grid/Cloud Control (OEM) Software Oracle per la gestione e il monitoraggio di database e altri servizi correlati in un formato di applicazione web. È uno strumento utile per l'analisi dei database in tempo reale, al fine di comprendere carichi di lavoro elevati. Console Google Cloud,
Cloud Monitoring
Utilizza Cloud SQL per PostgreSQL per il monitoraggio, inclusi grafici dettagliati basati su tempi e risorse. Utilizza Cloud Monitoring anche per l'archiviazione di metriche di monitoraggio specifiche e l'analisi dei log di Cloud SQL per PostgreSQL per funzionalità di monitoraggio avanzate.
RIPETI i log Log delle transazioni Oracle costituiti da due (o più) file definiti preallocati in cui sono archiviate tutte le modifiche ai dati man mano che si verificano. Lo scopo principale del log di ripetizione è proteggere il database in caso di errore dell'istanza. Log WAL Cloud SQL per PostgreSQL utilizza Write-Ahead Logging (WAL) per fare in modo che le modifiche ai file di dati vengano cancellate in modo da consentire l'archiviazione permanente e consentire il ripristino in seguito a un arresto anomalo.
archiviare i log I log di archiviazione forniscono supporto per operazioni di backup e replica e altro ancora. Oracle scrive nei log di archiviazione (se abilitati) dopo ogni operazione di ripristino dei log. Archiviazione WAL Implementazione di Cloud SQL per PostgreSQL per la conservazione dei log WAL. L'archiviazione WAL viene utilizzata e abilitata con il recupero point-in-time.
file di controllo Il file di controllo Oracle contiene informazioni sul database, come file di dati, nomi di log di ripetizione, posizioni, numero di sequenza di log corrente e informazioni sul checkpoint dell'istanza. PGDATA and pg_control L'architettura Cloud SQL per PostgreSQL non condivide un concetto equivalente a un file di controllo Oracle. I file relativi al database sono organizzati in una directory comunemente denominata PGDATA. Le informazioni WAL relative a record e checkpoint sono archiviate in pg_control.
Numero di modifica del sistema (SCN) La SCN contrassegna un momento specifico in un database Oracle. Numero di sequenza dei log (LSN) L'equivalente di Cloud SQL per PostgreSQL è LSN. Come le SCN, gli LSN aumentano in modo monotonico nel tempo.
AWR Oracle AWR (Automatic Workload Repository) è un report dettagliato che fornisce informazioni dettagliate sulle prestazioni delle istanze del database Oracle ed è considerato uno strumento di gestione del database per la diagnostica delle prestazioni. raccoglitore di statistiche Cloud SQL per PostgreSQL non dispone di un report equivalente a Oracle AWR, ma PostgreSQL raccoglie i dati sulle prestazioni raccolti dal raccoglitore di statistiche. Le statistiche raccolte sono mostrate tramite le viste pg_stat_* e pg_statio_*.
DBMS_SCHEDULER Utilità Oracle utilizzata per impostare e programmare le operazioni predefinite. Funzionalità non supportata Cloud SQL per PostgreSQL non fornisce un'utilità di pianificazione integrata.

Google Cloud offre Cloud Scheduler, che consente di pianificare attività di database come le esportazioni.
Crittografia dei dati trasparente Cripta i dati archiviati sui dischi come protezione dei dati at-rest. Cloud SQL Advanced Encryption Standard Cloud SQL per PostgreSQL utilizza l'algoritmo Advanced Encryption Standard (AES-256) a 256 bit per proteggere i dati at-rest e in transito.
Compressione avanzata Per migliorare l'utilizzo dello spazio di archiviazione del database, ridurre i costi di archiviazione e migliorare le prestazioni del database, Oracle fornisce funzionalità di compressione avanzate per dati (tabelle/indici). TOAST Sebbene non sia direttamente paragonabile alla compressione avanzata Oracle, Cloud SQL per PostgreSQL utilizza un'infrastruttura chiamata TOAST per comprimere in modo automatico e trasparente i dati di lunghezza variabile troppo grandi per essere inseriti in un'unica pagina di dati.
Sviluppatore SQL GUI SQL gratuita di Oracle per la gestione e l'esecuzione di istruzioni SQL e PL/SQL. pgAdmin GUI SQL gratuita di Cloud SQL per PostgreSQL per la gestione e l'esecuzione di istruzioni di codice SQL e PostgreSQL.
Log degli avvisi Log principale di Oracle per errori e operazioni generali del database. Report e logging degli errori PostgreSQL Utilizza il visualizzatore di log di Cloud Logging per ispezionare i log degli errori PostgreSQL.
Tabella DUAL Tabella speciale Oracle per il recupero di valori di pseudo-colonne come SYSDATE o USER. Inesistente Cloud SQL per PostgreSQL consente di omettere le clausole FROM dalle istruzioni SQL. Ad esempio:

SELECT NOW();
è un'istruzione valida in PostgreSQL.
tabella esterna Oracle consente agli utenti di creare tabelle esterne con i dati di origine su file esterni al database. Funzionalità non supportata Come servizio gestito, Cloud SQL per PostgreSQL non espone il file system sottostante dell'host che esegue l'istanza di database.

Come soluzione alternativa, puoi importare i dati di origine in una tabella PostgreSQL per eseguire query sui dati.
Listener Processo di rete Oracle incaricato di esaminare le connessioni ai database in entrata. Reti autorizzate Cloud SQL Cloud SQL per PostgreSQL accetta le connessioni da origini remote, una volta consentite nella pagina di configurazione delle reti autorizzate di Cloud SQL.
TNSNAMES File di configurazione di rete Oracle che definisce gli indirizzi di database per stabilire le connessioni tramite alias di connessione. Inesistente Cloud SQL per PostgreSQL accetta connessioni esterne utilizzando il nome di connessione dell'istanza Cloud SQL o l'indirizzo IP privato/pubblico. Il proxy Cloud SQL è un ulteriore metodo di accesso sicuro per connettersi a Cloud SQL per PostgreSQL senza dover consentire indirizzi IP specifici o configurare SSL.
Porta predefinita dell'istanza 1521 Porta predefinita dell'istanza 5432
Link al database Oggetti schema Oracle che possono essere utilizzati per interagire con oggetti di database locali/remoti. Wrapper dati esterni (FDW) L'estensione postgres_fdw in Cloud SQL per PostgreSQL consente di esporre tabelle di altri database PostgreSQL ("stranieri") come tabelle "esterne" nel database corrente. Queste tabelle sono quindi disponibili per l'uso, quasi come se fossero tabelle locali.

Differenze nella terminologia tra Oracle 12c e Cloud SQL per PostgreSQL

Oracle 12c Description Cloud SQL per PostgreSQL Differenze principali
Istanza La funzionalità multi-tenant introdotta in Oracle 12c consente a un'istanza di archiviare più database come database modulari (PDB), al contrario di Oracle 11g, in cui un'istanza Oracle può ospitare un singolo database. Istanza Un'istanza Cloud SQL per PostgreSQL contiene esattamente un cluster di database. Un cluster di database è una raccolta di database archiviata in un'area dati comune.
CDB Un database di container multitenant (CDB) può supportare uno o più PDB, mentre è possibile creare oggetti globali CDB (interessa tutti i PDB), ad esempio i ruoli. Istanza PostgreSQL L'istanza Cloud SQL per PostgreSQL è paragonabile a Oracle CDB. Entrambi forniscono un livello di sistema per i database ospitati.
PDB I PDB (database collegabili) possono essere utilizzati per isolare servizi e applicazioni l'uno dall'altro e come una raccolta portabile di schemi. Database PostgreSQL/
schemi
Un database Cloud SQL per PostgreSQL può gestire più servizi e applicazioni, nonché molti utenti di database.
Sequenze di sessione A partire da Oracle 12c, le sequenze possono essere create a livello di sessione (restituire valori univoci solo all'interno di una sessione) o a livello globale (ad esempio, quando si utilizzano tabelle temporanee). Sequenza temporanea La sequenza temporanea viene creata per la sessione di database corrente e viene eliminata automaticamente all'uscita dalla sessione.
Colonne Identity Il tipo IDENTITY di Oracle 12c genera una sequenza e la associa a una colonna di tabella senza dover creare manualmente un oggetto sequenza separato. Colonna SERIAL Definendo il tipo di dati di una colonna come SERIAL, Cloud SQL per PostgreSQL crea automaticamente una sequenza e compila il valore della colonna utilizzando questa sequenza quando nella tabella vengono inserite nuove righe.
Spartizionamento Lo sharding Oracle è una soluzione in cui un database Oracle è partizionato in più database (shard) più piccoli per consentire scalabilità, disponibilità e distribuzione geografica per ambienti OLTP. Non supportata (come funzionalità) Cloud SQL per PostgreSQL non ha una funzionalità dello sharding equivalente. Lo sharding può essere implementato utilizzando Cloud SQL per PostgreSQL (come piattaforma dati) con un livello di applicazione di supporto.
Database in memoria Oracle offre una suite di funzionalità in grado di migliorare le prestazioni del database per OLTP e per carichi di lavoro misti. Funzionalità non supportata Cloud SQL per PostgreSQL non ha una funzionalità equivalente integrata. Tuttavia, in alternativa, puoi utilizzare il nostro servizio Redis gestito, Memorystore.
Oscuramento Nell'ambito delle funzionalità di sicurezza avanzate di Oracle, l'oscuramento può eseguire il mascheramento delle colonne per impedire il recupero dei dati sensibili da parte di utenti e applicazioni. Funzionalità non supportata Cloud SQL per PostgreSQL non ha una funzionalità equivalente integrata. Tuttavia, Sensitive Data Protection può essere utilizzato per anonimizzare i dati sensibili.

Funzionalità

Sebbene i database Oracle 11g/12c e Cloud SQL per PostgreSQL siano basati su architetture diverse (infrastruttura e linguaggi procedurali estesi), condividono gli stessi aspetti fondamentali di un sistema di database relazionale. Supportano oggetti di database, carichi di lavoro di contemporaneità multiutente e transazioni con proprietà ACID. Gestisce inoltre le contese di blocco con più livelli di isolamento (in base alle esigenze dell'applicazione) e soddisfa i requisiti continui della richiesta sia per le operazioni di elaborazione transazionale online (OLTP) che per l'elaborazione analitica online (OLAP).

La seguente sezione fornisce una panoramica di alcune delle principali differenze funzionali tra Oracle e Cloud SQL per PostgreSQL. In alcuni casi, dove è necessario evidenziare le differenze, la sezione include confronti tecnici dettagliati.

Creazione e visualizzazione dei database esistenti

Oracle 11g/12c Cloud SQL per PostgreSQL 12
In genere, puoi creare database e visualizzare quelli esistenti utilizzando l'utilità Oracle Database Creation Assistant (DBCA). Le istanze o i database creati manualmente richiedono parametri aggiuntivi:

SQL> CREATE DATABASE ORADB
USER SYS IDENTIFIED BY password
USER SYSTEM IDENTIFIED BY password
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE temp
UNDO TABLESPACE undotbs1
DEFAULT TABLESPACE users;
Usa un'istruzione nel formato CREATE DATABASE Name;, come in questo esempio:

postgres=> CREATE DATABASE PGSQLDB;
Oracle 12c Cloud SQL per PostgreSQL 12
In Oracle 12c, puoi creare PDB dal seed, da un modello di database di container (CDB) o clonando un PDB da un PDB esistente. Puoi utilizzare diversi parametri:

SQL> CREATE PLUGGABLE DATABASE PDB
ADMIN USER usr IDENTIFIED BY passwd
ROLES = (dba)
DEFAULT TABLESPACE sales
DATAFILE '/disk1/ora/dbs/db/db.dbf'
SIZE 250M AUTOEXTEND ON
FILE_NAME_CONVERT =
('/disk1/oracle/dbs/pdbseed/',
'/disk1/oracle/dbs/salespdb/')
STORAGE (MAXSIZE 2G)
PATH_PREFIX =
'/disk1/oracle/dbs/salespdb/';
Usa un'istruzione nel formato CREATE DATABASE Name;, come in questo esempio:

postgres=> CREATE DATABASE PGSQLDB;
Elenca tutti i PDB:

SQL> SHOW is PDBS;
Elenca tutti i database esistenti:

postgres=> \list
Connettiti a un PDB diverso:

SQL> ALTER SESSION SET CONTAINER=pdb;
Connettiti a un altro database:

postgres=> \connect databaseName;
Oppure:

postgres=> \c databaseName
Apri o chiudi un PDB specifico (aperto/di sola lettura):

SQL> ALTER PLUGGABLE DATABASE pdb CLOSE;
Non supportato per un singolo database.

Tutti i database si trovano nella stessa istanza Cloud SQL per PostgreSQL; di conseguenza, tutti i database sono attivi o inattivi.

Gestione di un database tramite la console Google Cloud

  • Nella console Google Cloud, vai a Database>SQL>Istanza>(seleziona l'istanza PostgreSQL)>Database.

    Gestione di un database tramite la console Google Cloud.

Dizionario dati e visualizzazioni dinamiche

I database Oracle offrono un dizionario di dati insieme a visualizzazioni dinamiche delle prestazioni (V$ viste) che facilitano una varietà di attività di monitoraggio e manutenzione dei database. Il dizionario dati archivia tutte le informazioni utilizzate per gestire gli oggetti nel database, mentre le visualizzazioni delle prestazioni dinamiche contengono molte informazioni relative alle prestazioni del database. Queste viste vengono aggiornate continuamente durante l'esecuzione del database.

Al contrario, PostgreSQL offre diversi cataloghi di metadati che hanno uno scopo simile al dizionario dei dati di Oracle e alle visualizzazioni dinamiche delle prestazioni:

  • Catalogo di sistema: metadati relativi a tutti gli oggetti del database.
  • Visualizzazioni raccolte statistiche: report sulle attività di PostgreSQL.
  • Visualizzazioni dello schema di informazioni: metadati su tutti gli oggetti di database segnalati in base allo standard SQL ANSI.

Visualizzazione dei metadati e delle visualizzazioni dinamiche del sistema

Questa sezione fornisce una panoramica di alcune delle tabelle di metadati e delle viste dinamiche di sistema più comuni utilizzate in Oracle e degli oggetti di database corrispondenti in Cloud SQL per PostgreSQL versione 12.

Oracle fornisce centinaia di tabelle e viste di metadati di sistema (in alcuni schemi di sistema, ad esempio SYS o SYSTEM), mentre PostgreSQL ne contiene solo diverse dozzine. Per ogni caso, può essere presente più di un oggetto di database, che serve a uno scopo specifico.

Oracle offre diversi livelli di oggetti di metadati, ognuno dei quali richiede privilegi diversi:

  • USER_TableName: visualizzabili dall'utente.
  • ALL_TableName: visibile a tutti gli utenti.
  • DBA_TableName: visibile solo agli utenti con il privilegio "DBA", come SYS e SYSTEM.

Per le viste delle prestazioni dinamiche, Oracle utilizza i prefissi V$/GV$. Al contrario, le viste e i metadati di Cloud SQL per PostgreSQL risiedono negli schemi information_schema e pg_catalog.

Tipo di metadati Tabella/visualizzazione Oracle Tabella/visualizzazione/query Cloud SQL per PostgreSQL
Sessioni aperte V$SESSION pg_catalog.pg_stat_activity
Transazioni in corso V$TRANSACTION Non supportati. Per risolvere il problema, pg_locks fornisce un elenco di transazioni aperte che prevedono uno o più blocchi.
Oggetti di database DBA_OBJECTS pg_catalog.pg_class
Tabelle DBA_TABLES pg_catalog.pg_tables
Colonne della tabella DBA_TAB_COLUMNS pg_catalog.pg_attribute
Privilegi per tabelle e colonne TABLE_PRIVILEGES
DBA_COL_PRIVS ROLE_TAB_PRIVS
information_schema.table_privileges information_schema.column_privileges
Partizioni DBA_TAB_PARTITIONS DBA_TAB_SUBPARTITIONS pg_catalog.pg_partitioned_table
Visualizzazioni DBA_VIEWS pg_catalog.pg_views
Vincoli DBA_CONSTRAINTS pg_catalog.pg_constraint
Indici DBA_INDEXES
DBA_PART_INDEXES
pg_catalog.pg_index
Viste materializzate DBA_MVIEWS pg_catalog.pg_matviews
Archiviati procedure DBA_PROCEDURES pg_catalog.pg_proc
Funzioni archiviate DBA_PROCEDURES pg_catalog.pg_proc
Trigger DBA_TRIGGERS pg_catalog.pg_trigger
Utenti DBA_USERS pg_catalog.pg_user
Privilegi utente DBA_SYS_PRIVS
DBA_ROLE_PRIVS
SESSION_PRIVS
pg_catalog.pg_roles
Job/
pianificatore
DBA_JOBS
DBA_JOBS_RUNNING
DBA_SCHEDULER_JOBS
DBA_SCHEDULER_JOB_LOG
Non supportati.
Spazi tabella DBA_TABLESPACES pg_catalog.pg_tablespace
File di dati DBA_DATA_FILES Non supportati.
Sinonimi DBA_SYNONYMS Non supportati.
Sequenze DBA_SEQUENCES pg_catalog.pg_sequence
Link al database DBA_DB_LINKS pg_catalog.pg_foreign_server
Statistiche DBA_TAB_STATISTICS DBA_TAB_COL_STATISTICS DBA_SQLTUNE_STATISTICS DBA_CPU_USAGE_STATISTICS pg_catalog.pg_stats
pg_catalog.pg_statistic
pg_catalog.pg_stat_database
pg_catalog.pg_stat_all_tables
pg_catalog.pg_stat_all_indexes
pg_catalog.pg_statio_all_tables
pg_catalog.pg_statio_all_indexes
pg_catalog.pg_statio_all_sequences
Serrature DBA_LOCK
DBA_DDL_LOCKS
DBA_DML_LOCKS
V$SESSION_BLOCKERS
V$LOCKED_OBJECT
pg_catalog.pg_locks
Parametri del database V$PARAMETER
V$NLS_PARAMETERS
SHOW PARAMETER <Param>

pg_catalog.pg_settings show
Segmenti DBA_SEGMENTS Non supportati.
Ruoli DBA_ROLES
DBA_ROLE_PRIVS
USER_ROLE_PRIVS
pg_catalog.pg_roles
Cronologia delle sessioni V$ACTIVE_SESSION_HISTORY
DBA_HIST_*
Non supportati.
Versione V$VERSION select version();
Eventi di attesa V$WAITCLASSMETRIC
V$WAITCLASSMETRIC_HISTORY
V$WAITSTAT
V$WAIT_CHAINS
Non supportati.
Ottimizzazione e
analisi SQL
V$SQL
V$SQLAREA
V$SESS_IO
V$SYSSTAT
V$STATNAME
V$OSSTAT
V$ACTIVE_SESSION_HISTORY
V$SESSION_WAIT
V$SESSION_WAIT_CLASS
V$SYSTEM_WAIT_CLASS
V$LATCH
V$SYS_OPTIMIZER_ENV
V$SQL_PLAN
V$SQL_PLAN_STATISTICS
Non supportati.
Ottimizzazione della memoria
dell'istanza
V$SGA V$SGASTAT V$SGAINFO V$SGA_CURRENT_RESIZE_OPS V$SGA_RESIZE_OPS V$SGA_DYNAMIC_COMPONENTS V$SGA_DYNAMIC_FREE_MEMORY V$PGASTAT Non integrato in Cloud SQL per PostgreSQL. Utilizza l'estensione pg_buffercache per esaminare la cache del buffer condivisa in tempo reale.

Parametri di sistema

Entrambi i database Oracle e Cloud SQL per PostgreSQL possono essere configurati in modo specifico per ottenere determinate funzionalità oltre alla configurazione predefinita. Per modificare i parametri di configurazione in Oracle, sono necessarie alcune autorizzazioni di amministrazione (principalmente le autorizzazioni utente SYS/SYSTEM).

Di seguito è riportato un esempio di modifica della configurazione Oracle utilizzando l'istruzione ALTER SYSTEM. In questo esempio, l'utente modifica il parametro "Numero massimo di tentativi per accessi non riusciti" solo a livello di configurazione spfile (la modifica è valida solo dopo un riavvio):

SQL> ALTER SYSTEM SET SEC_MAX_FAILED_LOGIN_ATTEMPTS=2 SCOPE=spfile;

Nell'esempio successivo, l'utente richiede di visualizzare il valore del parametro Oracle:

SQL> SHOW PARAMETER SEC_MAX_FAILED_LOGIN_ATTEMPTS;

L'output è simile al seguente:

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sec_max_failed_login_attempts        integer     2

La modifica dei parametri Oracle funziona in tre ambiti:

  • SPFILE: le modifiche dei parametri vengono scritte in Oracle spfile, ma è necessario il riavvio dell'istanza affinché il parametro abbia effetto.
  • MEMORY: le modifiche dei parametri vengono applicate solo nel livello di memoria, mentre non è consentita la modifica di parametri statici.
  • BOTH: le modifiche dei parametri vengono applicate sia nel file dei parametri del server sia nella memoria dell'istanza, dove non è consentita alcuna modifica dei parametri statici.

Flag di configurazione di Cloud SQL per PostgreSQL

Puoi modificare i parametri di sistema di Cloud SQL per PostgreSQL utilizzando i flag di configurazione nella console Google Cloud, gcloud CLI o CURL. Consulta l'elenco completo di tutti i parametri supportati da Cloud SQL per PostgreSQL che puoi modificare.

I parametri PostgreSQL possono essere suddivisi in diversi ambiti:

  • Parametri dinamici: possono essere modificati in fase di esecuzione.
  • Parametri del database: si applicano solo a un database specifico all'interno di un'istanza PostgreSQL.
  • Parametri del ruolo: si applicano solo a un ruolo del database specifico.
  • Parametri statici: per applicare il riavvio è necessario che l'istanza venga riavviata.
  • Parametri di sessione: possono essere modificati a livello di sessione solo per la durata della sessione corrente, isolati dalle altre sessioni.
  • Parametri globali: hanno effetto globale su tutte le sessioni attuali e future.

Esempi di modifica dei parametri di Cloud SQL per PostgreSQL

Console

Utilizza la console Google Cloud per abilitare il parametro log_connections.

  1. Vai alla pagina Modifica istanza di Cloud Storage.

    Vai a Istanze

  2. In Flag, fai clic su Aggiungi elemento e cerca log_connections come nello screenshot seguente.

    Abilitazione delle connessioni dei log nella console.

gcloud

  • Utilizza gcloud CLI per abilitare il parametro log_connections:
gcloud sql instances patch INSTANCE_NAME \
    --database-flags log_connections=on

L'output è il seguente:

WARNING: This patch modifies database flag values, which may require
your instance to be restarted. Check the list of supported flags -
/sql/docs/postgres/flags - to see if your
instance will be restarted when this patch is submitted.

Do you want to continue (Y/n)?

Cloud SQL per PostgreSQL

Imposta timezone a livello di sessione. Questa modifica rimane valida per la sessione corrente e si applica solo per la sua durata.

  1. Mostra parametro di configurazione timezone:

    postgres=> SHOW timezone;
    

    Vedrai il seguente output, dove timezone è set to UTC:

     TimeZone
    ----------
     UTC
    (1 row)
    
  2. Imposta timezone su UTC-9:

    postgres=> SET timezone='UTC-9';
    
  3. Mostra parametro di configurazione timezone:

    postgres> SHOW timezone;
    

    Vedrai il seguente output, dove timezone è impostato su UTC-9:

     TimeZone
    ----------
     UTC-9
    (1 row)
    

Transazioni e livelli di isolamento

Questa sezione descrive le principali differenze nell'esecuzione delle transazioni e nei livelli di isolamento tra Oracle e Cloud SQL per PostgreSQL.

Modalità di commit

Per impostazione predefinita, Oracle funziona in modalità non di commit automatico, in cui ogni transazione DML deve essere determinata con istruzioni COMMIT/ROLLBACK. Una delle differenze fondamentali tra Oracle e PostgreSQL è che PostgreSQL invia implicitamente un COMMIT dopo ogni comando che non segue START TRANSACTION (o BEGIN). Questo comportamento è conosciuto anche da alcuni altri motori di database come autocommit. Anche se il commit automatico è abilitato per impostazione predefinita, può essere disabilitato a livello di sessione utilizzando SET AUTOCOMMIT OFF.

Livelli di isolamento

Lo standard SQL ANSI/ISO (SQL:92) definisce quattro livelli di isolamento. Ogni livello offre un approccio diverso per la gestione dell'esecuzione contemporanea di transazioni del database:

  • Lettura senza commit: una transazione attualmente elaborata può visualizzare i dati di cui non è stato eseguito il commit. Se viene eseguito un rollback, tutti i dati vengono ripristinati allo stato precedente.
  • Lettura impegnata: una transazione vede solo le modifiche ai dati che sono state applicate, mentre le modifiche di cui non è stato eseguito il commit ("letture sporche") non sono possibili.
  • Lettura ripetuta:una transazione può visualizzare le modifiche apportate dall'altra transazione solo dopo che entrambe le transazioni hanno emesso un COMMIT o sono state ripristinate.
  • Serializzabile: il livello di isolamento più rigoroso/più forte. Questo livello blocca tutti i record a cui si accede e blocca la risorsa in modo che non sia possibile aggiungere record alla tabella.

I livelli di isolamento delle transazioni gestiscono la visibilità dei dati modificati come vengono visti da altre transazioni in esecuzione. Inoltre, quando più transazioni simultanee accedono agli stessi dati, il livello di isolamento delle transazioni selezionato influisce sul modo in cui le diverse transazioni interagiscono.

Oracle supporta i seguenti livelli di isolamento:

  • Impegno di lettura (impostazione predefinita)
  • Serializzabile
  • Sola lettura (non fa parte dello standard ANSI/ISO SQL (SQL:92)

Oracle MVCC (Multiversion Concurrency Control):

  • Oracle utilizza il meccanismo MVCC per fornire coerenza automatica di lettura nell'intero database e in tutte le sessioni.
  • Oracle si basa sul numero di modifica del sistema (SCN) della transazione corrente per ottenere una visualizzazione coerente del database; pertanto, tutte le query del database restituiscono solo i dati impegnati in relazione alla SCN al momento dell'esecuzione della query.
  • I livelli di isolamento possono essere modificati a livello di transazione e sessione.

Ecco un esempio di impostazione dei livelli di isolamento:

-- Transaction Level
SQL> SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SQL> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SQL> SET TRANSACTION READ ONLY;

-- Session Level
SQL> ALTER SESSION SET ISOLATION_LEVEL = SERIALIZABLE;
SQL> ALTER SESSION SET ISOLATION_LEVEL = READ COMMITTED;

Cloud SQL per PostgreSQL supporta i seguenti quattro livelli di isolamento delle transazioni specificati nello standard ANSI SQL:92:

  • Lettura senza impegno (equivalente a impegno di lettura)
  • Impegno di lettura (impostazione predefinita)
  • Lettura ripetibile
  • Serializzabile

Il livello di isolamento predefinito di Cloud SQL per PostgreSQL è READ COMMITTED. Questi livelli di isolamento possono essere modificati a livello di SESSION, a livello di TRANSACTION e a livello di INSTANCE.

Per verificare i livelli di isolamento attuali sia a livello di TRANSACTION che di SESSION, utilizza la seguente istruzione:

postgres=> SELECT CURRENT_SETTING('TRANSACTION_ISOLATION');

L'output è il seguente:

 current_setting
-----------------
 read committed
(1 row)

Puoi modificare la sintassi del livello di isolamento come segue:

SET [SESSION CHARACTERISTICS AS] TRANSACTION ISOLATION LEVEL [ REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE]

Inoltre, puoi modificare il livello di isolamento a livello di SESSION:

postgres=> SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL REPEATABLE READ;

-- Verify

postgres=> SELECT CURRENT_SETTING('TRANSACTION_ISOLATION');

L'output è il seguente:

 current_setting
-----------------
 repeatable read
(1 row)

Il livello di isolamento ai livelli INSTANCE viene controllato utilizzando il flag di database default_transaction_isolation. Puoi verificarlo utilizzando la seguente dichiarazione:

postgres=> SHOW DEFAULT_TRANSACTION_ISOLATION;

L'output è il seguente:

 default_transaction_isolation
-------------------------------
 repeatable read
(1 row)

Passaggi successivi