Oracle 12c扩展为支持varchar2>对于不是sysdba

时间:2015-06-16 20:56:30

标签: oracle oracle12c

在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。

2 个答案:

答案 0 :(得分:0)

执行以下步骤,如果问题得到解决,请与我们联系。我要求再次设置参数以确保 一切都井然有序。

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

sqlplus / as sysdba
show parameter spfile;

2)关闭数据库。

sqlplus / as sysdba
shutdown immediate

3)以升级模式重启数据库。

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列   需要。该脚本不会增加最大大小   由于这种方式,某些视图中的VARCHAR2,NVARCHAR2和RAW列   写这些视图的SQL。

     

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

6)以NORMAL模式重启数据库。

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

7)使用列数据类型varchar2创建新表,其大小超过4000。

答案 1 :(得分:0)

您必须更改文件“ TNSNAMES.ORA”以通过PDB连接。 我也遇到同样的问题。 我已经解决了波纹管的问题。

https://dba.stackexchange.com/questions/240761/in-oracle-12c-tryiyng-to-create-table-with-columns-greater-than-4000

该行为的原因是您处于多租户环境中,即一个名为CDB(“容器数据库”)的主容器以及任意数量的PDB(“可插拔数据库”)。

CDB(“容器”)是一种“系统”数据库,其中包含实际的客户数据库(“可插拔数据库”或PDB)。 CDB并不打算接收任何客户数据。一切都进入一个或多个PDB。

在未指定任何服务的情况下进行连接时,您将自动进入CDB。 CDB将忽略扩展字符串参数:限制仍然为4000字节。以下连接到CDB。就像您的情况一样,创建带有长字符串的表的操作被拒绝了: