把一個(gè)測試系統(tǒng)的數(shù)據(jù)從Oracle 10g遷移到11g中后,聽開發(fā)人員說他們有個(gè)創(chuàng)建索引的SQL語句執(zhí)行失敗,但是在10g里面是能夠正常執(zhí)行
把一個(gè)測試系統(tǒng)的數(shù)據(jù)從Oracle 10g遷移到11g中后,聽開發(fā)人員說他們有個(gè)創(chuàng)建索引的SQL語句執(zhí)行失敗,但是在10g里面是能夠正常執(zhí)行。這個(gè)索引是一個(gè)具有重復(fù)列的函數(shù)索引,可能是手誤并且這個(gè)索引沒怎么用,所以就一直沒注意這個(gè)索引。自己感覺挺有意思的,于是就自己試驗(yàn)了一下:
1、先來看11g的情況:
[oracle@instsvr1 ~]$ sql
SQL*Plus: Release 11.2.0.2.0 Production on Fri Mar 16 11:29:33 2012
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
srcbdb@SYS> conn vip
Enter password:
Connected.
非函數(shù)索引如果具有重復(fù)的列是不允許創(chuàng)建的:
srcbdb@VIP> create index lzb on T_SYS_PARAM (param_id,PARAM_ID);
create index lzb on T_SYS_PARAM (param_id,PARAM_ID)
*
ERROR at line 1:
ORA-00957: duplicate column name
在11g里面即使是函數(shù)索引,但是具有重復(fù)的列也是不允許創(chuàng)建的:
srcbdb@VIP> create index lzb on t_sys_param(nvl(PARAM_NAME,'*'),nvl(PARAM_NAME,'*'));
create index lzb on t_sys_param(nvl(PARAM_NAME,'*'),nvl(PARAM_NAME,'*'))
*
ERROR at line 1:
ORA-54015: Duplicate column expression was specified
2、再來看10g的情況
[oracle@dctest1 ~]$ sql
SQL*Plus: Release 10.2.0.4.0 - Production on Mon Mar 19 19:32:20 2012
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
dgut@SYS> conn vip
Enter password:
Connected.
在10g里面非函數(shù)索引如果具有重復(fù)的列也是不允許創(chuàng)建的:
dgut@VIP> create index lzb on T_SYS_PARAM (param_id,PARAM_ID);
create index lzb on T_SYS_PARAM (param_id,PARAM_ID)
*
ERROR at line 1:
ORA-00957: duplicate column name
最后來看神奇的一幕,,在10g里面如果是函數(shù)索引,即使是具有重復(fù)的列,索引依然能創(chuàng)建成功:
dgut@VIP> create index lzb on t_sys_param(nvl(PARAM_NAME,'*'),nvl(PARAM_NAME,'*'));
Index created.
總結(jié):雖然創(chuàng)建具有重復(fù)列的函數(shù)索引沒什么意義,甚至更差,但是這個(gè)11g和10g的使用差別挺有意思的就記錄了下來,只能所11g更嚴(yán)謹(jǐn)了,呵呵!
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com