sql >> Databáze >  >> RDS >> Oracle

12c VARCHAR2(32767)

Vždy mě zajímalo, proč byl datový typ VARCHAR2 omezen na tak málo znaků. Pro většinu atributů nepotřebujete více než 2 000 bajtů. Pamatuji si, když Oracle zvýšil limit z 2 000 bajtů na 4 000. Ale SQL Server 2008R2 vám umožňuje použít 8 000. Bavíme se o znakových datech a limit 2 000 nebo 4 000 bajtů mi připadal jaksi svévolný. Nyní v Oracle 12c můžete použít VARCHAR2(32767) pro maximální velikost 32 kB. Než však budete moci tuto novou funkci používat, musíte udělat trochu práce. Po vybalení se zobrazí chyba.

SQL> vytvořit tabulku test_tab (val varchar2(32000));vytvořit tabulku test_tab (val varchar2(32000))                                    *ERROR na řádku 1:ORA-00910:zadaná délka pro data je příliš dlouhá 

Oracle 12c obsahuje nový parametr MAX_STRING_SIZE, který řídí, jak velký může být váš datový typ VARCHAR2. Tento parametr lze nastavit na STANDARD nebo EXTENDED. Výchozí hodnota je STANDARD, která omezuje VARCHAR2 na 4000 bajtů. Změna tohoto parametru na standardní na EXTENDED je jednosměrná cesta. Nelze se vrátit zpět. Chcete-li provést změnu, musíte spustit UPGRADE instance, upravit parametr a spustit skript.

SQL> STUTDOwn OMDIMATEDATABASE CLOPS.Database demontováno.oracle Instance Shut Down.SQL> STARTUP Upgradeoracle Instance System Global Area 1043886080 BYTES Fixed Velikost 2296280 BYTESVarible. systémová sada max_string_size=EXTENDED range=both;System altered.SQL> @?/rdbms/admin/utl32k.sql

Spuštění může chvíli trvat. Po dokončení vraťte instanci zpět, aby se otevřela jako obvykle.

Nyní mohu vytvořit tabulku s tímto větším datovým typem.

SQL> vytvořit tabulku test_tab (val varchar2(32000));Tabulka vytvořena.

  1. Získávání ORA-03115:Nepodporovaný datový typ sítě nebo chyba reprezentace při načítání pole varchar z anonymního pl/sql

  2. Zploštění protínajících se časových úseků

  3. Zkopírujte tabulku (včetně indexů) v postgresu

  4. Pomalý jednoduchý aktualizační dotaz na databázi PostgreSQL s 3 miliony řádků