Mi sono sempre chiesto perché il tipo di dati VARCHAR2 fosse limitato a così pochi caratteri. Per la maggior parte degli attributi, non sono necessari più di 2.000 byte. Ricordo quando Oracle ha aumentato il limite da 2.000 byte a 4.000. Ma SQL Server 2008R2 ti consente di usarne 8.000. Stiamo parlando di dati di caratteri e il limite di 2.000 o 4.000 byte mi è sembrato un po' arbitrario. Ora in Oracle 12c puoi utilizzare VARCHAR2(32767) per un massimo di 32 KB. Ma prima di poter utilizzare questa nuova funzionalità, devi lavorare un po'. Immediatamente, riceverai un errore.
SQL> create table test_tab (val varchar2(32000)); create table test_tab (val varchar2(32000)) * ERROR at line 1: ORA-00910: specified length too long for its datatype
Oracle 12c include un nuovo parametro, MAX_STRING_SIZE che controlla quanto può essere grande il tuo tipo di dati VARCHAR2. Questo parametro può essere impostato su STANDARD o ESTESO. L'impostazione predefinita è STANDARD che limita VARCHAR2 a 4000 byte. La modifica di questo parametro da standard a ESTESO è un viaggio di sola andata. Non puoi tornare indietro. Per apportare la modifica, è necessario AVVIARE l'AGGIORNAMENTO dell'istanza, modificare il parametro ed eseguire uno script.
SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup upgrade ORACLE instance started. Total System Global Area 1043886080 bytes Fixed Size 2296280 bytes Variable Size 654313000 bytes Database Buffers 381681664 bytes Redo Buffers 5595136 bytes Database mounted. Database opened. SQL> alter system set max_string_size=EXTENDED scope=both; System altered. SQL> @?/rdbms/admin/utl32k.sql
L'esecuzione dell'operazione potrebbe richiedere del tempo. Una volta terminato, rimbalza l'istanza per aprirla normalmente.
Ora posso creare una tabella con questo tipo di dati più grande.
SQL> create table test_tab (val varchar2(32000)); Table created.