Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Anmelden für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch die Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Erweiterte Datentypfunktion für Oracle-Datenbanken aktivieren
Einführung
In Oracle Database 12c wurde der Parameter MAX_STRING_SIZE eingeführt, der die maximale Größe der Datentypen VARCHAR2, NVARCHAR2 und RAW steuert. Wenn der Parameter MAX_STRING_SIZE auf EXTENDED gesetzt wird, wird die Datentypgröße auf 32767 Byte begrenzt. Beim Setzen von MAX_STRING_SIZE auf den Wert EXTENDED muss der Initialisierungsparameter COMPATIBLE der Datenbank 12.0.0.0 oder höher sein.
In diesem Tutorial werden die Aufgaben beschrieben, mit denen Oracle Database die neuen erweiterten Datentypen nutzen kann, für die bestimmte Upgradeaktionen erforderlich sind.
Ziele
- Unterstützende Datentypen VARCHAR2, NVARCHAR2 und RAW können maximal 32767 Byte betragen.
Voraussetzungen
- Datenbankversion muss Oracle 12.2 oder höher sein.
Aufgabe 1: Erweitern Datentyp auf einer Nicht-Containerdatenbank festlegen
-
Führen Sie den folgenden Befehl aus.
SQL> SHOW PARAMETER MAX_STRING_ | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | STANDARD |
-
Starten Sie die Datenbank im Upgrade-Modus.
SQL> SHUTDOWN IMMEDIATE; Database closed. Database dismounted. ORACLE instance shut down. SQL>STARTUP UPGRADE ORACLE instance started. Total System Global Area 1.4663E+10 bytes Fixed Size 15697000 bytes Variable Size 1.1878E+10 bytes Database Buffers 2717908992 bytes Redo Buffers 51404800 bytes Database mounted. Database opened.
-
Ändern Sie den Wert
MAX_STRING_SIZE
in EXTENDED.SQL> alter system set MAX_STRING_SIZE='EXTENDED' SCOPE=BOTH; System altered. SQL> show parameter MAX_STRING_SIZE | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | EXTENDED |
-
Führen Sie das Skript
utl32k.sql
aus:@?/rdbms/admin/utl32k.sql
.SQL> @?/rdbms/admin/utl32k.sql Session altered. DOC>####################################################################### DOC>####################################################################### DOC> The following statement will cause an "ORA-01722: invalid number" DOC> error if the database has not been opened for UPGRADE. DOC> DOC> Perform a "SHUTDOWN ABORT" and DOC> restart using UPGRADE. DOC>####################################################################### DOC>####################################################################### DOC># no rows selected DOC>####################################################################### DOC>####################################################################### DOC> The following statement will cause an "ORA-01722: invalid number" DOC> error if the database does not have compatible >= 12.0.0 DOC> DOC> Set compatible >= 12.0.0 and retry. DOC>####################################################################### DOC>####################################################################### DOC># PL/SQL procedure successfully completed. Session altered. 1524 rows updated. Commit complete. System altered. PL/SQL procedure successfully completed. Commit complete. System altered. Session altered. Session altered. Table created. Table created. Table created. Table truncated. 0 rows created. PL/SQL procedure successfully completed. no rows selected DOC>####################################################################### DOC>####################################################################### DOC> The following statement will cause an "ORA-01722: invalid number" DOC> error if we encountered an error while modifying a column to DOC> account for data type length change as a result of enabling or DOC> disabling 32k types. DOC> DOC> Contact Oracle support for assistance. DOC>####################################################################### DOC>####################################################################### DOC># PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. Commit complete.
-
Starten Sie die Datenbank neu.
shutdown immediate; startup SQL> show parameter max_string | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | EXTENDED |
Aufgabe 2: Erweitern Datentyp in einer Containerdatenbank festlegen (CDB$ROOT)
-
Führen Sie die folgenden Befehle aus.
[oracle@vm4 ~]$ sqlplus "/ as sysdba" SQL*Plus: Release 12.2.0.1.0 Production on Thu Sep 7 13:26:41 2023 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to: Oracle Database 12c EE Extreme Perf Release 12.2.0.1.0 - 64bit Production SQL> SHOW PARAMETER MAX_STRING_ | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | STANDARD | SQL> show pdbs; | CON_ID | CON_NAME | OPEN MODE | RESTRICTED | | ------ | ----------- | ---------- | ---------- | | 2 | PDB$SEED | READ ONLY | NO | | 3 | RATPRD_PDB1 | READ WRITE | NO | [oracle@vm4 ~]$ cd $ORACLE_HOME/rdbms/admin [oracle@vm4 admin]$ pwd /u01/app/oracle/product/12.2.0.1/dbhome_1/rdbms/admin [oracle@vm4 ~]$ mkdir -p /home/oracle/mydir/utl32k_cdb_pdbs_output [oracle@vm4 ~]$ sqlplus "/ as sysdba" SQL*Plus: Release 12.2.0.1.0 Production on Thu Sep 7 13:30:18 2023 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to: Oracle Database 12c EE Extreme Perf Release 12.2.0.1.0 - 64bit Production SQL> ALTER SESSION SET CONTAINER=CDB$ROOT; Session altered.
-
Ändern Sie den Wert
MAX_STRING_SIZE
in EXTENDED.SQL> ALTER SYSTEM SET MAX_STRING_SIZE=extended SCOPE=SPFILE; System altered.
-
Starten Sie die Datenbank im Upgrade-Modus.
SQL> shutdown; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup upgrade; ORACLE instance started. Total System Global Area 3.2749E+10 bytes Fixed Size 12351112 bytes Variable Size 4160751992 bytes Database Buffers 2.8387E+10 bytes Redo Buffers 188973056 bytes Database mounted. Database opened. SQL> exit
-
Führen Sie das Skript
catcon.pl
aus.Hinweis: Mit dem Skript
catcon.pl
können Sie das Skriptrdbms/admin/utl32k.sql
in der Root und in allen PDBs in der CDB ausführen, um die maximale Größe der Spalten VARCHAR2, NVARCHAR2 und RAW zu erhöhen. Mit der Option -force_pdb_mode "UPGRADE" wird sichergestellt, dass alle PDBs, einschließlich Anwendungs-Root-Klone, im Migrationsmodus geöffnet werden. Geben Sie das SYS-Kennwort ein, wenn Sie dazu aufgefordert werden.[oracle@vm4 ~]$ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catcon.pl -u SYS --force_pdb_mode 'UPGRADE' -d $ORACLE_HOME/rdbms/admin -l '/home/oracle/mydir/utl32k_cdb_pdbs_output' -b utl32k_cdb_pdbs_output utl32k.sql catcon: ALL catcon-related output will be written to [/home/oracle/mydir/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output_catcon_88242.lst] catcon: See [/home/oracle/mydir/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output*.log] files for output generated by scripts catcon: See [/home/oracle/mydir/utl32k_cdb_pdbs_output/utl32k_cdb_pdbs_output_*.lst] files for spool files, if any Enter Password: -> enter sys password catcon.pl: completed successfully [oracle@vm4 ~]$ sqlplus "/ as sysdba" SQL*Plus: Release 12.2.0.1.0 Production on Thu Sep 7 13:48:56 2023 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to: Oracle Database 12c EE Extreme Perf Release 12.2.0.1.0 - 64bit Production
SQL> startup; ORA-01081: cannot start already-running ORACLE - shut it down first SQL> shut immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup; ORACLE instance started. Total System Global Area 3.2749E+10 bytes Fixed Size 12351112 bytes Variable Size 4160751992 bytes Database Buffers 2.8387E+10 bytes Redo Buffers 188973056 bytes Database mounted. Database opened. SQL> show parameter max_string_size; | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | EXTENDED |
Aufgabe 3: Erweiterten Datentyp in PDB festlegen
-
Führen Sie die folgenden Befehle aus, um die Datenbank zu ändern.
SQL> alter session set container = RATPRD_PDB1; Session altered. SQL> show pdbs | CON_ID | CON_NAME | OPEN MODE | RESTRICTED | | ------ | ----------- | ---------- | ---------- | | 3 | RATPRD_PDB1 | READ WRITE | NO | SQL> ALTER PLUGGABLE DATABASE RATPRD_PDB1 CLOSE IMMEDIATE; Pluggable database altered. SQL> show pdbs | CON_ID | CON_NAME | OPEN MODE | RESTRICTED | | ------ | ----------- | --------- | ---------- | | 3 | RATPRD_PDB1 | MOUNTED |
-
Öffnen Sie die PDB RATPRD_PDB1 im Upgrademodus, die zum Ändern des Parameters max_string_size erforderlich ist.
SQL> ALTER PLUGGABLE DATABASE RATPRD_PDB1 OPEN UPGRADE; $ Pluggable database altered. SQL> show pdbs; | CON_ID | CON_NAME | OPEN MODE | RESTRICTED | | ------ | ----------- | --------- | ---------- | | 3 | RATPRD_PDB1 | MIGRATE | YES |
-
Führen Sie utl32k.sql aus, um die maximale Größe der Spalten VARCHAR2,NVARCHAR2 und RAW in PDB RATPRD_PDB1 zu ändern.
SQL> @$ORACLE_HOME/rdbms/admin/utl32k.sql; Session altered. DOC>####################################################################### DOC>####################################################################### DOC> The following statement will cause an "ORA-01722: invalid number" DOC> error if the database has not been opened for UPGRADE. DOC> DOC> Perform a "SHUTDOWN ABORT" and DOC> restart using UPGRADE. DOC>####################################################################### DOC>####################################################################### DOC># no rows selected DOC>####################################################################### DOC>####################################################################### DOC> The following statement will cause an "ORA-01722: invalid number" DOC> error if the database does not have compatible >= 12.0.0 DOC> DOC> Set compatible >= 12.0.0 and retry. DOC>####################################################################### DOC>####################################################################### DOC># PL/SQL procedure successfully completed. Session altered. 0 rows updated. Commit complete. System altered. PL/SQL procedure successfully completed. Commit complete. System altered. Session altered. Session altered. Table created. Table created. Table created. Table truncated. 0 rows created. PL/SQL procedure successfully completed. STARTTIME : 09/07/2023 14:32:06.790646000 PL/SQL procedure successfully completed. No errors. PL/SQL procedure successfully completed. Session altered. Session altered. 0 rows created. no rows selected no rows selected DOC>####################################################################### DOC>####################################################################### DOC> The following statement will cause an "ORA-01722: invalid number" DOC> error if we encountered an error while modifying a column to DOC> account for data type length change as a result of enabling or DOC> disabling 32k types. DOC> DOC> Contact Oracle support for assistance. DOC>####################################################################### DOC>####################################################################### DOC># PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. Commit complete. Package altered. Package altered. SQL> show pdbs; | CON_ID | CON_NAME | OPEN MODE | RESTRICTED | | ------ | ----------- | --------- | ---------- | | 3 | RATPRD_PDB1 | MIGRATE | YES | SQL> ALTER PLUGGABLE DATABASE RATPRD_PDB1 CLOSE IMMEDIATE; Pluggable database altered.
-
Prüfen Sie, ob der Parameterwert max_string_size in EXTENDED geändert wurde.
SQL> ALTER PLUGGABLE DATABASE RATPRD_PDB1 open ; Pluggable database altered. SQL> show pdbs; | CON_ID | CON_NAME | OPEN MODE | RESTRICTED | | ------ | ----------- | ---------- | ---------- | | 3 | RATPRD_PDB1 | READ WRITE | NO | SQL> show parameter max_string_size; | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | EXTENDED |
Verwandte Links
Bestätigungen
- Autor - Hakim Ahamad (Principal Cloud Architect)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem die Website education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Produktdokumentation finden Sie im Oracle Help Center.
Enable the Extended Data Type Capability for Oracle databases
F87592-01
October 2023
Copyright © 2023, Oracle and/or its affiliates.