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

Questo documento fa parte di una serie che fornisce informazioni e indicazioni chiave relative alla pianificazione ed esecuzione delle migrazioni dei database Oracle® 11g/12c a Cloud SQL per PostgreSQL versione 12. Oltre alla sezione nella parte introduttiva della configurazione, La serie è composta dalle seguenti parti:

Terminologia

Questa sezione descrive in dettaglio le somiglianze e le differenze nella terminologia dei database tra Oracle e Cloud SQL per PostgreSQL. Esamina e confronta gli aspetti di base di ciascuna delle piattaforme di database. Il confronto distingue tra Versioni Oracle 11g e 12c, a causa di differenze architetturali (ad esempio, Oracle 12c introduce la funzionalità multi-tenant). La versione di Cloud SQL per PostgreSQL a cui si fa riferimento qui è 12.

Questa sezione mette in evidenza le principali differenze di terminologia tra Oracle e Cloud SQL per PostgreSQL. La descrizione di basso livello verrà descritta più avanti documento.

Oracle 11g Descrizione 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 archiviati in un in un'area di dati comune.
database Un database è considerato una singola istanza (il nome del database è identico al nome dell'istanza). database Uno o più database servono più applicazioni.
schema Gli schemi e gli 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 contenuti all'interno degli schemi. Lo stesso nome oggetto può essere utilizzato in schemi all'interno dello stesso database senza conflitti.
user Identici allo schema perché entrambi sono proprietari degli oggetti di database, ad ad esempio istanza → database → schemi/utenti → oggetti di database. role 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 di database come le tabelle.

I ruoli sono limitati a un intero cluster di database ed è possibile concedere l'appartenenza a un ruolo a un altro ruolo.
role Set definito di autorizzazioni di database che possono essere collegate come gruppo e assegnate agli utenti del database
admin/
Utenti SYSTEM
Utenti amministratori Oracle con il livello di accesso più elevato:
SYS
SYSTEM
cloudsqlsuperuser Cloud SQL per PostgreSQL include il valore predefinito postgres utente. Questo utente fa parte del ruolo cloudsqlsuperuser e ha i seguenti attributi (privilegi): CREATEROLE, CREATEDB e LOGIN.

Dato che 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 di Attributi SUPERUSER o REPLICATION. Non puoi creare o avere accesso a utenti con attributi superuser.
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 dizionario e metadati informazioni.
visualizzazioni dinamiche di sistema Visualizzazioni dinamiche Oracle:
V$ViewName
sistema
visualizzazioni dinamiche
Cloud SQL per PostgreSQL offre le seguenti visualizzazioni di statistiche dinamiche:
pg_stat_ViewName
pg_statio_ViewName
spazio_tabelle Le principali strutture di archiviazione logica dei database Oracle; ogni spazio tabella può contenere uno o più file di dati. spazio_tabelle In Cloud SQL per PostgreSQL, i file di dati vengono archiviati insieme nella directory dei dati PGDATA di un cluster di database utilizzando una struttura di directory predefinita. Gli spazi tabella in Cloud SQL per PostgreSQL forniscono un meccanismo per definire posizioni personalizzate nel file system in cui possono essere memorizzati i file di dati.

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

Un singolo file di dati è definito dalla dimensione iniziale e dalla dimensione massima e può contenere 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 in la propria sottodirectory. Ogni tabella e ogni indice all'interno di un database viene archiviato in un file separato in quella sottodirectory.
tabella di sistema Contiene le tabelle e gli oggetti delle visualizzazioni del dizionario di dati per l'intero database Oracle. Non esiste Gli oggetti delle tabelle e delle viste del dizionario dei dati vengono archiviati INFORMATION_SCHEMA nella directory dei dati di un cluster di database PGDATA utilizzando una struttura di directory predefinita.
spazio tabella temporaneo Contiene oggetti dello schema validi per la durata di una sessione. Inoltre,
supporta le operazioni in esecuzione che non possono essere inserite nella memoria del server.
file temporanei I file temporanei vengono utilizzati per archiviare le operazioni in esecuzione che non rientrano nella memoria del server. Questi file sono archiviati in una directory denominata pgsql_tmp e vengono create solo mentre l'istruzione SQL è in esecuzione.
Annulla spazio tabella Un tipo speciale di spazio tabella permanente di sistema utilizzato da Oracle per gestire
operazioni di rollback durante l'esecuzione del database in modalità di annullamento automatico modalità di gestione (predefinita).
Inesistente Per consentire le operazioni di rollback, Cloud SQL per PostgreSQL conserva le righe aggiornati o eliminati all'interno del file di dati della tabella. Il vacuüm è il processo di recupero o riutilizzo dello spazio su disco occupato da righe aggiornate o eliminate.
ASM Oracle Automatic Storage Management è un gestore di file system e dischi del database integrato e ad alte prestazioni, gestito automaticamente da un database Oracle configurato con ASM. 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 di Oracle ASM. Tuttavia, Cloud SQL per PostgreSQL supporta molte funzionalità che forniscono l'automazione dell'archiviazione, come aumenti automatici dello spazio di archiviazione, prestazioni e scalabilità.
tables/views Oggetti di database fondamentali creati dall'utente. tabelle/visualizzazioni Identico a Oracle.
Viste materializzate Definito con
istruzioni SQL specifiche e può essere manuale o automatico vengono aggiornate 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.
synonym Oggetti del database Oracle che fungono da identificatori alternativi per altri oggetti del database. Non supportato Cloud SQL per PostgreSQL non offre sinonimi. Come soluzione alternativa, le viste possono essere utilizzate impostando le autorizzazioni appropriate.
partizione Oracle fornisce molte soluzioni di partizionamento per la suddivisione di tabelle di grandi dimensioni in le parti gestite più piccole. partizione Cloud SQL per PostgreSQL supporta i modelli il partizionamento e il partizionamento mediante l'ereditarietà, che consentono maggiori flessibilità di partizionamento.
Database flashback Funzionalità proprietaria di Oracle che può essere utilizzata per inizializzare un database Oracle a un momento definito in precedenza, consentendo di eseguire query o ripristinare i dati modificati o danneggiati per errore. Non supportato 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, il ripristino prima dell'eliminazione di una tabella).
sqlplus Interfaccia a riga di comando Oracle che consente di eseguire query e gestire il database in esecuzione in un'istanza Compute Engine. psql Interfaccia a riga di comando equivalente a Cloud SQL per PostgreSQL per query e gestione. Possono essere connessi da qualsiasi client con l'app le autorizzazioni per Cloud SQL.
PL/SQL Oracle ha esteso il linguaggio procedurale a ANSI SQL. 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 Porting da Oracle PL/SQL.
pacchetto e corpo del pacchetto Funzionalità specifica di Oracle per raggruppare procedure e funzioni archiviate sotto lo stesso riferimento logico. Non supportata Cloud SQL per PostgreSQL organizza le funzioni utilizzando gli schemi.
Funzioni e stored procedure Utilizza PL/SQL per implementare la funzionalità del codice. Funzioni e stored procedure Cloud SQL per PostgreSQL supporta l'implementazione di procedure e funzioni memorizzate utilizzando una serie di linguaggi di programmazione come PL/pgSQL e C.
trigger Oggetto Oracle utilizzato per controllare l'implementazione di DML nelle tabelle. attivatore Simile a Oracle.
PFILE/SPFILE I parametri a livello di istanza e database Oracle sono conservati in un file binario chiamato SPFILE (nelle versioni precedenti, il nome PFILE), utilizzabile come file di testo per l'impostazione manualmente i parametri. Flag di database Cloud SQL per PostgreSQL Puoi impostare o modificare i parametri di Cloud SQL per PostgreSQL tramite l'utilità database flags.
SGA/PGA/
AMM
Parametri di memoria Oracle che controllano l'allocazione della memoria al database in esecuzione in un'istanza Compute Engine. Una serie di parametri relativi alla memoria Cloud SQL per PostgreSQL ha i propri parametri di memoria. Alcuni 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 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 gli indizi di query. Funzionalità simili La dimensione della cache del buffer di Cloud SQL per PostgreSQL è controllata shared_buffer, che non è esposto in in Cloud SQL. Cloud SQL fornisce una metrica di utilizzo della memoria, che viene utilizzata per determinare le dimensioni appropriate dell'istanza.
indizi del database La capacità di Oracle di fornire un impatto controllato alle istruzioni SQL che influenzeranno il comportamento dell'ottimizzatore per ottenere un rendimento migliore. Oracle ha più di 50 hint di database diversi. Non supportato Cloud SQL per PostgreSQL non supporta i suggerimenti del database. In misura limitata, puoi controllare il pianificatore delle query di Cloud SQL per PostgreSQL utilizzando la sintassi JOIN esplicita.
RMAN Utilità Oracle Recovery Manager. Utilizzato per eseguire il backup dei database con funzionalità estese per supportare più scenari di ripristino di emergenza e altro ancora (clonazione e così via). Backup Cloud SQL per PostgreSQL Cloud SQL per PostgreSQL offre due metodi per applicare i backup completi: backup automatici on demand.
Data Pump
(EXPDP/
IMPDP)
Utilità per la generazione di dump Oracle che può essere utilizzata per molte funzionalità, come esportazione/importazione, backup del database (a livello di schema o oggetto), metadati dello schema, generazione di file SQL dello schema e altro ancora. Esportazione/importazione di Cloud SQL per PostgreSQL Cloud SQL per PostgreSQL offre due formati di esportazione/importazione verso e da 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, file CSV e altro ancora. psql \copy Il comando \copy nel client psql ti consente di caricare file di testo, CSV o binari (Oracle supporta formati di file aggiuntivi) in una tabella di database con una struttura corrispondente.
Data Guard Soluzione di ripristino di emergenza Oracle mediante un'istanza in standby, che consente agli utenti per eseguire operazioni READ dall'istanza in standby. Elevata disponibilità e replica di Cloud SQL per PostgreSQL Per eseguire il ripristino di emergenza o l'alta disponibilità, Cloud SQL per PostgreSQL offre l'architettura della replica di failover e per le operazioni di sola lettura (separazione tra READ/WRITE) utilizzando la replica di lettura.
Active Data Guard/
GoldenGate
Le soluzioni di replica principali di Oracle, che possono servire a più scopi, come 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 Cloud SQL per PostgreSQL per implementare il clustering con separazione LETTURA/SCRITTURA. Attualmente, non è disponibile supporto per la configurazione multi-master, ad esempio Replica BI-direzionale GoldenGate, o replica eterogenea.
RAC Oracle Real Application Cluster. Soluzione di clustering di proprietà Oracle per offrendo disponibilità elevata mediante il deployment di più istanze di database con una singola unità di archiviazione. Non supportato Cloud SQL per PostgreSQL non supporta un'architettura multi-master. Cloud SQL per PostgreSQL offre disponibilità elevata tramite un standby un'istanza e una maggiore scalabilità di lettura tramite le repliche di lettura.
Controllo della rete/del cloud (OEM) Software Oracle per la gestione e il monitoraggio di database e altri servizi correlati in formato di applicazione web. Questo strumento è utile per l'analisi del database in tempo reale per comprendere i carichi di lavoro elevati. Console Google Cloud
Cloud Monitoring
Utilizza Cloud SQL per PostgreSQL per il monitoraggio, inclusi tempi di attesa dettagliati e grafici basati sulle risorse. Usa Cloud Monitoring anche per archiviare Cloud SQL per PostgreSQL di monitoraggio delle metriche e analisi dei log per funzionalità di monitoraggio.
Log REDO Log delle transazioni Oracle costituiti da due o più file definiti preallocati che archiviano tutte le modifiche dei dati man mano che si verificano. Lo scopo principale del log di reimpostazione è proteggere il database in caso di errore dell'istanza. Log WAL Cloud SQL per PostgreSQL utilizza il logging write-ahead (WAL) in modo che le modifiche ai file di dati vengano svuotate nell'archiviazione permanente per consentire il recupero in caso di arresto anomalo.
archiviare i log I log archiviati forniscono supporto per le operazioni di backup e replica e altro ancora. Oracle scrive nei log di archivio (se abilitati) dopo ogni operazione di trasferimento del log di redo. Archiviazione WAL Implementazione della conservazione dei log WAL in Cloud SQL per PostgreSQL. WAL l'archiviazione viene utilizzata e abilitata con servizi point-in-time per il ripristino di emergenza.
file di controllo Il file di controllo Oracle contiene informazioni sul database, ad esempio file di dati, nomi di log di ripetizione, posizioni, numero di sequenza del log corrente e informazioni sul checkpoint dell'istanza. PGDATA and pg_control Cloud SQL per PostgreSQL non condivide un concetto che equivalente a un file di controllo Oracle. I file relativi al database sono organizzati in una directory comunemente denominata PGDATA. Informazioni WAL dei record e dei checkpoint è archiviato pg_control.
SCN (Numero della modifica di sistema) L'SCN indica un punto in tempo specifico in un database Oracle. Numero di sequenza di log (LSN) L'equivalente di Cloud SQL per PostgreSQL è LSN. Come gli SCN, gli LSN aumentano in modo monotono nel tempo.
AWR Oracle AWR (Repository automatico dei carichi di lavoro) è un report dettagliato che fornisce informazioni dettagliate sulle prestazioni delle istanze di database Oracle ed è considerato uno strumento per la denominazione commerciale 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 sul rendimento raccolti dalle statistiche raccoglitore. Le statistiche raccolte vengono esposte tramite le visualizzazioni pg_stat_* e pg_statio_*.
DBMS_SCHEDULER Utilità Oracle utilizzata per impostare e cronometrare i valori predefiniti operazioni. Non supportato Cloud SQL per PostgreSQL non fornisce una pianificazione integrata utilità.

Google Cloud offre Cloud Scheduler, che consente di pianificare le attività del database, come le esportazioni.
Crittografia trasparente dei dati Cripta i dati archiviati sui dischi come protezione dei dati at-rest. Advanced Encryption Standard di Cloud SQL Cloud SQL per PostgreSQL utilizza l'Advanced Encryption Standard (AES-256) a 256 bit per proteggere i dati a riposo e in transito.
Compressione avanzata Per migliorare l'ingombro del database, ridurre i costi di archiviazione e migliorare le prestazioni del database, Oracle fornisce funzionalità di compressione avanzata dei dati (tabelle/indici). TOAST Sebbene non sia direttamente paragonabile alla compressione avanzata di Oracle, Cloud SQL per PostgreSQL utilizza un'infrastruttura chiamata TOAST per comprimere in modo automatico e trasparente i dati di lunghezza variabile che sono troppo grandi per essere inseriti in una singola pagina di dati.
SQL Developer GUI SQL gratuita di Oracle per la gestione e l'esecuzione di SQL e PL/SQL istruzioni. pgAdmin Interfaccia utente grafica SQL gratuita di Cloud SQL per PostgreSQL per gestire ed eseguire istruzioni di codice SQL e PostgreSQL.
Log degli avvisi Il log principale di Oracle per le operazioni e gli errori generali del database. Report e logging degli errori di PostgreSQL Utilizza i log di Cloud Logging Visualizzatore per esaminare i log degli errori PostgreSQL.
Tabella DUAL Tabella speciale Oracle per il recupero di valori di pseudo-colonna come SYSDATE o USER. Non esiste Cloud SQL per PostgreSQL consente di omettere FROM clausole 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 al di fuori del database. Non supportata Essendo un servizio gestito, Cloud SQL per PostgreSQL non espone il file system sottostante dell'host che esegue l'istanza del database.

Come soluzione alternativa, puoi importare i dati di origine in una tabella PostgreSQL a eseguire query sui dati.
Listener Processo di rete Oracle con compito di ascolto del database in entrata e connessioni a Internet. Reti autorizzate Cloud SQL Cloud SQL per PostgreSQL accetta le connessioni da origini remote se consentite nella pagina di configurazione delle reti autorizzate di Cloud SQL.
TNSNAMES File di configurazione di rete Oracle che definisce gli indirizzi del database per stabilire connessioni utilizzando gli alias di connessione. Non esiste Cloud SQL per PostgreSQL accetta connessioni esterne che utilizzano Nome connessione istanza Cloud SQL o privata/pubblica Indirizzo IP. Cloud SQL Proxy è un metodo di accesso sicuro aggiuntivo 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 dispositivi locali/remoti di oggetti di database. Foreign Data Wrapper (FDW) Il file postgres_fdw in Cloud SQL per PostgreSQL consente le tabelle database PostgreSQL ("estranei") da esporre come "esteri" nelle tabelle è il database attuale. Queste tabelle sono quindi disponibili per l'uso, quasi come se erano tavoli locali.

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

Oracle 12c Descrizione Cloud SQL per PostgreSQL Differenze principali
Istanza La funzionalità multi-tenant introdotta in Oracle 12c consente a un'istanza di dispongono di 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 database in un cluster Kubernetes. Un cluster di database è una raccolta di database archiviati in un'area di dati comune.
CDB Un database di container multitenant (CDB) può supportare uno o più PDB, mentre È possibile creare oggetti CDB globali (interessa tutti i PDB), ad esempio i ruoli. Istanza PostgreSQL L'istanza Cloud SQL per PostgreSQL è paragonabile a Oracle CDB. Entrambe 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 possono essere usati come raccolta portabile di schemi. Database PostgreSQL/
schemi
Un database Cloud SQL per PostgreSQL può servire più servizi e applicazioni, nonché molti utenti di database.
Sequenze di sessioni A partire da Oracle 12c, è possibile creare sequenze a livello di sessione (restituisce valori univoci solo all'interno di una sessione) o a livello globale (ad ad esempio quando si utilizzano tabelle temporanee). Sequenza temporanea Viene creata una sequenza temporanea per la sessione di database corrente e automaticamente all'uscita dalla sessione.
Colonne relative all'identità Il tipo Oracle 12c IDENTITY genera una sequenza e lo associa a una colonna di tabella senza dover creare manualmente un un oggetto sequenza separato. Colonna SERIE 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 quando vengono inserite nuove righe nella tabella.
Framatura Lo sharding di Oracle è una soluzione in cui un database Oracle viene suddiviso in più database più piccoli (shard) per consentire scalabilità, disponibilità e distribuzione geografica per gli ambienti OLTP. Non supportata (come funzionalità) Cloud SQL per PostgreSQL non dispone di una funzionalità dello sharding equivalente. Lo sharding può essere implementato utilizzando Cloud SQL per PostgreSQL (come piattaforma di dati) con un livello di applicazione di supporto.
Database in memoria Oracle offre una suite di funzionalità che possono migliorare le prestazioni dei database sia per OLTP che per carichi di lavoro misti. Non supportata Cloud SQL per PostgreSQL non dispone di una funzionalità equivalente integrata. Tuttavia, puoi utilizzare il nostro servizio Redis gestito, Memorystore, in alternativa.
Oscuramento Nell'ambito delle funzionalità di sicurezza avanzate di Oracle, l'oscuramento può il mascheramento delle colonne per impedire agli utenti di recuperare dati sensibili e diverse applicazioni. Non supportato Cloud SQL per PostgreSQL non ha una funzionalità equivalente integrata. Tuttavia, la funzionalità Protezione dei dati sensibili può essere utilizzata 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), entrambi condividono gli stessi aspetti fondamentali di un sistema di database relazionale. supportano oggetti database, carichi di lavoro di concorrenza multiutente e transazioni con proprietà ACID. Gestiscono inoltre le contese di blocco con più livelli di isolamento (in base alle esigenze dell'applicazione) e soddisfano i requisiti delle applicazioni sia per le operazioni di Online Transactional Processing (OLTP) sia per quelle di Online Analytical Processing (OLAP).

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

Creazione e visualizzazione di database esistenti

Oracle 11g/12c Cloud SQL per PostgreSQL 12
In genere, per creare i database e visualizzare quelli esistenti, utilizzi l'utilità Oracle Database Creation Assistant (DBCA). I database o le istanze creati manualmente richiedono la specifica di 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 un'istruzione del tipo CREATE DATABASE Name;, come показано в этом примере:

postgres=> CREATE DATABASE PGSQLDB;
Oracle 12c Cloud SQL per PostgreSQL 12
In Oracle 12c puoi creare PDB dal seed, sia da un container modello di database (CDB) o clonando un PDB da un PDB esistente. Utilizza 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 un'istruzione del tipo CREATE DATABASE Name;, come показано в этом примере:

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

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

postgres=> \list
Collegati a un PDB diverso:

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

postgres=> \connect databaseName;
In alternativa:

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

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

Tutti i database si trovano nella stessa istanza Cloud SQL per PostgreSQL, pertanto sono tutti attivi o tutti 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 forniscono un dizionario di dati insieme a visualizzazioni dinamiche del rendimento (V$ View) che facilitano una serie di attività di monitoraggio e manutenzione del database. Il dizionario dei dati memorizza tutte le informazioni utilizzate per gestire gli oggetti nel database, mentre le visualizzazioni del rendimento dinamico contengono molte informazioni relative al rendimento del database. Queste viste vengono aggiornate continuamente durante l'esecuzione del database.

Al contrario, PostgreSQL fornisce diversi cataloghi di metadati che hanno un scopo simile a quello del dizionario dei dati e delle visualizzazioni del rendimento dinamiche di Oracle:

  • Catalogo di sistema: metadati su tutti gli oggetti di database.
  • Visualizzazioni della raccolta delle statistiche: generazione di report sulle attività di PostgreSQL.
  • Visualizzazioni dello schema di informazioni: metadati su tutti gli oggetti di database secondo lo standard ANSI SQL.

Visualizzazione delle visualizzazioni dinamiche di sistema e dei metadati

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

Oracle fornisce centinaia di tabelle e viste dei metadati di sistema (in determinati schemi di sistema, ad esempio SYS o SYSTEM), mentre PostgreSQL ne contiene solo alcune decine. Per ogni caso, può essere presente più di un oggetto database, ciascuno con uno scopo specifico.

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

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

Per le visualizzazioni del rendimento dinamico, Oracle utilizza i prefissi V$/GV$. Al contrario, I metadati e le viste di Cloud SQL per PostgreSQL si trovano in information_schema e pg_catalog schemi.

Tipo di metadati Tabella/vista Oracle Tabella/vista/query Cloud SQL per PostgreSQL
Sessioni aperte V$SESSION pg_catalog.pg_stat_activity
Transazioni in corso V$TRANSACTION Non supportati. Come soluzione alternativa, pg_locks fornisce un elenco di transazioni aperte che detengono 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
Procedure memorizzate DBA_PROCEDURES pg_catalog.pg_proc
Funzioni memorizzate 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/
pianificazione
DBA_JOBS
DBA_JOBS_RUNNING
DBA_SCHEDULER_JOBS
DBA_SCHEDULER_JOB_LOG
Non supportati.
Spazi dati 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 di 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

Sia i database Oracle sia i database Cloud SQL per PostgreSQL possono essere configurati in modo specifico per ottenere determinate funzionalità oltre la 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 di Oracle mediante l'istruzione ALTER SYSTEM. In questo esempio, l'utente modifica il parametro "tentativi massimi per accessi non riusciti" solo a livello di configurazione 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 parametro Oracle valore:

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 ai parametri vengono applicate solo nel livello di memoria, mentre non è consentita alcuna modifica dei parametri statici.
  • ENTRAMBI: le modifiche ai parametri vengono applicate sia nel file del parametro 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 il metodo flag di configurazione nella console Google Cloud, in gcloud CLI o CURL. Consulta le Elenco completo di tutti i parametri supportate da Cloud SQL per PostgreSQL.

I parametri PostgreSQL possono essere suddivisi in diversi ambiti:

  • Parametri dinamici: possono essere modificati in fase di esecuzione.
  • Parametri database: si applicano solo a un database specifico all'interno di un PostgreSQL.
  • Parametri ruolo: si applicano solo a un ruolo del database specifico.
  • Parametri statici: richiedono il riavvio dell'istanza per essere applicato.
  • Parametri sessione: possono essere modificati a livello di sessione solo per la durata della sessione corrente, in modo isolato dalle altre sessioni.
  • Parametri globali: avranno un effetto globale su tutti i parametri attuali e sessioni future.

Esempi di modifica dei parametri di Cloud SQL per PostgreSQL

Console

Utilizza la console Google Cloud per attivare il parametro log_connections.

  1. Vai alla pagina Modifica istanza di Cloud Storage.

    Vai a Istanze

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

    Attivare le connessioni dei log nella console.

gcloud

  • Utilizza gcloud CLI per attivare 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 alterazione rimane in vigore per la sessione corrente e vale solo per la durata della sessione.

  1. Mostra il 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 il parametro di configurazione timezone:

    postgres> SHOW timezone;
    

    Verrà visualizzato 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 di isolamento tra Oracle e Cloud SQL per PostgreSQL.

Modalità di commit

Oracle funziona per impostazione predefinita in modalità non automatico, in cui ogni transazione DML deve da determinare con COMMIT/ROLLBACK istruzioni. Uno dei principi fondamentali le differenze tra Oracle e PostgreSQL è che PostgreSQL emette implicitamente un COMMIT dopo ogni comando che non segue START TRANSACTION (o BEGIN). Questo processo è noto anche da alcuni altri motori di database come autocommit. Sebbene il commit automatico sia abilitato per impostazione predefinita, può essere disattivato in fase di sessione livello usando SET AUTOCOMMIT OFF.

Livelli di isolamento

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

  • Lettura non confermata: una transazione attualmente in fase di elaborazione può vedere i dati non confermati creati dall'altra transazione. 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 non sono possibili modifiche di cui non è stato eseguito il commit ("letture "sporche").
  • Lettura ripetibile: una transazione può visualizzare le modifiche apportate dall'altro solo dopo che entrambe le transazioni hanno emesso un COMMIT o entrambe sono rollback,
  • Serializzabile:il livello di isolamento più rigido e massimo. Questo livello blocca tutti i record a cui viene eseguito l'accesso e 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 li vedono altre transazioni in esecuzione. Inoltre, quando agli stessi dati accede per transazioni simultanee, il livello selezionato di isolamento delle transazioni influisce come interagiscono le diverse transazioni.

Oracle supporta i seguenti livelli di isolamento:

  • Lettura confermata (valore predefinito)
  • Serializable
  • 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 di lettura automatica in tutto il database e in tutte le sessioni.
  • Oracle si basa sul numero di modifica di sistema (SCN) della transazione corrente per ottenere una vista coerente del database. Pertanto, tutte le query del database restituiscono solo i dati committati rispetto all'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 le seguenti quattro livelli di isolamento delle transazioni specificato nello standard ANSI SQL:92:

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

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

Per verificare gli attuali livelli di isolamento sia a livello di TRANSACTION che di SESSION: usa la seguente affermazione:

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]

E 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 a livello di INSTANCE viene controllato utilizzando il flag di database default_transaction_isolation. Puoi verificare questo utilizzando la seguente dichiarazione:

postgres=> SHOW DEFAULT_TRANSACTION_ISOLATION;

L'output è il seguente:

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

Passaggi successivi