Винаги съм се чудил защо типът данни VARCHAR2 е ограничен до толкова малко символи. За повечето атрибути не са ви необходими повече от 2000 байта. Спомням си, когато Oracle вдигна границата от 2000 байта на 4000. Но SQL Server 2008R2 ви позволява да използвате 8000. Говорим за символни данни и ограничението от 2000 или 4000 байта ми се стори някак произволно. Сега в Oracle 12c можете да използвате VARCHAR2(32767) за максимум 32KB. Но преди да можете да използвате тази нова функция, трябва да свършите малко работа. Извън кутията ще получите грешка.
SQL> създайте таблица test_tab (val varchar2(32000)); създайте таблица test_tab (val varchar2(32000)) *ГРЕШКА в ред 1:ORA-00910 дължината е твърде дълга за нейните данни:Oracle 12c включва нов параметър, MAX_STRING_SIZE, който контролира колко голям може да бъде вашият тип данни VARCHAR2. Този параметър може да бъде настроен на СТАНДАРТНО или РАЗШИРЕНО. По подразбиране е СТАНДАРТНО, което ограничава VARCHAR2 до 4000 байта. Промяната на този параметър на стандартен на EXTENDED е еднопосочно пътуване. Не можете да се върнете обратно. За да направите промяната, трябва да СТАРТирате НАДГРАДЯВАНЕ на екземпляра, да промените параметъра и да стартирате скрипт.
SQL> SUTLDOWN SECLOPIADATABASE Затворен. Database Discounted.Oracle ENSTAND SUTLONG.SQL> Стартиране на ъпгрейд Надграден екземпляр. Тотална система Global Area 1043886080 Bytesfixed Размер 2296280 BytesVarible 654313000 BytesDataBas системен набор max_string_size=Разширен обхват=и двете;Системата е променена.SQL> @?/rdbms/admin/utl32k.sqlТова може да отнеме известно време. След като приключите, отскочете екземпляра, за да се отвори както обикновено.
Вече мога да създам таблица с този по-голям тип данни.
SQL> създайте таблица test_tab (val varchar2(32000));Таблицата е създадена.