我使用以下命令将MAX_STRING_SIZE从STANDARD设置为EXTENDED:
ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED SCOPE=spfile;
该查询以"0"结束;完成";。我用这个命令检查了一下:
SELECT * FROM v$parameter WHERE name = 'max_string_size';
这是多行格式的结果:
NAME max_string_size
VALUE EXTENDED
DISPLAY_VALUE EXTENDED
DEFAULT_VALUE STANDARD
ISDEFAULT FALSE
ISSES_MODIFIABLE FALSE
ISSYS_MODIFIABLE IMMEDIATE
ISPDB_MODIFIABLE TRUE
ISINSTANCE_MODIFIABLE FALSE
ISMODIFIED FALSE
ISADJUSTED FALSE
ISDEPRECATED FALSE
ISBASIC FALSE
DESCRIPTION controls maximum size of VARCHAR2, NVARCHAR2, and RAW types in SQL
我想在CREATE TABLE中使用COLLATE BINARY_CI,我收到以下错误消息:
CREATE TABLE sample_db
(
sample_column VARCHAR2(50) COLLATE BINARY_CI
)
ORA-4399:如果设置了参数MAX_STRING_SIZE=STANDARD,则无法指定排序规则
Oracle版本为:Oracle 18c XE(18.0.0.0.0(
它并不像ALTER…那么简单。。。;参见文档:
仅当数据库处于UPGRADE模式时使用ALTER SYSTEM,并运行utl32k.sql脚本,如本节所述
COMPATIBLE初始化参数必须设置为12.0.0.0或将MAX_STRING_SIZE设置为EXTENDED。
已解决。
问题是我试图修改CDB中MAX_STRING_SIZE参数的值,而不是PDB。
使用"XEPDB1"修改命令:
PURGE DBA_RECYCLEBIN;
ALTER PLUGGABLE DATABASE XEPDB1 CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE XEPDB1 OPEN UPGRADE;
ALTER SESSION SET CONTAINER=XEPDB1;
ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED;
@?/rdbms/admin/utl32k.sql;
ALTER PLUGGABLE DATABASE XEPDB1 CLOSE;
ALTER PLUGGABLE DATABASE XEPDB1 OPEN;
您可以遵循oracle文档:https://docs.oracle.com/database/121/REFRN/GUID-D424D23B-0933-425F-BC69-9C0E6724693C.htm#REFRN10321在"增加PDB中VARCHAR2、NVARCHAR2和RAW列的最大大小"一节中。
使用sysdba用户运行的命令:
# list pdbs
show pdbs;
# alter session to a specific pdb
alter session set container = {pdb};
# restart pdb in upgrade mode
shutdown;
alter pluggable dabase {pdb} open upgrade;
# change max_string_size
alter system set max_string_size=extended;
# run oracle script
@${ORACLE_HOME}/admin/utl32k.sql;
# reopen as normal mode
shutdown;
alter pluggable database {pdb} open READ WRITE;
# recompile invalid objects
@${ORACLE_HOME}/rdbms/admin/utlrp.sql;
我曾经https://hub.docker.com/r/pvargacl/oracle-xe-18.4.0容器图像。该页面提供了连接到sysdba模式的指导原则。