Oracle 12c নিউ ফিচার গাইড অনুযায়ী-
“The maximum size of the VARCHAR2, NVARCHAR2, and RAW data types has been increased from 4,000 to 32,767 bytes. Increasing the allotted size for these data types allows users to store more information in character data types before switching to large objects (LOBs). This is especially useful for brief textual data types and the capabilities to build indexes on these types of columns.”
(Oracle® Database New Features Guide 12c Release 1 (12.1) E17906-16 Page 1-13)
গ্রেট নিউজ! বিশেষ করে যাদের ডাটাবেজ ক্যারেক্টার সেট ইউনিকোড এবং পুরাতন ডাটাটাইপ ব্যাবহার করেন, যেটার ডাটাটাইপ লেন্থ 4000 byte (not character). এ অবস্থাই যদি আমি একটা টেবিল তৈরি করি যার লেন্থ 32000 byte তাহলে তার ফলাফল কি দাড়াই, চলুন সেটা দেখি:
CREATE TABLE test_tab ( id NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, textfield VARCHAR2(32000 byte) ) ERROR at line 3: ORA-00910: specified length too long for its datatype
সতুরাং দেখা যাচ্ছে আপনি যদি Oracle 12c ব্যাবহার করেন তারপরও বর্ধিত ডাটাটাইপ ব্যাবহার করতে পারছেন না। এ জন্য আমরা Oracle 12c-এর নতুন প্যারামিটার MAX_STRING_SIZE ব্যাবহার করব। যার ডিফল্ট ভ্যালু “STANDARD”. প্রথমে আপনার ডাটাবেজকে upgrade mood-এ নিয়ে আসুন। একমাত্র upgrade মুডেই MAX_STRING_SIZE parameter এর ভ্যালু পরিবর্তন করা সম্ভব। নিচের ধাপ অনুযায়ী কাজ করুন:
- Shutdown the database.
SHUTDOWN IMMEDIATE;
- Open database as upgrade moode.
STARTUP UPGRADE;
- Change the setting of MAX_STRING_SIZE to EXTENDED.
ALTER SYSTEM SET max_string_size=extended;
- Run $OracleHome/rdbms/admin/utl32k.sql (must be connected as SYSDBA)
- Shutdown the database.
SHUTDOWN IMMEDIATE;
- Finally open the database normally.
STARTUP;
সতর্কতাঃ ডাটাবেজকে upgrade মুডে না নিয়ে এর ভ্যালু পরিবর্তনের চেষ্টা করবেন না। এতে আপনার ডাটাবেজ ডাউন হয়ে যেতে পারে। একবার MAX_STRING_SIZE parameter এর ভ্যালু পরিবর্তন করলে আর আগের অবস্থাই ফিরা যাবে না।