oracle表按日期分割槽建立 新增 修改 刪除

2022-08-22 23:18:15 字數 4271 閱讀 6775

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...