首页 > 解决方案 > ORACLE 18c XE (18.0.0.0.0) - MAX_STRING_SIZE = EXTENDED (COLLATE BINARY_CI) 问题

问题描述

我使用以下命令将MAX_STRING_SIZESTANDARD设置为EXTENDED :

ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED SCOPE=spfile;

此查询以“完成”结束。我用这个命令检查了它:

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-43929: 如果设置了参数MAX_STRING_SIZE=STANDARD,则无法指定排序规则

Oracle 版本为:ORACLE 18c XE (18.0.0.0.0)

标签: plsqloracle-xecollate

解决方案


它不像 ALTER ... 那样简单;请参阅文档

仅当数据库处于 UPGRADE 模式时才使用 ALTER SYSTEM,然后运行 ​​utl32k.sql 脚本,如本节所述。
...
COMPATIBLE 初始化参数必须设置为 12.0.0.0 或更高才能设置 MAX_STRING_SIZE = EXTENDED。


推荐阅读