Tham số này đã được giới thiệu trong Oracle 12c. MAX_STRING_SIZE
kiểm soát kích thước tối đa của kích thước chuỗi trong cơ sở dữ liệu Oracle.
Chúng ta có thể đặt nó thành STANDARD
hoặcEXTENDED,
mặc định làSTANDARD
MAX_STRING_SIZE = STANDARD có nghĩa là kích thước tối đa của chuỗi4000 bytes
dành choVARCHAR2
vàNVARCHAR2
MAX_STRING_SIZE = EXTENDED có nghĩa là kích thước tối đa có thể lên tới32767 byte
, do vậy với các kiểu varchar2, nvarchar2 > 4000 byte chúng ta sẽ không cần phải dùng kiểu CLOB rất tốn kém dung lượng (có thể giảm dung lượng được
1000 lần
khi chuyển từ CLOB sang max_string_size=extended)
Chúng ta có thể thay đổi giá trị của MAX_STRING_SIZE
từ STANDARD
thành EXTENDED
. Nhưng không phải từ EXTENDED
đến STANDARD
.
Với MAX_STRING_SIZE
thiết lập là STANDARD
, nếu chúng ta cố gắng thiết lập độ dài của cột lớn hơn 4000, thì nó sẽ báo lỗi ORA-00910.
SQL> SHOW PARAMETER MAX_STRING_ NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ max_string_size string STANDARD SQL> SQL> create table UNIVERSITY ( COLLEGE_NAME VARCHAR2(8000)); create table UNIVERSITY ( COLLEGE_NAME VARCHAR2(8000)) * ERROR at line 1: ORA-00910: specified length too long for its datatype
CÁC BƯỚC để chuyển đổi MAX_STRING_SIZE thành EXTENDED:
1. Khởi động cơ sở dữ liệu ở chế độ nâng cấp:
SQL> SHUTDOWN IMMEDIATE;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>STARTUP UPGRADE
ORACLE instance started.
Total System Global Area 1.4663E+10 bytes
Fixed Size 15697000 bytes
Variable Size 1.1878E+10 bytes
Database Buffers 2717908992 bytes
Redo Buffers 51404800 bytes
Database mounted.
Database opened.
2. Thay đổi giá trị thành EXTENDED
SQL> alter system set MAX_STRING_SIZE='EXTENDED' SCOPE=BOTH; System altered. SQL> show parameter MAX_STRING_SIZE NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ max_string_size string EXTENDED
3.Chạy tập lệnh utl32k.sql:
@?/rdbms/admin/utl32k.sql
SQL> @?/rdbms/admin/utl32k.sql
Session altered.
DOC>#######################################################################
DOC>#######################################################################
DOC> Câu lệnh sau sẽ gây ra lỗi "ORA-01722: invalid number"
DOC> nếu cơ sở dữ liệu chưa được mở để UPGRADE.
DOC>
DOC> Thực hiện "SHUTDOWN ABORT" và
DOC> startup UPGRADE.
DOC>#######################################################################
DOC>#######################################################################
DOC>#
no rows selected
DOC>#######################################################################
DOC>#######################################################################
DOC> Câu lệnh sau sẽ gây ra lỗi "ORA-01722: invalid number"
DOC> Lỗi nếu cơ sở dữ liệu không tương thích >= 12.0.0
DOC>DOC> Set compatible >= 12.0.0 và thử lại
DOC>####################################################################### DOC>####################################################################### DOC># PL/SQL procedure successfully completed. Session altered. 1524 rows updated. Commit complete. System altered. PL/SQL procedure successfully completed. Commit complete. System altered. Session altered. Session altered. Table created. Table created. Table created. Table truncated. 0 rows created. PL/SQL procedure successfully completed. no rows selected DOC>####################################################################### DOC>####################################################################### DOC> Câu lệnh sau sẽ gây ra lỗi "ORA-01722: invalid number" DOC> lỗi nếu chúng tôi gặp lỗi trong khi sửa đổi một cột thành DOC> Tài khoản cho thay đổi độ dài loại dữ liệu do kích hoạt hoặc bỏ kiểu 32k. DOC> Liên hệ với bộ phận hỗ trợ của Oracle để được hỗ trợ. DOC>####################################################################### DOC>####################################################################### DOC># PL/SQL procedure successfully completed. PL/SQL procedure successfully completed. Commit complete.
4.Khởi động lại cơ sở dữ liệu:
shutdown immediate; startup SQL> show parameter max_string NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ max_string_size string EXTENDED
Hãy tạo một bảng có độ dài hơn 4000.
SQL> create table UNIVERSITY ( COLLEGE_NAME VARCHAR2(8000));
Table created.
CÁC VẤN ĐỀ CHUNG:
1. Nếu bạn cố khởi động lại cơ sở dữ liệu mà không chạy tập lệnhutl32k.sql
, sẽ gặp lỗi bên dưới.
Database dismounted. ORACLE instance shut down. SQL> ORACLE instance started. Total System Global Area 1.4663E+10 bytes Fixed Size 15697000 bytes Variable Size 1.1878E+10 bytes Database Buffers 2717908992 bytes Redo Buffers 51404800 bytes Database mounted. ORA-00603: ORACLE server session terminated by fatal error ORA-01092: ORACLE instance terminated. Disconnection forced ORA-14695: MAX_STRING_SIZE migration is incomplete Process ID: 18669 Session ID: 401 Serial number: 16419
Vì vậy, hãy khởi động lại cơ sở dữ liệu trong chế độ UPGRADE
và thực thi tập lệnhutlk32.sql
.
2. Nếu bạn cố đặt giá trị thành EXTENDED , khi cơ sở dữ liệu không ở chế độ UPGRADE .
SQL> alter system set MAX_STRING_SIZE=EXTENDED; alter system set MAX_STRING_SIZE=EXTENDED * ERROR at line 1: ORA-02097: parameter cannot be modified because specified value is invalid ORA-14694: database must in UPGRADE mode to begin MAX_STRING_SIZE migration
Vì vậy, trước khi chạy câu lệnh thay đổi này, hãy khởi động cơ sở dữ liệu ở chế độUPGRADE
.
KẾT LUẬN: Khi max_string_size được thay đổi thành
EXTENDED
, Chúng ta không thể quay về giá trịSTANDARD
ban đầu. Vì vậy, trước khi thay đổi giá trị trong cơ sở dữ liệu product hoặc quan trọng, Vui lòng kiểm tra kỹ lưỡng, vì bạn có thể gặp phải các lỗi không mong muốn.
LƯU Ý:
Nếu bạn có các mục trong thùng rác khi chạy utl32k.sql, bạn sẽ nhận được:
DECLARE
*
ERROR at line 1:
ORA-38301: can not perform DDL/DML over objects in Recycle Bin
ORA-06512: at line 121
Disconnected from Oracle Database 12c Standard Edition Release 12.1.0.2.0 – 64bit Production
With the Automatic Storage Management option
Cách khắc phục đơn giản, xóa thùng rác và chạy lại utl32k.sql:
$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Tue May 12 13:24:55 2020
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Standard Edition Release 12.1.0.2.0 – 64bit Production
With the Automatic Storage Management option
SQL> purge dba_recyclebin;
@?/rdbms/admin/utl32k
Tham khảo thêm:
Hy vọng hữu ích cho bạn.
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội
=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty