在 oracle 12c 兼容的 12.0.0 上,更改为使用 sysdba 权限扩展。我现在可以用 varchar2(16000) 作为列创建一个表并插入一个 > 4000 字节的字符串;但仅当作为 sysdba 连接时。当作为普通用户而不是 sysdba 连接时,我无法使用大于 4000 字节的 varchar2,抛出错误 ORA-60019。谁能解释为什么?当以非 sysdba 用户身份登录时,参数 max_string_size= extended 和 compatible=12.0.0。
请执行以下步骤,并让我知道问题是否已解决。我要求再次设置参数以确保一切正常。
1)备份你的spfile(获取spfile的位置)
sqlplus / as sysdba
show parameter spfile;
Run Code Online (Sandbox Code Playgroud)
2) 关闭数据库。
sqlplus / as sysdba
shutdown immediate
Run Code Online (Sandbox Code Playgroud)
3)以UPGRADE模式重新启动数据库。
startup upgrade
Run Code Online (Sandbox Code Playgroud)
4) 将 MAX_STRING_SIZE 设置更改为 EXTENDED。
alter system set MAX_STRING_SIZE ='EXTENDED' scope=spfile;
Run Code Online (Sandbox Code Playgroud)
5)
sqlplus / as sysdba
@%ORACLE_HOME%\RDBMS\ADMIN\utl32k.sql
@%ORACLE_HOME%\RDBMS\ADMIN\utlrp.sql
Run Code Online (Sandbox Code Playgroud)
注意:utl32k.sql 脚本会增加需要的视图的 VARCHAR2、NVARCHAR2 和 RAW 列的最大大小。由于这些视图的 SQL 编写方式,该脚本不会增加某些视图中 VARCHAR2、NVARCHAR2 和 RAW 列的最大大小。
rdbms/admin/utlrp.sql 脚本有助于重新编译无效对象。您必须以 SYSDBA 身份连接才能运行该脚本。
6) 以NORMAL模式重新启动数据库。
sqlplus / as sysdba
shutdown immediate
startup;
show parameter MAX_STRING_SIZE;
Run Code Online (Sandbox Code Playgroud)
7) 创建列数据类型为 varchar2、大小超过 4000 的新表。
| 归档时间: |
|
| 查看次数: |
1825 次 |
| 最近记录: |