Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plsql ORACLE 18c XE(18.0.0.0.0)-最大字符串大小=扩展(比较二进制CI)问题_Plsql_Oracle Xe_Collate - Fatal编程技术网

Plsql ORACLE 18c XE(18.0.0.0.0)-最大字符串大小=扩展(比较二进制CI)问题

Plsql ORACLE 18c XE(18.0.0.0.0)-最大字符串大小=扩展(比较二进制CI)问题,plsql,oracle-xe,collate,Plsql,Oracle Xe,Collate,我使用以下命令将最大字符串大小从标准设置为扩展: ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED SCOPE=spfile; SELECT * FROM v$parameter WHERE name = 'max_string_size'; 此查询以“完成”结束。 我用这个命令检查了它: ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED SCOPE=spfile; SELECT * FROM v$parameter WH

我使用以下命令将最大字符串大小从标准设置为扩展:

ALTER SYSTEM SET MAX_STRING_SIZE=EXTENDED SCOPE=spfile;
SELECT * FROM v$parameter WHERE name = 'max_string_size';
此查询以“完成”结束。 我用这个命令检查了它:

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
我想在创建表中使用COLLATE BINARY_CI,出现以下错误消息:

CREATE TABLE sample_db 
  (
       sample_column VARCHAR2(50) COLLATE BINARY_CI
  )
ORA-43929:如果参数 设置了最大字符串大小=标准


Oracle版本是:Oracle 18c XE 18.0.0.0.0

它不像ALTER那么简单。。。;见:

仅当数据库处于升级模式时使用ALTER SYSTEM,然后运行 如本节所述,后面将介绍utl32k.sql脚本。 ... 兼容的初始化参数必须设置为12.0.0.0或 更高设置最大字符串大小=扩展

解决了

问题是我试图在CDB而不是PDB中修改MAX_STRING_SIZE参数的值

使用“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文档:在“增加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;

我使用容器图像。该页面提供了连接到sysdba模式的指南。

我是在升级模式下完成的,并在没有任何错误的情况下运行了utl23k.sql。无更改。您可以按照oracle文档。您可以使用oracle home变量执行脚本,如@${oracle_home}/rdbms/admin/utl32k.sql。