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

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questo documento fa parte di una serie che fornisce informazioni chiave e indicazioni sulla pianificazione e l'esecuzione di migrazioni di database Oracle® 11g/12c a Cloud SQL per PostgreSQL versione 12. Oltre alla parte introduttiva di 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 delle piattaforme di database. Il confronto distingue tra le versioni 11g e 12c di Oracle, a causa delle differenze architetturali (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 evidenzia le principali differenze terminologiche tra Oracle e Cloud SQL per PostgreSQL. Una descrizione di basso livello viene descritta più avanti in questo documento.

Oracle 11g Descrizione Cloud SQL per PostgreSQL Differenze chiave
instance Una singola istanza Oracle 11g può contenere un solo database. instance Un'istanza Cloud SQL per PostgreSQL contiene esattamente un cluster di database. Un cluster di database è una raccolta di database archiviati in un'area dati comune.
database Un database è considerato come una singola istanza (il nome del database è identico a quello dell'istanza). database Più database o più database servono più applicazioni.
schema Schema e utenti sono identici perché entrambi sono considerati proprietari degli oggetti del 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 in schemi. Lo stesso nome di oggetto potrebbe essere utilizzato in schemi 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 costituito da un utente di database o da un gruppo di utenti di database, a seconda di come è configurato. Può possedere oggetti di database come le tabelle.

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

Poiché Cloud SQL per PostgreSQL è un servizio gestito, limita l'accesso a determinate tabelle e procedure di sistema che richiedono privilegi avanzati. Pertanto, l'utente postgres non ha gli attributi SUPERUSER o REPLICATION. Non puoi creare o accedere agli utenti con attributi superuser.
dictionary/
metadati
Oracle utilizza le seguenti tabelle di metadati:

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

V$ViewName
sistema
visualizzazioni dinamiche
Cloud SQL per PostgreSQL offre le seguenti viste statistiche dinamiche:
pg_stat_ViewName
pg_statio_ViewName
tabella Le strutture di archiviazione logica principali dei database Oracle; ogni spazio della tabella può contenere uno o più file di dati. tabella In Cloud SQL per PostgreSQL, i file di dati vengono archiviati insieme nella directory di dati di un cluster di database PGDATA utilizzando una struttura di directory predefinita. Le aree tabella in Cloud SQL per PostgreSQL offrono 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 il file system sottostante della macchina host. Non puoi creare nuove aree tabelle su Cloud SQL per PostgreSQL.
file di dati Gli elementi fisici
di un database Oracle che contengono i dati e sono definiti in una specifica tabella.

Un singolo file di dati è definito dalla dimensione iniziale e dalla dimensione massima e può contenere i 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 sono archiviati in un file separato in quella sottodirectory.
spazio tabella del sistema Contiene le tabelle del dizionario dei dati e le viste degli oggetti per l'intero database Oracle. Non esiste Le tabelle e gli oggetti di dizionario dei dati vengono archiviati in INFORMATION_SCHEMA in una directory dati del cluster di database PGDATA utilizzando una struttura di directory predefinita.
tabella temporanea Contiene oggetti schema validi per la durata di una sessione; inoltre,
supporta le operazioni in esecuzione che non rientrano nella memoria del server.
file temporanei I file temporanei vengono utilizzati per archiviare operazioni in esecuzione che non possono essere inserite nella memoria del server. Questi file sono archiviati in una directory denominata pgsql_tmp e vengono creati solo durante l'esecuzione dell'istruzione SQL.
Annulla spazio della tabella Un tipo speciale di spazio della tabella permanente del sistema utilizzato da Oracle per gestire le
operazioni di rollback quando esegui il database in modalità di annullamento automatico della gestione (impostazione predefinita).
Non esiste Per consentire le operazioni di rollback, Cloud SQL per PostgreSQL conserva le righe aggiornate o eliminate all'interno del file di dati della tabella stessa. L'aspirapolvere è il processo di recupero o di riutilizzo dello spazio su disco occupato da righe aggiornate o eliminate.
ASM Oracle Automatic Storage Management è un file system e un gestore di dischi di database ad alte prestazioni integrato, tutti eseguiti automaticamente da un database Oracle configurato con ASM. Non supportati 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 automazione dello spazio di archiviazione, ad esempio aumenti automatici delle prestazioni, prestazioni e scalabilità.
tabelle/visualizzazioni Oggetti database di base creati dall'utente. tabelle/visualizzazioni Identico a Oracle.
viste materializzate Definito con
istruzioni SQL specifiche, può essere aggiornato manualmente o automaticamente in base a configurazioni specifiche.
viste materializzate Le viste materializzate funzionano in modo simile a Oracle. Vengono aggiornati manualmente utilizzando le istruzioni REFRESH MATERIALIZED VIEW.
sequenza Generatore di valori univoci Oracle. sequenza Simile a Oracle.
sinonimo Oggetti database Oracle che fungono da identificatori alternativi per altri oggetti database. Non supportati Cloud SQL per PostgreSQL non offre sinonimi. Per risolvere il problema, è possibile utilizzare le viste impostando le autorizzazioni appropriate.
partizionamento Oracle offre molte soluzioni di partizionamento per suddividere le tabelle di grandi dimensioni in parti gestite più piccole. partizionamento Cloud SQL per PostgreSQL supporta il partizionamento dichiarativo e il partizionamento dichiarativo dell'ereditarietà mediante l'ereditarietà, consentendo una maggiore flessibilità di partizionamento.
Database Flashback Funzionalità di proprietà di Oracle che può essere utilizzata per inizializzare un database Oracle a un'ora definita in precedenza, consentendo di eseguire query o ripristinare i dati modificati o danneggiati per errore. Non supportati Per una soluzione alternativa, puoi utilizzare i backup di Cloud SQL e il recupero point-in-time per ripristinare un database a uno stato precedente (ad esempio, ripristino prima di un rilascio di tabella).
sqlplus Interfaccia a riga di comando Oracle che consente di eseguire query e gestire l'istanza di database. psql Interfaccia a riga di comando equivalente di Cloud SQL per PostgreSQL per query e gestione. Può essere connesso da qualsiasi client con le autorizzazioni appropriate per Cloud SQL.
PL/SQL Oracle ha esteso il linguaggio procedurale ad ANSI SQL. PL/pgSQL Cloud SQL per PostgreSQL ha un proprio linguaggio procedurale chiamato PL/pgSQL, che è simile a PL/SQL di Oracle per molti aspetti. Per un riepilogo delle principali differenze tra i due linguaggi, vedi Trasferimento da Oracle PL/SQL.
package & pacchetto corpo Funzionalità specifiche di Oracle per raggruppare stored procedure e funzioni nello stesso riferimento logico. Funzionalità non supportata Cloud SQL per PostgreSQL organizza le funzioni utilizzando gli schemi.
procedura archiviate e funzioni Utilizza PL/SQL per implementare la funzionalità del codice. Procedure archiviate e funzioni Cloud SQL per PostgreSQL supporta l'implementazione di stored procedure e funzioni utilizzando diversi linguaggi di programmazione come PL/pgSQL e C.
trigger Oggetto Oracle utilizzato per controllare l'implementazione del DML sulle tabelle. trigger Simile a Oracle.
PFILE/SPFILE I parametri a livello di istanza e di database Oracle vengono conservati in un file binario noto come SPFILE (nelle versioni precedenti, il file era denominato PFILE), che può essere utilizzato come file di testo per l'impostazione manuale dei parametri. Flag di database Cloud SQL per PostgreSQL Puoi impostare o modificare i parametri Cloud SQL per PostgreSQL tramite l'utilità flag del database.
SGA/PGA/
AMM
Parametri di memoria Oracle che controllano l'allocazione della memoria all'istanza di database. Diversi 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 regolare alcuni di questi parametri utilizzando l'utilità flag di database.
memorizzazione nella 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 Funzionalità simile La dimensione della cache del buffer di Cloud SQL per PostgreSQL è controllata dal parametro shared_buffer, che non è esposto in Cloud SQL. Cloud SQL offre una metrica di utilizzo della memoria, utilizzata per ridimensionare l'istanza.
suggerimenti per il database Possibilità di Oracle di fornire un controllo controllato sulle istruzioni SQL che influiranno sul comportamento dello strumento di ottimizzazione per ottenere prestazioni migliori. Oracle ha più di 50 diversi suggerimenti di database. Non supportati Cloud SQL per PostgreSQL non supporta i suggerimenti per il database. In misura limitata, puoi controllare la pianificazione delle query di Cloud SQL per PostgreSQL utilizzando la sintassi join esplicita.
RMAN Utilità Oracle Recovery Manager. Utilizzato per eseguire backup dei database con funzionalità estese per supportare più scenari di ripristino di emergenza e altro (clonazione e così via). Backup Cloud SQL per PostgreSQL Cloud SQL per PostgreSQL offre due metodi per applicare i backup completi: backup on demand e automatici.
Pompa dati
(EXPDP/
IMPDP)
Utilità di generazione di dump Oracle che può essere utilizzata per molte funzionalità, ad esempio esportazione/importazione, backup di database (a livello di schema o oggetto), metadati dello schema, generazione di file SQL di schema e altro ancora. Esportazione/importazione Cloud SQL per PostgreSQL Cloud SQL per PostgreSQL offre due formati di esportazione/importazione 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 dati da file esterni come file di testo, CSV e altro. 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.
Guardia di dati Soluzione di ripristino di emergenza Oracle che utilizza un'istanza standby, consentendo agli utenti di eseguire operazioni READ dall'istanza standby. Disponibilità e replica elevate di Cloud SQL per PostgreSQL Per ottenere ripristino di emergenza o disponibilità elevata, Cloud SQL per PostgreSQL offre la architettura di replica di failover e per operazioni di sola lettura (separazione READ/WRITE) utilizzando la replica di lettura.
Active Data Guard/
GoldenGate
Principali soluzioni di replica di Oracle, che possono servire a diversi scopi, ad esempio Standby (DR), istanza di sola lettura, replica bidirezionale (multi-master), data warehousing e altro ancora. Replica di lettura Cloud SQL per PostgreSQL Replica di lettura Cloud SQL per PostgreSQL per implementare il clustering con separazione READ/WRITE. Attualmente non è supportato il supporto della configurazione multi-master, come replica BI-Directional GoldGate o replica eterogenea.
RAC Oracle Real Application Cluster. Soluzione di clustering proprietaria Oracle per fornire disponibilità elevata eseguendo il deployment di più istanze di database con una singola unità di archiviazione. Non supportati Cloud SQL per PostgreSQL non supporta un'architettura multi-master. Cloud SQL per PostgreSQL offre disponibilità elevata tramite un'istanza in standby e una maggiore scalabilità in lettura tramite le repliche di lettura.
Controllo griglia/cloud (OEM) Software Oracle per la gestione e il monitoraggio di database e altri servizi correlati in un formato di applicazione web. Questo strumento è utile per l'analisi dei database in tempo reale per comprendere carichi di lavoro elevati. Google Cloud Console,
Cloud Monitoring
Utilizza Cloud SQL per PostgreSQL per il monitoraggio, inclusi grafici dettagliati basati sul tempo e sulle risorse. Utilizza anche Cloud Monitoring per conservare metriche di monitoraggio Cloud SQL per PostgreSQL specifiche e analisi dei log per funzionalità di monitoraggio avanzate.
Log REDO Log delle transazioni Oracle composti da due (o più) file definiti preallocati che archiviano 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 il sistema Write-Ahead Logging (WAL) in modo che le modifiche ai file di dati vengano eliminate nello spazio di archiviazione permanente per consentire il ripristino in seguito a arresti anomali.
archivia log I log di archiviazione supportano le operazioni di backup e replica e molto altro. Oracle scrive nei log di archiviazione (se attivati) dopo ogni operazione di cambio log. Archiviazione WAL Implementazione di Cloud SQL per PostgreSQL della 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 ripetitivi, posizioni, numero di sequenza di log corrente e informazioni sul punto di controllo 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 ai record e ai punti di controllo sono memorizzate in pg_control.
Numero di modifica del sistema (SCN) La rete multicanale contrassegna un momento specifico in un database Oracle. Numero di sequenza del log (LSN) L'equivalente di Cloud SQL per PostgreSQL è l'LSN. Proprio come le reti SCN, le metriche LSN aumentano monotonicamente nel tempo.
AWR Oracle AWR (Automatic Workload Repository) è un report dettagliato che fornisce informazioni dettagliate sulle prestazioni delle istanze dei database Oracle e viene considerato uno strumento DBA per la diagnostica delle prestazioni. raccoglitore di statistiche Cloud SQL per PostgreSQL non ha un report equivalente ad Oracle AWR, ma PostgreSQL raccoglie i dati sulle prestazioni raccolti da statistics collector. Le statistiche raccolte vengono esposte tramite pg_stat_* e pg_statio_* viste.
DBMS_SCHEDULER Utilità Oracle utilizzata per impostare e regolare le operazioni predefinite . Non supportati Cloud SQL per PostgreSQL non fornisce un'utilità di pianificazione integrata.

Google Cloud fornisce Cloud Scheduler, che consente di pianificare attività di database come le esportazioni.
Crittografia dati trasparente Cripta i dati archiviati sui dischi come protezione dei dati at-rest. Standard Cloud SQL per la crittografia avanzata Cloud SQL per PostgreSQL utilizza lo standard di crittografia avanzata (AES-256) a 256 bit per proteggere i dati at-rest e in transito.
Compressione avanzata Per migliorare l'impatto dello spazio di archiviazione del database, ridurre i costi di archiviazione e migliorare le prestazioni del database, Oracle offre funzionalità di compressione avanzata dei dati (tabelle/indici). TEMPO DI VISUALIZZAZIONE Sebbene non sia direttamente paragonabile alla compressione avanzata Oracle, Cloud SQL per PostgreSQL utilizza un'infrastruttura denominata TOAST per comprimere in modo automatico e trasparente dati di durata variabile che sono troppo grandi per adattarsi a una singola pagina di dati.
Sviluppatore SQL GUI gratuita di Oracle per la gestione e l'esecuzione di istruzioni SQL e PL/SQL. Amministrazione pg GUI gratuita di Cloud SQL per PostgreSQL per la gestione e l'esecuzione di istruzioni per il codice SQL e PostgreSQL.
Log degli avvisi Log principale di Oracle per operazioni generali sul database ed errori. Segnalazione e logging degli errori di PostgreSQL Utilizza il Visualizzatore log di Cloud Logging per esaminare i log degli errori PostgreSQL.
Tabella doppia Tabella speciale Oracle per il recupero di valori pseudo-colonne come SYSDATE o USER. Non esiste 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 in file esterni al database. Non supportati 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.
Ascoltatore Processo di rete Oracle incaricato di ascoltare le connessioni di database in entrata. Reti autorizzate Cloud SQL Cloud SQL per PostgreSQL accetta 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 dei database per stabilire le connessioni utilizzando gli alias di connessione. Non esiste Cloud SQL per PostgreSQL accetta connessioni esterne tramite il nome connessione dell'istanza Cloud SQL o l'indirizzo IP privato/pubblico. Cloud SQL Proxy è un ulteriore metodo di accesso sicuro per la connessione 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 esteri (FDW) L'estensione postgres_fdw in Cloud SQL per PostgreSQL consente di visualizzare le tabelle di altri database PostgreSQL (foreign) nel database corrente. Queste tabelle possono essere utilizzate quasi come se fossero tabelle locali.

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

Oracle 12c Descrizione Cloud SQL per PostgreSQL Differenze chiave
Istanza La capacità multi-tenant introdotta in Oracle 12c consente a un'istanza di contenere più database come database pluggable (PDB), al contrario di Oracle 11g, dove 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 archiviati in un'area dati comune.
CDB Un database di container multitenant (CDB) può supportare uno o più PDB, mentre gli oggetti globali CDB (interessano tutti i PDB) possono essere creati, ad esempio i ruoli. Istanza PostgreSQL L'istanza Cloud SQL per PostgreSQL è paragonabile a quella del CDB di Oracle. 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 raccolta portatile 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, è possibile creare sequenze a livello di sessione (restituiscono 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 della sessione.
Colonne Identità Il tipo IDENTITY Oracle 12c genera una sequenza e la associa a una colonna di tabella senza dover creare manualmente un oggetto sequenza separato. Colonna SERIAL Definindo il tipo di dati di una colonna come SERIALE, Cloud SQL per PostgreSQL crea automaticamente una sequenza e inserisce il valore della colonna in tale sequenza quando vengono inserite nuove righe nella tabella.
Differenziazione Lo sharding Oracle è una soluzione in cui un database Oracle è partizionato in più database più piccoli (shard) per consentire scalabilità, disponibilità e distribuzione geografica per gli ambienti OLTP. Non supportato (come funzionalità) Cloud SQL per PostgreSQL non ha una funzionalità di partizionamento equivalente. È possibile implementare lo sharding utilizzando Cloud SQL per PostgreSQL (come piattaforma di dati) con un livello di applicazione supportato.
Database in memoria Oracle offre una suite di funzionalità che possono migliorare le prestazioni del database per i OLTP e per i carichi di lavoro misti. Non supportati Cloud SQL per PostgreSQL non ha una funzionalità equivalente integrata. In alternativa, puoi utilizzare il nostro servizio Redis gestito, Memorystore.
Oscuramento Come parte delle funzionalità di sicurezza avanzate di Oracle, l'oscuramento può eseguire il mascheramento delle colonne per evitare che i dati sensibili vengano recuperati da utenti e applicazioni. Non supportati Cloud SQL per PostgreSQL non ha una funzionalità equivalente integrata. Tuttavia, la prevenzione della perdita di dati cloud può essere utilizzata per anonimizzare i dati sensibili.

Funzionalità

Sebbene i database Oracle 11g/12c e Cloud SQL per PostgreSQL siano basati su diverse architetture (infrastruttura e linguaggi procedurali estesi), condividono entrambi 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. Gestiscono inoltre il blocco delle contese con più livelli di isolamento (in base alle esigenze dell'applicazione) e soddisfano i requisiti dell'applicazione continuativi sia per le operazioni di elaborazione delle transazioni online (OLTP) sia per quelle di 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, laddove ritenga necessario evidenziare le differenze, la sezione include confronti tecnici dettagliati.

Creazione e visualizzazione dei database esistenti

Oracle 11 g/12 c Cloud SQL per PostgreSQL 12
In genere, si creano database e si visualizzano quelli esistenti utilizzando l'utilità Oracle Database Creation Assistant (DBCA). Per i database o le istanze creati manualmente è necessario specificare 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;
Utilizza una dichiarazione del modulo 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 seme, da un modello di database di database (CDB) o clonando un PDB da un PDB esistente. Utilizzi 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/';
Utilizza una dichiarazione del modulo 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;
Collegati 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 solo database.

Tutti i database si trovano nella stessa istanza Cloud SQL per PostgreSQL, pertanto tutti i database sono tutti in alto o in basso.

Gestione di un database tramite Google Cloud Console

  • Nella console di Google Cloud, vai a Database>SQL>Instance>(Select your PostgreSQL Instance)>Databases.

    Gestione di un database tramite Google Cloud Console.

Dizionario dati e visualizzazioni dinamiche

I database Oracle forniscono un dizionario di dati insieme a visualizzazioni dinamiche delle prestazioni (V$ viste) che facilitano una varietà di attività di manutenzione e monitoraggio del database. Il dizionario di 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 mentre il database è in esecuzione.

PostgreSQL, invece, fornisce diversi cataloghi di metadati che hanno uno scopo simile a quello del dizionario dati e delle visualizzazioni dinamiche delle prestazioni di Oracle:

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

Visualizzazione di metadati e visualizzazioni dinamiche di sistema

Questa sezione fornisce una panoramica di alcune delle tabelle di metadati più comuni e delle viste dinamiche di sistema utilizzate in Oracle e nei corrispondenti oggetti di database 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 decine. Per ogni caso, può essere presente più di un oggetto di database che abbia uno scopo specifico.

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

  • USER_TableName: visualizzabile dall'utente.
  • ALL_TableName: visualizzabile da tutti gli utenti.
  • DBA_TableName: visualizzabile solo dagli utenti con il privilegio DBA, come SYS e SYSTEM.

Per le visualizzazioni dinamiche delle prestazioni, Oracle utilizza i prefissi V$/GV$. Al contrario, i metadati e le viste 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
Esecuzione delle transazioni V$TRANSACTION Non supportati. Per risolvere il problema, pg_locks fornisce un elenco di transazioni aperte contenenti uno o più blocchi.
Oggetti 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 tabella e colonna 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
Visualizzazioni materializzate DBA_MVIEWS pg_catalog.pg_matviews
Procedure archiviate DBA_PROCEDURES pg_catalog.pg_proc
Funzioni memorizzate DBA_PROCEDURES pg_catalog.pg_proc
Attivatori DBA_TRIGGERS pg_catalog.pg_trigger
Users (Utenti) DBA_USERS pg_catalog.pg_user
Privilegi utente DBA_SYS_PRIVS
DBA_ROLE_PRIVS
SESSION_PRIVS
pg_catalog.pg_roles
Job/
scheduler
DBA_JOBS
DBA_JOBS_RUNNING
DBA_SCHEDULER_JOBS
DBA_SCHEDULER_JOB_LOG
Non supportati.
Tabelle 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 ai 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 di 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.
Istanza
ottimizzazione memoria
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

Sia i database Oracle che 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 determinate autorizzazioni di amministrazione (principalmente le autorizzazioni utente SYS/SYSTEM).

Ecco un esempio di modifica della configurazione Oracle utilizzando l'istruzione ALTER SYSTEM. In questo esempio, l'utente cambia il"parametro massimo per gli accessi non riusciti"solo al livello di configurazione di spfile (con la modifica valida solo dopo un riavvio):

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

Nel prossimo esempio, 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, con il riavvio dell'istanza necessario affinché il parametro abbia effetto.
  • MEMORIA: le modifiche dei parametri vengono applicate solo nel livello di memoria, mentre non è consentita la modifica dei parametri statici.
  • Entrambi: le modifiche dei parametri vengono applicate sia nel file del parametro del server sia nella memoria delle istanze, in cui non è consentita la modifica dei parametri statici.

Flag di configurazione Cloud SQL per PostgreSQL

Puoi modificare i parametri di sistema di Cloud SQL per PostgreSQL utilizzando i flag di configurazione nella console di Google Cloud oppure nell'interfaccia a riga di comando gcloud 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 di database: si applicano solo a un database specifico all'interno di un'istanza PostgreSQL.
  • Parametri dei ruoli: si applicano solo a un ruolo del database specifico.
  • Parametri statici: richiedono l'attivazione di un riavvio dell'istanza.
  • Parametri di sessione: l'impostazione può essere modificata a livello di sessione solo per la durata della sessione corrente, isolata dalle altre sessioni.
  • Parametri globali: avranno un effetto globale su tutte le sessioni attuali e future.

Esempi di modifica dei parametri di Cloud SQL per PostgreSQL

console

Utilizza Google Cloud Console per attivare il parametro log_connections.

  1. Vai alla pagina Modifica istanza di Cloud Storage.

    Vai a Istanze

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

    Attivazione delle connessioni di log nella console.

gcloud

  • Utilizza l'interfaccia a riga di comando gcloud 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 for PostgreSQL

Imposta il livello timezone a livello di sessione. Questa modifica rimane valida per la sessione corrente e per tutta la durata della sessione.

  1. Mostra parametro di configurazione timezone:

    postgres=> SHOW timezone;
    

    Verrà visualizzato 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;
    

    Dovresti vedere 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 nei livelli di esecuzione e isolamento delle transazioni tra Oracle e Cloud SQL per PostgreSQL.

Modalità di commit

Oracle funziona per impostazione predefinita in modalità non automatica, in cui ogni transazione DML deve essere determinata con istruzioni COMMIT/ROLLBACK. Una delle differenze fondamentali tra Oracle e PostgreSQL è che PostgreSQL emette implicitamente un elemento COMMIT dopo ogni comando che non segue START TRANSACTION (o BEGIN). Questo è noto anche da alcuni motori di database come autocommit. Anche se l'opzione Autocommit è abilitata per impostazione predefinita, può essere disabilitata a livello di sessione usando 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 simultanea delle transazioni di database:

  • Lettura senza impegno: una transazione attualmente elaborata può visualizzare i dati non effettuati dall'altra transazione. Se viene eseguito un rollback, tutti i dati vengono ripristinati allo stato precedente.
  • Lettura impegnata: una transazione vede solo le modifiche dei dati effettuate, non apportate modifiche non riuscite.
  • Lettura ripetibile: una transazione può visualizzare le modifiche apportate dall'altra transazione solo dopo che entrambe le transazioni hanno emesso un valore COMMIT o entrambe sono state sottoposte a rollback.
  • 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 i record non possano essere aggiunti alla tabella.

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

Oracle supporta i seguenti livelli di isolamento:

  • Lettura impegnata (predefinita)
  • Serializzabile
  • Sola lettura (non fa parte dello standard SQL ANSI/ISO (SQL:92)

Oracle MVCC (Multiversion Concurrency Control):

  • Oracle utilizza il meccanismo MVCC per fornire coerenza automatica in lettura in tutto il database e in tutte le sessioni.
  • Oracle si basa sul System Change Number (SCN) della transazione corrente per ottenere una visualizzazione coerente del database. Di conseguenza, tutte le query del database restituiscono solo i dati commit in relazione alla SCN al momento dell'esecuzione della query.
  • I livelli di isolamento possono essere modificati a livello di sessione 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 non impegnata (equivalente a Lettura impegnata)
  • Lettura impegnata (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 TRANSACTION che a 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 SESSIONE:

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 tramite il flag del database default_transaction_isolation. Puoi verificarlo utilizzando la seguente istruzione:

postgres=> SHOW DEFAULT_TRANSACTION_ISOLATION;

L'output è il seguente:

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

Passaggi successivi