oracle11g分割槽表
當表中的資料量不斷增大,查詢資料的速度就會變慢,應用程式的效能就會下降,這時就應該考慮對錶進行分割槽。表進行分割槽後,邏輯上表仍然是一張完整的表,只是將表中的資料在物理上存放到多個表空間(物理檔案上),這樣查詢資料時,不至於每次都掃瞄整張表。
作用:
oracle的表分割槽功能通過改善可管理性、效能和可用性,從而為各式應用程式帶來了極大的好處。通常,分割槽可以使某些查詢以及維護操作的效能大大提高。此外,分割槽還可以極大簡化常見的管理任務,分割槽是構建千兆位元組資料系統或超高可用性系統的關鍵工具。
分割槽功能能夠將表、索引或索引組織表進一步細分為段,這些資料庫物件的段叫做分割槽。每個分割槽有自己的名稱,還可以選擇自己的儲存特性。從資料庫管理員的角度來看,乙個分割槽後的物件具有多個段,這些段既可進行集體管理,也可單獨管理,這就使資料庫管理員在管理分割槽後的物件時有相當大的靈活性。但是,從應用程式的角度來看,分割槽後的表與非分割槽表完全相同,使用 sql dml 命令訪問分割槽後的表時,無需任何修改。
什麼時候用:
1、表的大小超過2gb。
2、表中包含歷史資料,新的資料被增加都新的分割槽中。
優點:
1、改善查詢效能:對分割槽物件的查詢可以僅搜尋自己關心的分割槽,提高檢索速度。
2、增強可用性:如果表的某個分割槽出現故障,表在其他分割槽的資料仍然可用;
3、維護方便:如果表的某個分割槽出現故障,需要修復資料,只修復該分割槽即可;
4、均衡i/o:可以把不同的分割槽對映到磁碟以平衡i/o,改善整個系統效能。
1.建立分割槽表--按月份自動建立分割槽的分割槽表
create table table_partition
(terminalno varchar(100) not null,
escflowno varchar(100) not null,
flowlocation char(1) not null,
transdate date not null,
transstamp timestamp default current_timestamp
) partition by range (transdate) interval (numtoyminterval (1,'month'))
(partition p9 values less than (to_date('2017-10-01', 'yyyy-mm-dd'))
)tablespace temp_tablespace;
2:分割槽表增、刪、改、查
--range間隔分割槽的情況 ora-14760: 不允許對間隔分割槽物件執行 add partition
--改為非間隔分割槽 並再改成按天間隔
alter table table_partition set interval ();
--add partition 不能小於當前分割槽的最小分割槽時間
alter table table_partition add partition montu_1 values less than(to_date('20180907','yyyymmdd'));
--按天間隔分割槽
alter table table_partition set interval (numtoyminterval (1,'year'));
--按月間隔分割槽
alter table table_partition set interval (numtoyminterval (1,'month'));
--按天間隔分割槽
alter table table_partition set interval (numtoyminterval (1,'day'));
--按周間隔分割槽
alter table table_partition set interval (numtoyminterval (1,'day'));
--range非間隔分割槽的情況
--add partition 不能小於當前分割槽的最小分割槽時間
alter table table_partition add partition montu_2 values less than(to_date('20180907','yyyymmdd'));
--按天間隔分割槽
alter table table_partition set interval (numtoyminterval (1,'year'));
--按月間隔分割槽
alter table table_partition set interval (numtoyminterval (1,'month'));
--按天間隔分割槽
alter table table_partition set interval (numtoyminterval (1,'day'));
--按周間隔分割槽
alter table table_partition set interval (numtoyminterval (1,'day'));
--刪除表分割槽 注意改刪除會將改分割槽下面的資料全部刪除
alter table table_partition drop partition p_month_1;
--顯示資料庫所有分割槽表的資訊:
select * from dba_part_tables
--顯示當前使用者可訪問的所有分割槽表資訊:
select * from all_part_tables
--顯示當前使用者所有分割槽表的資訊:
select * from user_part_tables
--顯示表分割槽資訊 顯示資料庫所有分割槽表的詳細分割槽資訊:
select * from dba_tab_partitions
--顯示當前使用者可訪問的所有分割槽表的詳細分割槽資訊:
select * from all_tab_partitions
--顯示當前使用者所有分割槽表的詳細分割槽資訊:
select * from user_tab_partitions
--顯示子分割槽資訊 顯示資料庫所有組合分割槽表的子分割槽資訊:
select * from dba_tab_subpartitions
--顯示當前使用者可訪問的所有組合分割槽表的子分割槽資訊:
select * from all_tab_subpartitions
--顯示當前使用者所有組合分割槽表的子分割槽資訊:
select * from user_tab_subpartitions
--顯示分割槽列 顯示資料庫所有分割槽表的分割槽列資訊:
select * from dba_part_key_columns
--顯示當前使用者可訪問的所有分割槽表的分割槽列資訊:
select * from all_part_key_columns
--顯示當前使用者所有分割槽表的分割槽列資訊:
select * from user_part_key_columns
--顯示子分割槽列 顯示資料庫所有分割槽表的子分割槽列資訊:
select * from dba_subpart_key_columns
--顯示當前使用者可訪問的所有分割槽表的子分割槽列資訊:
select * from all_subpart_key_columns
--顯示當前使用者所有分割槽表的子分割槽列資訊:
select * from user_subpart_key_columns
--怎樣查詢出oracle資料庫中所有的的分割槽表
select * from user_tables a where a.partitioned='yes'
--刪除乙個表的資料是
truncate table table_name;
--刪除分割槽表乙個分割槽的資料是
alter table table_name truncate partition montu_2;
--重新命名表分割槽 將a1更改為a2
alter table sales rename partition a1 to a2;
3:按分割槽查詢資料
--查詢當前分割槽中資料
select * from esc_trans_log partition(sys_p97)
-- 跨分割槽查詢
select * from esc_trans_log partition(sys_p97)
union all
select * from esc_trans_log partition(sys_p98)
Oracle建立表空間 表分割槽
建立表分割槽 create tablespace ts demo datafile oracle2 oracle datafile xltsdemo.dbf size 500m 初始大小 autoextend on 可以自動擴充套件 next 50m 一次擴充套件50m maxsize unlimi...
Oracle 建立分割槽表
建立表空間 create tablespace mytablespace 1 datafile c oracle product 10.1.0 oradata mydata mytablespace1.dbf size 100m extent management local uniform siz...
Oracle 建立分割槽表
建立表空間 create tablespace mytablespace 1 datafile c oracle product 10.1.0 oradata mydata mytablespace1.dbf size 100m extent management local uniform siz...