我曾遇到过数据文件名字中有空格的情况, 结果呢我用SQL来生成的拷贝所有文件的角本怎么都不对, 那事当时整了我15分钟, 用SQL语句或用图形工具时都要注意这一点. 下面是我建的一个表空间, 看起来是有同样的文件名的, 看了长度后才知道的.
SQL> create tablespace test datafile
2 '/oracle/ora9i/data01/alex/testdata01.dbf' size 10m
3 extent management local autoallocate;
Tablespace created.
SQL> alter tablespace test add datafile
2 '/oracle/ora9i/data01/alex/testdata01.dbf ' size 10m;
Tablespace altered.
SQL> select max(ts#) from v$datafile;
MAX(TS#)
----------
12
SQL> col name format a40
SQL> select name,length(name) from v$datafile where ts#=12;
NAME LENGTH(NAME)
---------------------------------------- ------------
/oracle/ora9i/data01/alex/testdata01.dbf 40
/oracle/ora9i/data01/alex/testdata01.dbf 41
第一次在文件名上被空格玩后(当数据文件时在文件名的后面多了一个空格, 这时在OS上用ls等命令看时是看不出来的, 那时足足花了我十分钟时间才想起来和搞定这个问题), 没想到昨日空格重现在索引的名字中, 当时是想将Global索引变成Local时发现的, 又花了我十多分钟.
SQL> SELECT INDEX_NAME FROM USER_INDEXES;
INDEX_NAME
------------------------------
T_INDEX_COL1
SQL> DROP INDEX T_INDEX_COL1;
DROP INDEX T_INDEX_COL1
*
ERROR at line 1:
ORA-01418: specified index does not exist
SQL> CREATE INDEX T_INDEX_COL1 ON T_INDEX(COL1);
CREATE INDEX T_INDEX_COL1 ON T_INDEX(COL1)
*
ERROR at line 1:
ORA-01408: such column list already indexed
SQL> SELECT DUMP(INDEX_NAME) FROM USER_INDEXES;
DUMP(INDEX_NAME)
----------------------------------------------------------
Typ=1 Len=13: 84,95,73,78,68,69,88,95,67,79,76,49,32
SQL> DROP INDEX "T_INDEX_COL1 ";
Index dropped.
SQL> CREATE INDEX T_INDEX_COL1 ON T_INDEX(COL1);
Index created.
不知道有没有其他人遇到过同样的问题?