执行CREATE TABLESPACE语句报错ORA-2180:无效选项,求排查解决
解决ORA-2180: 无效的CREATE TABLESPACE选项问题
嘿,这个问题一眼就能揪出根源——你把两个完全独立的SQL命令硬揉到一起执行了,Oracle自然会把后面的非法内容识别成无效选项。咱一步步拆解解决:
错误核心原因
你在CREATE TABLESPACE语句的末尾直接追加了ALTER DATABASE DATAFILE ... RESIZE的语句,这俩是完全不同的DDL操作:
CREATE TABLESPACE是用来创建新表空间的专属命令ALTER DATABASE是用来修改数据库对象(比如数据文件)的独立命令
Oracle在解析CREATE TABLESPACE时,会把后面的ALTER部分当成不合法的语法选项,直接抛出ORA-2180错误。
另外提个小细节:你给每个数据文件设置了SIZE 32G同时MAXSIZE 32G,这时候AUTOEXTEND ON其实没任何作用——已经到最大容量了,没法再自动扩展,你可以根据实际需求调整(比如把MAXSIZE设大一点,或者直接去掉AUTOEXTEND)。
修正后的执行步骤
第一步:单独执行CREATE TABLESPACE语句
把后面的ALTER部分去掉,执行完整的表空间创建命令:
CREATE TABLESPACE "COMMDATA" DATAFILE 'D:\ORACLE\ORADATA\TELEFONICA\COMMDATA01.ORA' SIZE 32G AUTOEXTEND ON NEXT 1073741824 MAXSIZE 32G, 'D:\ORACLE\ORADATA\TELEFONICA\COMMDATA02.ORA' SIZE 32G AUTOEXTEND ON NEXT 1073741824 MAXSIZE 32G LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;
第二步:(可选)单独执行ALTER DATABASE语句
如果确实需要调整数据文件大小(不过你这里初始已经设为32G,和MAXSIZE一致,这个操作其实是多余的),单独执行:
ALTER DATABASE DATAFILE 'D:\ORACLE\ORADATA\TELEFONICA\COMMDATA01.ORA' RESIZE 32G;
执行完这两步,表空间就能正常创建了。
内容的提问来源于stack exchange,提问作者en Lopes
相关产品推荐
相关产品推荐

