ORA-02216 报错
创建表空间时提示 ORA-02216错误,
此错误是由于表空间命令含有或带有特殊字符或数字开头产生了,导致数据库对此表空间名无法识别,
可以通过对表空间名添加双引号解决,即"表空间名",示例:
create tablespace "INDEX" datafile '/dev/rvdata_index_01' size 1014m
在10g及之前的版本中,或在存储库中,提示ORA-02216错误是由于表空间名称含有特殊字符或数字等问题或以数字开头或者含有空格;
在12.1.0.1以后的版本中,由于表空间含有空格,需要先把表空间改名后再做操作。
Oracle MOS Cannot Drop Tablespace With Trailing Space In The Name. (Doc ID 2177037.1) 提到:
在12.2.0.1 及更高版本中,意外创建的带有尾随空格“XXX_TRC”的错误表空间名称。
无法删除带有 ora-959 错误的表空间。
示例:
orcl SQL> select '"'||name||'"' from sys.ts$;
'"'||NAME||'"'
--------------------------------
"EXAMPLE"
"SYSAUX"
"SYSTEM"
"XXX_A"
"XXX_C"
"XXX_S"
"XXX_TRC"
"XXX_TRC " ---> this is the wrong one
"XXX_TST"
"TEMP"
"UNDOTBS1"
"UNDOTBS2"
"USERS"
13 rows selected.
orcl SQL> drop tablespace 'XXX_TRC ' including contents and datafiles;
drop tablespace 'XXX_TRC ' including contents and datafiles
*
ERROR at line 1:
ORA-02216: tablespace name expected
orcl SQL> drop tablespace "XXX_TRC " including contents and datafiles;
drop tablespace "XXX_TRC " including contents and datafiles
*
ERROR at line 1:
ORA-00959: tablespace 'XXX_TRC ' does not exist
当有表空间名称时,一个是有空间的,一个是没有空间的。它不允许删除表空间。
"XXX_TRC " >>>>>> 表空间名称,末尾有空格
"XXX_TRC" >>>>> 表空间名称末尾没有空格。
但是如果表空间名称中只有一个表空间有或没有空格,则可以删除该表空间
解决方法:
更改表空间名称并重试删除。
示例:
SQL> ALTER TABLESPACE "XXX_TRC " RENAME TO "TESTDROP";
Tablespace altered.
SQL> select ts#,name from v$tablespace;
TS# NAME
---------- ------------------------------
0 SYSTEM
1 SYSAUX
2 UNDOTBS1
4 USERS
3 TEMP
6 EXAMPLE
7 TEST
9 TESTDROP
10 XXX_TRC
9 rows selected.
SQL> drop tablespace testdrop including contents and datafiles;
Tablespace dropped.