2013-07-10 59 views
1

根据Oracle's web site上的Oracle 12文档(1.1.6.4),您应该能够创建超过4000个字符的varchar2列。有没有人manged这样做,因为我得到的是: -Oracle 12.1数据类型

Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options 

SQL> create table r1 (c1 integer, c2 varchar2(32000)); 
create table r1 (c1 integer, c2 varchar2(32000)) 
              * 
ERROR at line 1: 
ORA-00910: specified length too long for its datatype 
+3

您需要更改服务器参数'max_string_size':http://docs.oracle.com/cd/E16655_01/server.121/e17209/sql_elements001.htm#SQLRF55623和http://docs.oracle.com/ cd/E16655_01/server.121/e17615/refrn10321.htm#REFRN10321 –

回答

3

documentation also states

与Oracle数据库12c的开始,您可以为VARCHAR2,NVARCHAR2指定的 32767字节的最大尺寸和RAW数据类型。您可以 控制你的数据库是否支持 设置初始化参数MAX_STRING_SIZE如下这个新的最大尺寸:

  • 如果MAX_STRING_SIZE =标准,那么在Oracle数据库12c中释放的大小限制适用:4000个字节NVARCHAR2数据类型为VARCHAR2和 ,RAW数据类型为2000字节。这是默认的 。

  • 如果MAX_STRING_SIZE = EXTENDED,那么VARCHAR2,NVARCHAR2和RAW数据类型的大小限制为32767字节。

所以你需要设置你的MAX_STRING_SIZE initialisation parameter,使这项工作。

(我还没玩过12c的机会,所以我现在只是继续讨论文档中的内容)。

+0

谢谢你。我一直在忘记Oracle在几个地方写下同样的东西,但并不总是使用相同的信息;-) –

+0

@RichardSpencer--他们不想让生活变得轻松。这与新功能指南中的1.1.6.4部分有关,因此您只需点击一下即可。 –

+0

- 我希望我永远不会问这个问题。我完全打破了我的数据库,无法启动它:-( –