Oracle 12c扩展以支持varchar2>;4000字节不';不适用于非sysdba的用户

Oracle 12c扩展以支持varchar2>;4000字节不';不适用于非sysdba的用户,oracle,oracle12c,Oracle,Oracle12c,在与oracle 12c兼容的12.0.0上,更改为使用sysdba权限扩展。 我现在可以创建一个以varchar2(16000)作为列的表,并插入一个大于4000字节的字符串;但仅当作为sysdba连接时。 当作为普通用户而不是sysdba连接时,我无法使用varchar2>4000字节,将抛出错误ORA-60019。有人能解释为什么吗? 以非sysdba用户身份登录时,参数max_string_size=extended and compatible=12.0.0。请执行以下步骤,并告知问题

在与oracle 12c兼容的12.0.0上,更改为使用sysdba权限扩展。 我现在可以创建一个以varchar2(16000)作为列的表,并插入一个大于4000字节的字符串;但仅当作为sysdba连接时。 当作为普通用户而不是sysdba连接时,我无法使用varchar2>4000字节,将抛出错误ORA-60019。有人能解释为什么吗?
以非sysdba用户身份登录时,参数max_string_size=extended and compatible=12.0.0。

请执行以下步骤,并告知问题是否已解决。我要求再次设置参数,以确保 一切都井然有序

1) 备份您的spfile(获取spfile的位置)

2) 关闭数据库

sqlplus / as sysdba
shutdown immediate
3) 以升级模式重新启动数据库

startup upgrade
4) 将“最大字符串大小”的设置更改为“扩展”

alter system set MAX_STRING_SIZE ='EXTENDED' scope=spfile;
(五)

注意:utl32k.sql脚本增加了 VARCHAR2、NVARCHAR2和RAW列的视图,其中 必修的。脚本不会增加脚本的最大大小 由于这种方式,某些视图中的VARCHAR2、NVARCHAR2和RAW列 编写了这些视图的SQL

rdbms/admin/utlrp.sql脚本有助于重新编译无效对象。你 必须作为SYSDBA连接才能运行脚本

6) 以正常模式重新启动数据库

sqlplus / as sysdba
shutdown immediate
startup;
show parameter MAX_STRING_SIZE; 
7) 创建列数据类型varchar2大于4000的新表。

您必须更改文件“TNSNAMES.ORA”以通过PDB连接。 我也有同样的问题。 我已经解决了与链接贝娄的信息

这种行为的原因是您处于多租户环境中,即称为CDB(“容器数据库”)的主容器和任意数量的PDB(“可插拔数据库”)

CDB(“容器”)是一种“系统”数据库,用于包含实际的客户数据库(“可插拔数据库”或PDB)。川东北不打算接收任何客户数据。所有内容都进入一个或多个PDB


当您在未指定任何服务的情况下进行连接时,系统会自动将您置于CDB中。CDB的extended strings参数被忽略:限制仍为4000字节。以下连接到CDB。创建带有长字符串的表将被拒绝,就像您的情况一样:

您可能希望尝试在上过账。您是否遵循了中的所有步骤?您有CDB还是非CDB?您好,当您以sysdba身份登录时,您是否在与以普通用户身份登录时相同的表空间中创建表?所有表空间中的数据块大小都相同吗?也许您需要创建具有更大数据块大小的用户表空间。。。。让我知道!例如:创建表空间数据数据文件“/data_256K01_01.dbf”大小2000M数据块管理本地统一大小256K;”并尝试在其中插入相同的数据。
sqlplus / as sysdba
@%ORACLE_HOME%\RDBMS\ADMIN\utl32k.sql
 @%ORACLE_HOME%\RDBMS\ADMIN\utlrp.sql
sqlplus / as sysdba
shutdown immediate
startup;
show parameter MAX_STRING_SIZE;