Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever e obter uma conta gratuita, consulte Conceitos Básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Ativar a Capacidade do Tipo de Dados Estendido para bancos de dados Oracle
Introdução
O Oracle Database 12c introduziu o parâmetro MAX_STRING_SIZE, que controla o tamanho máximo dos tipos de dados VARCHAR2, NVARCHAR2 e RAW. A definição do parâmetro MAX_STRING_SIZE como EXTENDED permite que o tamanho do tipo de dados seja limite de 32767 bytes. Ao definir MAX_STRING_SIZE como valor EXTENDED, o parâmetro de inicialização COMPATIBLE do banco de dados deve ser 12.0.0.0 ou versão superior.
Este tutorial detalha as tarefas de Habilitar o Oracle Database para aproveitar os novos tipos de dados estendidos que requerem ações de upgrade específicas.
Objetivos
- Aproveite os tipos de dados de suporte VARCHAR2, NVARCHAR2 e RAW para o limite de 32767 bytes.
Pré-requisitos
- A versão do banco de dados deve ser Oracle 12.2 OU posterior.
Tarefa 1: Definir o Tipo de Dados Estendido em um Banco de Dados Não Contêiner
-
Execute o seguinte comando.
SQL> SHOW PARAMETER MAX_STRING_ | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | STANDARD |
-
Inicie o banco de dados no modo de upgrade.
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.
-
Altere o valor
MAX_STRING_SIZE
para 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 |
-
Execute o 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 o banco de dados.
shutdown immediate; startup SQL> show parameter max_string | NAME | TYPE | VALUE | | --------------- | ------ | -------- | | max_string_size | string | EXTENDED |
Tarefa 2: Definir o Tipo de Dados Estendido em um Banco de Dados Contêiner (CDB$ROOT)
-
Execute os comandos a seguir.
[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.
-
Altere o valor
MAX_STRING_SIZE
para EXTENDED.SQL> ALTER SYSTEM SET MAX_STRING_SIZE=extended SCOPE=SPFILE; System altered.
-
Inicie o banco de dados no modo de upgrade.
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
-
Execute o script
catcon.pl
.Observação: Use o script
catcon.pl
para executar o scriptrdbms/admin/utl32k.sql
na raiz e em todos os PDBs no CDB para aumentar o tamanho máximo das colunas VARCHAR2, NVARCHAR2 e RAW. A opção -force_pdb_mode 'UPGRADE' é usada para garantir que todos os PDBs, incluindo clones raiz de aplicativos, sejam abertos no modo de migração. Informe a senha SYS quando solicitado.[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 |
Tarefa 3: Definir o Tipo de Dados estendido no PDB
-
Execute os comandos a seguir para alterar o banco de dados.
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 o PDB RATPRD_PDB1 no modo de upgrade, necessário para modificar o 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 |
-
Execute utl32k.sql para modificar o tamanho máximo das colunas VARCHAR2,NVARCHAR2 e RAW no 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 o valor do parâmetro max_string_size alterado para 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 |
Links Relacionados
Confirmações
- Autor - Hakim Ahamad (Arquiteto de Nuvem Principal)
Mais Recursos de Aprendizagem
Explore outros laboratórios no site docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal YouTube do Oracle Learning. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Enable the Extended Data Type Capability for Oracle databases
F87592-01
October 2023
Copyright © 2023, Oracle and/or its affiliates.