Dieses Dokument ist Teil einer Reihe, die wichtige Informationen und Anleitungen zur Planung und Durchführung von Oracle® 11g/12c-Datenbankmigrationen zu Cloud SQL for PostgreSQL Version 12 enthält. Zusätzlich zum Teil der anfänglichen Einrichtung umfasst die Reihe die folgenden Teile:
- Oracle-Nutzer zu Cloud SQL for PostgreSQL migrieren: Terminologie und Funktionalität
- Oracle-Nutzer zu Cloud SQL for PostgreSQL migrieren: Datentypen, Nutzer und Tabellen (dieses Dokument)
- Oracle-Nutzer zu Cloud SQL for PostgreSQL migrieren: Abfragen, gespeicherte Verfahren, Funktionen und Trigger
- Oracle-Nutzer zu Cloud SQL for PostgreSQL migrieren: Sicherheit, Vorgänge, Monitoring und Logging
- Oracle Database-Nutzer und -Schemas zu Cloud SQL for PostgreSQL migrieren
Datentypen
Cloud SQL for PostgreSQL bietet mehrere Datentypen, die vollständig oder teilweise den von Oracle bereitgestellten Datentypen entsprechen. In der folgenden Tabelle sind die häufigsten PostgreSQL-Datentypen aufgeführt. Darauf folgt ein Vergleich der einfachen Oracle-Datentypen mit den entsprechenden Cloud SQL for PostgreSQL-Datentypen. Wenn ein Datentyp nicht unterstützt wird, wird ein alternativer Datentyp aufgeführt.
Einfache Datentypen von Cloud SQL for PostgreSQL 12
Cloud SQL for PostgreSQL-Datentypfamilie | Name des Cloud SQL for PostgreSQL-Datentyps | Datentypspezifikation |
---|---|---|
String/Zeichen | CHAR(n) |
Speichert genau n Zeichen. Alias von CHARACTER(n) . |
CHARACTER(n) |
Speichert genau n Zeichen. |
|
VARCHAR(n) |
Speichert eine variable Anzahl von Zeichen, bis maximal n Zeichen. Alias von CHARACTER
VARYING(n) . |
|
CHARACTER VARYING(n) |
Speichert eine variable Anzahl von Zeichen, bis maximal n Zeichen. |
|
TEXT |
Bestimmte Variante von VARCHAR , für die keine Obergrenze für die Anzahl von Zeichen festgelegt werden muss. Der längste Zeichenstring, der gespeichert werden kann, beträgt 1 GB (für alle Datentypen von Stringzeichen identisch). |
|
Numerisch | SMALLINT |
Mindestwert: -32768 | Maximalwert: 32767. |
INTEGER |
Mindestwert: -2147483648 | Maximalwert: 2147483647. | |
BIGINT |
Mindestwert: -2^63 | Maximalwert: 2^63-1. | |
REAL |
Gleitkommazahl mit einfacher Precision (4 Byte). | |
DOUBLE PRECISION |
Gleitkommazahl mit doppelter Precision (8 Byte). | |
DECIMAL (p,s) |
Kann beliebige Werte mit p Ziffern und s Dezimalzahlen speichern. |
|
NUMERIC(p,s) |
Kann beliebige Werte mit p Ziffern und s Dezimalzahlen speichern. |
|
SMALLSERIAL |
Ganzzahl für automatische Inkrementierung. Mindestwert: 1 | Maximalwert: 32767. | |
SERIAL |
Ganzzahl für automatische Inkrementierung. Mindestwert: 1 | Maximalwert: 2147483647. | |
BIGSERIAL |
Ganzzahl für automatische Inkrementierung. Mindestwert: 1 | Maximalwert: 2^63-1. | |
Währung | MONEY |
Der Währungsbetrag mit einer festen Bruchgenauigkeit. Mindestwert: -92233720368547758.08 | Maximalwert: +92233720368547758.07. |
Datum & Uhrzeit | DATE |
- Werte mit Datum, aber ohne Uhrzeit. : Der unterstützte Bereich ist 4713 v. Chr. bis 5874897 n. Chr. mit einer Auflösung von 1 Tag. |
TIMESTAMP (p) |
- Werte, die sowohl Datums- als auch Uhrzeitangaben enthalten. – Der unterstützte Bereich ist 4713 v. Chr. bis 294276 n. Chr. : Die Auflösung beträgt p Nachkommastellen in Sekunden (oder 1 Mikrosekunde, falls nicht angegeben). |
|
TIMESTAMP (p) with time zone |
– Werte, die sowohl Datum, Uhrzeit als auch Zeitzone enthalten. – Der unterstützte Bereich ist 4713 v. Chr. bis 294276 n. Chr. : Die Auflösung beträgt p Nachkommastellen in Sekunden (oder 1 Mikrosekunde, falls nicht angegeben). |
|
TIME (p) |
– Werte mit einem Uhrzeitteil, aber ohne Datumsangabe. - Der unterstützte Bereich geht von 00:00:00 bis 24:00:00. : Die Auflösung beträgt p Nachkommastellen in Sekunden (oder 1 Mikrosekunde, falls nicht angegeben). |
|
TIME (p) with time zone |
– Werte mit Uhrzeit und Zeitzone, aber ohne Datumsangabe. - Der unterstützte Bereich geht von 00:00:00 bis 24:00:00. : Die Auflösung beträgt p Nachkommastellen in Sekunden (oder 1 Mikrosekunde, falls nicht angegeben). |
|
INTERVAL (p) |
– Zeitintervall – Der unterstützte Zeitraum liegt zwischen -178000000 und 178000000 Jahren. : Die Auflösung beträgt p Nachkommastellen in Sekunden (oder 1 Mikrosekunde, falls nicht angegeben). |
|
JSON | JSON |
JSON-Textdaten |
JSONB |
JSON-Binärdaten. | |
XML | XML |
XML-Daten. |
Geometrisch |
GEOMETRY |
Der Spaltentyp, der angibt, wann Sie die folgenden Datenmodelle verwenden möchten. |
POINT |
Ein (x,y) -Wert. |
|
LINE |
Ein (A, B, C) -Tupel, wobei Ax +
By + C = 0 und A und B nicht beide 0 sind.ODER Punkt 1 und Punkt 2 in den folgenden Formaten:
|
|
LSEG |
Ein Liniensegment ((x1,y1),(x2,y2)) . |
|
BOX |
Rechteckiges Feld ((x1,y1),(x2,y2)) . |
|
PATH |
Eine Folge von Punkten ((x1,y1),...) . |
|
POLYGON |
Eine Folge von Punkten, praktisch ein geschlossener Pfad. | |
CIRCLE |
(x,y),r) (Mittelpunkt und Radius) |
|
Logisch | BOOLEAN |
- Enthält den Wert "true", "false" oder "null". : - Akzeptiert Werte wie yes , true , t , on und 1 als "true". |
Bit-/Binärdaten | BIT (n) |
Bitfolge mit fester Länge |
BYTEA |
Binärdaten/Bytearray. | |
Netzwerkadresstypen | CIDER |
IPv4- und IPv6-Netzwerke. |
INET |
IPv4- und IPv6-Hosts und -Netzwerke. | |
MACADDR |
MAC-Adressen. | |
MACADDR8 |
MAC-Adressen (EUI-64-Format). | |
Others | PG_LSN |
Log-Sequenznummer von Cloud SQL for PostgreSQL. |
TSQUERY |
Textsuchabfrage | |
TSVECTOR |
Textsuchdokument | |
TXID_SNAPSHOT |
Snapshot der Transaktions-ID auf Nutzerebene | |
UUID |
Universell eindeutige Kennzeichnung |
Datentyp-Konvertierung von Oracle zu Cloud SQL for PostgreSQL
Oracle-Datentypfamilie | Oracle-Datentypname | Oracle-Datentypspezifikation | Entsprechung von Cloud SQL for PostgreSQL zu Oracle | Entsprechung/Alternative von Cloud SQL for PostgreSQL |
---|---|---|---|---|
String/Zeichen | CHAR(n) |
Maximale Größe: 2.000 Byte. | Ja | CHAR(n) |
CHARACTER(n) |
Maximale Größe: 2.000 Byte. | Ja | CHARACTER(n) |
|
NCHAR(n) |
Maximale Größe: 2.000 Byte. | Nein | CHAR(n) |
|
VARCHAR(n) |
Maximale Größe: 2.000 Byte. | Ja | VARCHAR(n) |
|
NCHAR VARYING(n) |
Varying-Länge UTF-8-String Maximale Größe: 4.000 Byte. |
Nein | CHARACTER VARYING(n) |
|
VARCHAR2(n)
11g |
Maximale Größe: 4.000 Byte. Maximale Größe: 32 KB in PL/SQL. | Ja* | VARCHAR(n) |
|
VARCHAR2(n) |
Maximale Größe: 32.767 Byte MAX_STRING_SIZE= EXTENDED . |
Ja* | VARCHAR(n) |
|
NVARCHAR2(n) |
Maximale Größe: 4.000 Byte. | Nein | VARCHAR(n) |
|
LONG |
Maximale Größe: 2 GB. | Ja* | TEXT |
|
RAW(n) |
Maximale Größe: 2.000 Byte. | Ja* | BYTEA |
|
LONG RAW |
Maximale Größe: 2 GB. | Ja* | BYTEA |
|
Numerisch | NUMBER |
Gleitkommazahl. | Ja* | NUMERIC(p,s) |
NUMBER(*) |
Gleitkommazahl. | Ja* | DOUBLE PRECISION |
|
NUMERIC(p,s) |
Die Precision kann zwischen 1 und 38 liegen. | Ja | NUMERIC(p,s) |
|
FLOAT(p,s) |
Gleitkommazahl. | Ja* | DOUBLE PRECISION |
|
DEC(p,s) |
Festkommazahl. | Ja | DEC(p,s) |
|
DECIMAL(p,s) |
Festkommazahl. | Ja | DECIMAL(p,s) |
|
INT |
38-stellige Ganzzahl. | Ja | INT |
|
INTEGER |
38-stellige Ganzzahl. | Ja | INTEGER |
|
SMALLINT |
38-stellige Ganzzahl. | Ja | SMALLINT |
|
REAL |
Gleitkommazahl. | Ja* | DOUBLE PRECISION |
|
DOUBLE PRECISION |
Gleitkommazahl. | Ja | DOUBLE PRECISION |
|
Datum & Uhrzeit | DATE |
Speichert Datums- und Uhrzeitdaten (Jahr, Monat, Tag, Stunde, Minute und Sekunde). | Ja* | TIMESTAMP(0) |
TIMESTAMP(p) |
Datum und Uhrzeit mit Anteil. | Ja | TIMESTAMP(p) |
|
TIMESTAMP(p) WITH TIME ZONE |
Datum und Uhrzeit mit Anteil und Zeitzone. | Ja | TIMESTAMP (p) WITH TIME ZONE |
|
INTERVAL YEAR(p) TO MONTH |
Datumsintervall | Ja* | INTERVAL YEAR TO MONTH |
|
INTERVAL DAY(p) TO SECOND(s) |
Tages- und Zeitintervall. | Ja* | INTERVAL DAY TO SECOND(s) |
|
Logisch | BOOLEAN |
Werte TRUE , FALSE und NULL . Kann keiner Datenbanktabellenspalte zugewiesen werden. |
Ja | BOOLEAN |
XML | XMLTYPE |
XML-Daten. | Nein | XML |
LOB | BFILE |
Zeiger auf Binärdatei mit einer maximalen Größe von 4 GB. | Nein | VARCHAR(255) |
CLOB |
Großes Zeichenobjekt mit einer maximalen Dateigröße von 4 GB. | Nein | TEXT |
|
BLOB |
Binary Large Object mit einer maximalen Größe von 4 GB. | Nein | BYTEA |
|
NCLOB |
Unicode-String mit variabler Länge und einer maximalen Dateigröße von 4 GB. | Nein | TEXT |
|
ROWID | ROWID |
Physische Zeilenadresse. | Nein | CTID |
UROWID(n) |
Universelle Zeilen-ID der logischen Zeilenadressen. | Nein | CTID |
|
Räumlich | SDO_ GEOMETRY |
Die geometrische Beschreibung eines räumlichen Objekts. | Ja | Postgres bietet verschiedene Geometrietypen, darunter point , line , path , polygon , circle ... |
SDO_TOPO_ GEOMETRY |
Beschreibt eine Topologie-Geometrie. | Ja | PostGIS ist eine weitverbreitete Postgres-Erweiterung und bietet verschiedene Topologietypen. | |
SDO_GEORASTER |
Ein Raster-Grid oder Bildobjekt wird in einer einzelnen Zeile gespeichert. | Ja | PostGIS ist eine weitverbreitete Postgres-Erweiterung und bietet ein Tool zum Laden von Rasterdateien in die Datenbank. | |
Medientypen | ORDDicom |
Unterstützt die Speicherung und Verwaltung von DICOM-Dateien (Digital Imaging and Communications in Medicine). | Ja, mit Problemumgehung | Postgres bietet den Binärtyp bytea zum Speichern großer Objekte an. |
ORDDoc |
Unterstützt die Speicherung und Verwaltung aller Arten von Mediendaten. | Ja, mit Problemumgehung | Postgres bietet den Binärtyp bytea zum Speichern großer Objekte an. |
|
ORDImage |
Unterstützt die Speicherung und Verwaltung von Bilddaten. | Ja, mit Problemumgehung | Postgres bietet den Binärtyp bytea zum Speichern großer Objekte an. |
|
ORDVideo |
Unterstützt die Speicherung und Verwaltung von Videodaten. | Problemumgehung | Postgres bietet den Binärtyp bytea zum Speichern großer Objekte an. |
* Der entsprechende Datentyp in Cloud SQL for PostgreSQL ist weitgehend mit Oracle kompatibel, verwendet jedoch einen anderen Namen.
Benutzerdefinierte Typen
Oracle bezeichnet benutzerdefinierte Typen (User-Defined Types, UDTs) als OBJECT TYPES
, die mit PL/SQL verwaltet werden. Mit benutzerdefinierten Typen kann der Nutzer anwendungsspezifische, komplexe Datentypen erstellen, die auf der integrierten Oracle-Datentypenliste beruhen und diese erweitern.
Benutzerdefinierte Oracle-Typen | Überblick oder Implementierung von Oracle | Unterstützung für Cloud SQL for PostgreSQL | Entsprechung oder alternative Lösung für Cloud SQL for PostgreSQL |
---|---|---|---|
Abstrakter Datentyp (ADT) | CREATE TYPE ADT_DEMO AS OBJECT ( |
Teilweise mit anderer Syntax | Zusammengesetzte Typen von Cloud SQL for PostgreSQL werden in einer Liste mit Attributnamen und Datentypen angegeben:
|
VARRAY-Typ | CREATE TYPE VARRAY_DEMO AS VARRAY (5) OF VARCHAR2(25); |
Nein | Als Problemumgehung können Sie in Cloud SQL for PostgreSQL Spalten als Array definieren:
|
Verschachtelter Tabellentyp | CREATE TYPE NTT_DEMO AS OBJECT ( |
Nein | Als Problemumgehung verwenden Sie eine Kombination aus zusammengesetzten Typen und einer Array-Spaltendefinition in Cloud SQL for PostgreSQL, um eine ähnliche Funktionalität wie beim verschachtelten Tabellentyp von Oracle zu erzielen.
|
Unvollständiger Typ | Unvollständige Typen sind Typen ohne Attribute und Methoden. Sie können durch andere Typen referenziert werden. Sie müssen jedoch vor der Verwendung die Typdefinition angeben.
|
Nein | N/A |
Nutzer
In diesem Abschnitt wird erläutert, wie Sie Nutzer erstellen und ihnen Berechtigungen zuweisen und weshalb Sie Oracle-Tabellen in Cloud SQL for PostgreSQL-Tabellen umwandeln müssen.
Nutzererstellung und -berechtigungen
Oracle-Datenbanknutzerkonten ("Nutzer" und "Schema" sind bei Oracle identisch) können zum Authentifizieren und Herstellen von Verbindungen zu Datenbanksitzungen verwendet werden. Dabei wird der Autorisierungszugriff für bestimmte Datenbankobjekte/Berechtigungen auf der jeweiligen Ebene des Nutzers festgelegt.
Im Allgemeinen gibt es zwei Arten von Datenbanknutzern:
- Administratoren verwalten die Datenbankinstanz, Nutzer und Ressourcen.
- Nutzerkonten werden für logische Vorgänge, z. B. Anwendungen, bereitgestellt.
Administratoren gewähren Nutzern und Anwendungsnutzerkonten Berechtigungen für den Zugriff auf die Datenbankobjekte. Oracle-Datenbankberechtigungen werden einem Nutzer für bestimmte Vorgänge (z. B. zum Erstellen einer Sitzung/Verbindung) oder für bestimmte Datenbankobjekte (z. B. SELECT
für eine bestimmte Tabelle oder EXECUTE
für ein bestimmtes gespeichertes Verfahren) gewährt.
In Oracle gibt es das Konzept von Nutzern und Rollen. Nutzer werden verwendet, um sich bei der Datenbank zu authentifizieren. Mit Rollen werden Berechtigungen gruppiert, die als Ganzes gewährt werden können.
In Cloud SQL for PostgreSQL sind Nutzer und Rollen synonym. Ein Nutzer in Cloud SQL for PostgreSQL ist eine Rolle mit der Berechtigung connect
. Sie können entweder die Anweisung CREATE USER
oder CREATE ROLE
verwenden, um einen Datenbanknutzer zu erstellen. Im Gegensatz zu Oracle werden in Cloud SQL for PostgreSQL Schemas und Nutzer separat erstellt. Ein Schema ist eine Sammlung von Objekten (z. B. Tabellen, Datentypen, Funktionen usw.) und gehört einem Nutzer.
"Create User" in Oracle | |
---|---|
CREATE USER user_name IDENTIFIED BY password; |
|
"Create User" in Cloud SQL for PostgreSQL | |
CREATE USER user WITH PASSWORD 'password';
ODER
|
Überlegungen zu Konvertierungen
- Nutzer werden auf Stammebene definiert und sind für alle Datenbanken gültig, die im selben Cloud SQL for PostgreSQL-Cluster enthalten sind. Dies ist vergleichbar mit "gängigen Nutzern" in Oracle 12c.
- Die Cloud SQL for PostgreSQL-
CREATE USER
-Syntax unterscheidet sich von Oracle und kann nicht unverändert migriert werden.CREATE USER
in Cloud SQL for PostgreSQL ist ein Alias fürCREATE ROLE
, mit der Ausnahme, dass die OptionLOGIN
standardmäßig aktiviert ist.
Tabellen
Oracle-Tabellen bestehen aus vielen Elementen wie Spaltendatentypen, Tabelleneinschränkungen, Indexen, Partitionen, proprietären Oracle-Tabellenfunktionen usw. Für eine erfolgreiche Migration zu Cloud SQL for PostgreSQL-Datenbanktabellen müssen alle Oracle-Tabellenelemente in Cloud SQL for PostgreSQL-Tabellen konvertiert werden. Einige Elemente werden ohne oder mit geringfügigen Änderungen unterstützt, während andere Elemente vollständig geändert werden müssen.
Aus Sicht der Migration erfordert die Konvertierung von PL/SQL in Cloud SQL for PostgreSQL wahrscheinlich mehr Aufwand, da die Konvertierung von Oracle-Tabellen in Cloud SQL for PostgreSQL-Tabellen eine entscheidende Phase mit erheblicher Bedeutung und weiteren Auswirkungen auf Leistung und Datengröße darstellt.
Im Folgenden sind die Hauptunterschiede zwischen Oracle- und Cloud SQL for PostgreSQL-Tabellen und den zugehörigen Features aufgeführt. Diese Unterschiede werden in den verbleibenden Teilen der Reihe erläutert.
- Tabellensyntax erstellen
- Tabellen- und Indexmetadaten
- Unterstützung bei Einschränkungen
- Unterstützung und Einschränkung von Datentypen
- Indexe
- Partitionen und Partitionsverwaltung
- Tabellen- und Indexwartung
- Temporäre Tabellen
- Aufrufe
- Sichtbare und unsichtbare Spalten (Oracle 12c)
- Tabellen- und Spaltenzeichensätze
Nächste Schritte
- Mehr über Cloud SQL for PostgreSQL-Nutzerkonten erfahren.
- Referenzarchitekturen, Diagramme und Best Practices zu Google Cloud kennenlernen. Weitere Informationen zu Cloud Architecture Center