Tôi luôn thắc mắc tại sao loại dữ liệu VARCHAR2 bị giới hạn ở quá ít ký tự. Đối với hầu hết các thuộc tính, bạn không cần nhiều hơn 2.000 byte. Tôi nhớ khi Oracle tăng giới hạn từ 2.000 byte lên 4.000. Nhưng SQL Server 2008R2 cho phép bạn sử dụng 8.000. Chúng ta đang nói về dữ liệu ký tự và giới hạn 2.000 hoặc 4.000 byte đối với tôi dường như là tùy ý. Bây giờ trong Oracle 12c, bạn có thể sử dụng VARCHAR2 (32767) cho tối đa 32KB. Nhưng trước khi bạn có thể sử dụng tính năng mới này, bạn cần phải thực hiện một chút công việc. Nếu không, bạn sẽ gặp lỗi.
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
Oracle 12c bao gồm một tham số mới, MAX_STRING_SIZE kiểm soát mức độ lớn của kiểu dữ liệu VARCHAR2 của bạn. Tham số này có thể được đặt thành CHUẨN hoặc MỞ RỘNG. Mặc định là STANDARD giới hạn VARCHAR2 đến 4000 byte. Việc thay đổi thông số này thành tiêu chuẩn thành EXTENDED là chuyến đi một chiều. Bạn không thể hoàn nguyên trở lại. Để thực hiện thay đổi, bạn cần BẮT ĐẦU NÂNG CẤP phiên bản, sửa đổi tham số và chạy một tập lệnh.
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
Quá trình này có thể mất một lúc để chạy. Sau khi hoàn tất, hãy trả lại phiên bản để mở như bình thường.
Bây giờ tôi có thể tạo một bảng với kiểu dữ liệu lớn hơn này.
SQL> create table test_tab (val varchar2(32000)); Table created.