Ik heb me altijd afgevraagd waarom het VARCHAR2-gegevenstype beperkt was tot zo weinig tekens. Voor de meeste attributen heb je niet meer dan 2.000 bytes nodig. Ik herinner me dat Oracle de limiet verhoogde van 2.000 bytes naar 4.000. Maar met SQL Server 2008R2 kunt u er 8.000 gebruiken. We hebben het over karaktergegevens en de limiet van 2.000 of 4.000 bytes leek me nogal willekeurig. Nu kunt u in Oracle 12c VARCHAR2 (32767) gebruiken voor maximaal 32 KB. Maar voordat u deze nieuwe functie kunt gebruiken, moet u wat werk verzetten. Standaard krijg je een foutmelding.
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 datatypete lang voor zijn gegevenstype
Oracle 12c bevat een nieuwe parameter, MAX_STRING_SIZE, die bepaalt hoe groot uw VARCHAR2-gegevenstype kan zijn. Deze parameter kan worden ingesteld op STANDARD of UITGEBREID. De standaardwaarde is STANDARD die VARCHAR2 beperkt tot 4000 bytes. Het wijzigen van deze parameter naar standaard in UITGEBREID is een enkele reis. Je kunt niet terug. Om de wijziging aan te brengen, moet u de instantie OPSTARTEN UPGRADEN, de parameter wijzigen en een script uitvoeren.
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
Het kan even duren voordat dit is uitgevoerd. Als u klaar bent, stuitert u de instantie om zoals normaal te openen.
Ik kan nu een tabel maken met dit grotere gegevenstype.
SQL> create table test_tab (val varchar2(32000)); Table created.