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:
- Migrazione degli utenti Oracle a Cloud SQL per PostgreSQL: Terminologia e funzionalità (questo documento)
- Migrazione degli utenti Oracle a Cloud SQL per PostgreSQL: tipi di dati, utenti e tabelle
- Migrazione degli utenti Oracle a Cloud SQL per PostgreSQL: query, procedure archiviate, funzioni e trigger
- Migrazione degli utenti Oracle a Cloud SQL per PostgreSQL: sicurezza, operazioni, monitoraggio e registrazione
- Migrazione di utenti e schemi di Oracle Database a Cloud SQL per PostgreSQL
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
|
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
|
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
|
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
|
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.
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, comeSYS
eSYSTEM
.
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 |
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 |
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 |
pg_catalog.pg_roles |
Job/ pianificazione |
DBA_JOBS |
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 |
Serrature | DBA_LOCK |
pg_catalog.pg_locks |
Parametri del database | V$PARAMETER |
pg_catalog.pg_settings
show |
Segmenti | DBA_SEGMENTS |
Non supportati. |
Ruoli | DBA_ROLES |
pg_catalog.pg_roles |
Cronologia delle sessioni | V$ACTIVE_SESSION_HISTORY |
Non supportati. |
Versione | V$VERSION |
select version(); |
Eventi di attesa | V$WAITCLASSMETRIC |
Non supportati. |
Ottimizzazione e analisi di SQL |
V$SQL |
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
.
Vai alla pagina Modifica istanza di Cloud Storage.
In Contrassegni, fai clic su Aggiungi elemento e cerca
log_connections
come. nello screenshot seguente.
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.
Mostra il parametro di configurazione
timezone
:postgres=> SHOW timezone;
Verrà visualizzato il seguente output, dove
timezone
èset to UTC
:TimeZone ---------- UTC (1 row)
Imposta
timezone
su UTC-9:postgres=> SET timezone='UTC-9';
Mostra il parametro di configurazione
timezone
:postgres> SHOW timezone;
Verrà visualizzato il seguente output, dove
timezone
è impostato suUTC-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
- Scopri di più su Cloud SQL per PostgreSQL account utente.
- Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Dai un'occhiata al nostro Centro architetture cloud.