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

问题描述 投票:4回答:1

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

oracle oracle12c
1个回答
0
投票

如果问题得到解决,请执行以下步骤并告诉我们。我要求再次设置参数只是为了确保一切正常。

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

sqlplus / as sysdba
show parameter spfile;

2)关闭数据库。

sqlplus / as sysdba
shutdown immediate

3)以UPGRADE模式重新启动数据库。

startup upgrade

4)将MAX_STRING_SIZE的设置更改为EXTENDED。

alter system set MAX_STRING_SIZE ='EXTENDED' scope=spfile;

5)

sqlplus / as sysdba
@%ORACLE_HOME%\RDBMS\ADMIN\utl32k.sql
 @%ORACLE_HOME%\RDBMS\ADMIN\utlrp.sql

注意:utl32k.sql脚本会增加需要此视图的视图的VARCHAR2,NVARCHAR2和RAW列的最大大小。由于写入这些视图的SQL的方式,该脚本不会增加某些视图中VARCHAR2,NVARCHAR2和RAW列的最大大小。

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

6)在NORMAL模式下重启数据库。

sqlplus / as sysdba
shutdown immediate
startup;
show parameter MAX_STRING_SIZE; 

7)创建具有超过4000大小的列数据类型varchar2的新表。

© www.soinside.com 2019 - 2024. All rights reserved.