熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle中如何把表和索引放在不同的表空間裡

2013-11-13 22:25:25  來源: Oracle 
Oracle中並沒有區分表空間裡放的是表還是索引所有當數據量比較小時完全可以把表和索引放在同一個表空間裡但隨著數據量的增大最好還是把表和索引分開存儲在不同的表空間裡  

  因為
)提高性能
盡量把表和索引的表空間存儲在不同在磁盤上把兩類不同IO性質的數據分開放這樣可以提高磁盤的IO總體性能

  )便於管理試想一下如果索引的數據文件損壞只要創建索引即可不會引起數據丟失的問題

  下面語句用於移動索引的表空間

復制代碼 代碼如下:
alter index INDEX_OWNERINDEX_NAME rebuild tablespace NEW_TBS;

  
也可以利用以下語句獲得某個schema下移動索引表空間的所有語句

復制代碼 代碼如下:
select alter index ||owner||||index_name|| rebuild tablespace NEW_TBS;
from dba_indexes
where table_owner=SCHEMA_NAME
order by index_name;

  
有一點需要注意的是一旦把表和索引放在不同表空間後在創建新表時如果表有主鍵或唯一約束記得要指定到索引的表空間可以參考下面的例子

復制代碼 代碼如下:
create table tmp(
MON VARCHAR()
IDNO VARCHAR()
constraint pk_name primary key ( MON IDNO )
using index tablespace index_tbs
CONSTRAINT uk_name UNIQUE (MON)
using index tablespace index_tbs
) ;
From:http://tw.wingwit.com/Article/program/Oracle/201311/19076.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.