Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a la capa gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para las credenciales, el arrendamiento y los compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Activar la capacidad de tipo de dato ampliado para bases de datos Oracle
Introducción
Oracle Database 12c introdujo el parámetro MAX_STRING_SIZE que controla el tamaño máximo de los tipos de dato VARCHAR2, NVARCHAR2 y RAW. Al definir el parámetro MAX_STRING_SIZE en EXTENDED, se activa el tamaño del tipo de dato al límite de 32767 bytes. Al definir MAX_STRING_SIZE en el valor EXTENDED, el parámetro de inicialización COMPATIBLE de la base de datos debe ser 12.0.0.0 o una versión superior.
En este tutorial se detallan las tareas para que Oracle Database pueda aprovechar los nuevos tipos de datos ampliados que requieren acciones de actualización específicas.
Objetivos
- Aproveche los tipos de dato VARCHAR2, NVARCHAR2 y RAW para el límite de 32767 bytes.
Requisitos
- La versión de la base de datos debe ser Oracle 12.2 O superior.
Tarea 1: Definición del tipo de dato ampliado en una base de datos sin contenedor
-
Ejecute el siguiente comando.
SQL> SHOW PARAMETER MAX_STRING_ | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | STANDARD |
-
Inicie la base de datos en modo de actualización.
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.
-
Cambie el valor
MAX_STRING_SIZE
a 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 |
-
Ejecute el script
utl32k.sql
:@?/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.
-
Reinicie la base de datos.
shutdown immediate; startup SQL> show parameter max_string | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | EXTENDED |
Tarea 2: Definición del tipo de dato ampliado en una base de datos de contenedor (CDB$ROOT)
-
Ejecute los siguientes comandos.
[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.
-
Cambie el valor
MAX_STRING_SIZE
a EXTENDED.SQL> ALTER SYSTEM SET MAX_STRING_SIZE=extended SCOPE=SPFILE; System altered.
-
Inicie la base de datos en modo de actualización.
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
-
Ejecute el script
catcon.pl
.Nota: Utilice el script
catcon.pl
para ejecutar el scriptrdbms/admin/utl32k.sql
en la raíz y en todas las PDB de la CDB para aumentar el tamaño máximo de las columnas VARCHAR2, NVARCHAR2 y RAW. La opción -force_pdb_mode 'UPGRADE' se utiliza para garantizar que todas las PDB, incluidas las clonaciones raíz de la aplicación, se abren en modo de migración. Introduzca la contraseña SYS cuando se le solicite.[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 |
Tarea 3: Definir el tipo de dato ampliado en PDB
-
Ejecute los siguientes comandos para modificar la base de datos.
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 |
-
Abra la PDB RATPRD_PDB1 en modo de actualización, necesaria para modificar el parámetro max_string_size.
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 |
-
Ejecute utl32k.sql para modificar el tamaño máximo de las columnas VARCHAR2,NVARCHAR2 y RAW en la PDB RATPRD_PDB1.
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.
-
Valide que el valor del parámetro max_string_size se cambie a EXTENDED.
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 |
Enlaces relacionados
Acuses de recibo
- Autor: Hakim Ahamad (arquitecto principal de Cloud)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre los productos, visite Oracle Help Center.
Enable the Extended Data Type Capability for Oracle databases
F87592-01
October 2023
Copyright © 2023, Oracle and/or its affiliates.