sql >> Database >  >> RDS >> Oracle

12c VARCHAR2(32767)

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 datatype
te 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.

  1. De snelste manier om te controleren of sommige records in een databasetabel staan?

  2. MySQL Onjuiste datetime-waarde:'0000-00-00 00:00:00'

  3. Query Performance Insight:ontdekken wat resources van uw Azure SQL-database verbruikt?

  4. SQL AS:gebruik, voorbeelden en hoe u er het beste van kunt profiteren