看板 Database 關於我們 聯絡資訊
建議如果有權限足夠的話,查dba_ 開頭的data dictionary比較好, all_ 開頭的只能看到目前登入user所能看到的。 而table與index 可查詢的view是分開的,在pdm_table tablespace查table 可用dba_tables owner = [table owner],查詢index 使用dba_indexes 查indexs, 而index 與table 這兩種是不同種object type,因此你在all_tables 查不到index, 在all_indexes查不到table。 另外 alter index PDM_PIVSECTXN_FK2 rebuild; 有錯誤是因為未指定schema name,大部分我們再使用sys 管理其他owner的object的時候 都會在開頭加上schema name,除非已有建立public synonyms 或private synonyms 才不須指定 schema name。 建立新的object,如未加上schema name就會建在登入user的default tablespace底下 object owner也會屬於登入的owner。 另外如果server是多cpu可依照cpu數量,使用rebuild parallel 指令去rebuild index rebuild 並不一定會比重新create 來的慢。 以上是小弟的建議,如與有小弟持不同意見者,請多多包涵。 ※ 引述《fooker ()》之銘言: : 感謝各位 : 小弟資料庫有兩個tablespace: : 一個"PDM_TABLE"存放table : 一個"PDM_INDEX"存放index : 查詢 tablespace 所有table : select table_name from all_tables where tablespace_name='PDM_INDEX'; 結果:no : rows selected : select table_name from all_tables where tablespace_name='PDM_TABLE'; 結果:有一 : 大串table : 查詢 tablespace 所有index : select index_name from all_indexes where tablespace_name='PDM_INDEX'; 結果:有 : 一大串INDEX : select index_name from all_indexes where tablespace_name='PDM_TABLE'; 結果:no : rows selected : tablespace PDM_INDEX裏有一大串INDEX,裡面明明有列出小弟欲重建的 : "PDM_PIVSECTXN_FK2" : 重建 : alter index PDM_PIVSECTXN_FK2 rebuild; : 卻顯示: : ERROR at line 1: : ORA-01418: specified index does not exist : 而想新建立index : create index PDM_PIVSECTXN_FK2 on PDM_PIVSECTXN (pivid); : 顯示 : ERROR at line 1: : ORA-00942: table or view does not exist : 但table "PDM_PIVSECTXN"明明存在tablespace "PDM_TABLE" : 不曉得哪裏有問題,似乎是原本的table index都不讓人動? : 可以新create 同名table PDM_PIVSECTXN 會存在在'PDM_INDEX'裏 : 然後也可以新create index PDM_PIVSECTXN_FK2在 新PDM_PIVSECTXN 裏 : 但解決不了軟體錯誤問題...orz : 資料庫好像超難的.... : ※ 引述《fantasyj (如夢似幻)》之銘言: : : 語法: : : create unique index <index name> on <table name> (columns name) : : tablespace <tablespace name>; : : create index <index name> on <table name> (columns name) : : tablespace <tablespace name>; : : 例如: : : create unique index AOM.AOM_EO_DELAYS_U1 on AOM.AOM_EO_DELAYS (EO_DELAY_ID) : : tablespace AOMX : : pctfree 10 : : initrans 2 : : maxtrans 255 : : storage : : ( : : initial 40K : : next 40K : : minextents 1 : : maxextents 505 : : pctincrease 0 : : ); : : ps:上面舉例的額外的設定參數,沒加也沒關係,會自動依該db的預設值... : : 若是複合型index,只要在columns name內用一起輸入即可 : : create index AOM.AOM_EO_DELAYS_U1 on AOM.AOM_EO_DELAYS (EO_DELAY_ID, MST_ID) : : tablespace AOMX; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.172.177
fantasyj:無論如何,不管是table or index,實務上都是create比較快. 08/31 09:49
fantasyj:這是跟db特性與oracle自己本身的cbo有所影響 08/31 09:54
fantasyj:sorry,以上自己說法錯誤,確實在這種情況下rebuild快orz 08/31 13:36
iamnotfat:rebuild nologging 也可增加速度~ 09/03 18:57