11g 新特性之自動分割槽-numtoyminterval/numtodsinterval
The INTERVAL clause of the CREATE TABLE statement establishes interval partitioning for the table. You must specify at least one range partition using the PARTITION clause. The range partitioning key value determines the high value of the range partitions, which is called the transition point, and the database automatically creates interval partitions for data beyond that transition point. The lower boundary of every interval partition is the non-inclusive upper boundary of the previous range or interval partition.
一、按月分割槽
1、建立自動分割槽表,必須指定至少一個預設的分割槽名稱,後面的分割槽名稱Oracle會自動建立,測試如下:
JZH@jzh>create table interval_sales (
2 prod_id number(6),
3 time_id date)
4 partition by range (time_id)
5 INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))--------可以是MONTH,YEAR,DAY
6 (partition p1 values less than (to_date('2015-01-01','yyyy-mm-dd')));
Table created.
2、檢視分割槽
JZH@jzh>select table_name,partition_name from user_tab_partitions where table_name='INTERVAL_SALES';
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
INTERVAL_SALES P1
當前只有一個P1預設分割槽
3、插入資料
JZH@jzh>insert into interval_sales values(001,to_date('2015-02-01','yyyy-mm-dd'));
1 row created.
JZH@jzh>commit;
Commit complete.
1、建立測試表
JZH@jzh>create table day_partition (prod_id number(6),time_id date)
2 partition by range(time_id)
3 interval (numtodsinterval(1,'DAY'))
4 (partition p1 values less than(to_date('2015-08-07','yyyy-mm-dd')));
Table created.
2、插入資料
JZH@jzh>insert into day_partition values(001,to_date('2015-08-08','yyyy-mm-dd'));
1 row created.
JZH@jzh>commit;
Commit complete.
3、檢視分割槽
JZH@jzh>select table_name,partition_name from user_tab_partitions where table_name='DAY_PARTITION';
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
DAY_PARTITION P1
DAY_PARTITION SYS_P63
可以看到多了一個SYS_P63分割槽,接下來檢視一下2015-08-08是否在SYS_P63分割槽上
4、檢視分割槽資料
JZH@jzh>select * from day_partition partition(sys_p63);
PROD_ID TIME_ID
---------- ---------
1 08-AUG-15
三、按年分割槽
1、建立測試表
JZH@jzh>create table year_partition (prod_id number(6),time_id date)
2 partition by range(time_id)
3 interval (numtoyminterval(1,'YEAR'))
4 (partition p1 values less than(to_date('2014-01-01','yyyy-mm-dd')));
Table created.
2、插入資料
JZH@jzh>insert into year_partition values(001,to_date('2015-01-01','yyyy-mm-dd'));
1 row created.
JZH@jzh>commit;
Commit complete.
3、檢視分割槽
JZH@jzh>select table_name,partition_name from user_tab_partitions where table_name='YEAR_PARTITION';
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
YEAR_PARTITION P1
YEAR_PARTITION SYS_P64
可以看到多了一個SYS_P64分割槽,接下來檢視一下2015-01-01是否在SYS_P64分割槽上
4、檢視分割槽資料
JZH@jzh>select * from year_partition partition(sys_p64);
PROD_ID TIME_ID
---------- ---------
1 01-JAN-15
總結:需要注的是,按年,月分割槽函式是numtoyminterval,而按天分割槽函式是numtodsinterval。
一、按月分割槽
1、建立自動分割槽表,必須指定至少一個預設的分割槽名稱,後面的分割槽名稱Oracle會自動建立,測試如下:
JZH@jzh>create table interval_sales (
2 prod_id number(6),
3 time_id date)
4 partition by range (time_id)
5 INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))--------可以是MONTH,YEAR,DAY
6 (partition p1 values less than (to_date('2015-01-01','yyyy-mm-dd')));
Table created.
2、檢視分割槽
JZH@jzh>select table_name,partition_name from user_tab_partitions where table_name='INTERVAL_SALES';
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
INTERVAL_SALES P1
當前只有一個P1預設分割槽
3、插入資料
JZH@jzh>insert into interval_sales values(001,to_date('2015-02-01','yyyy-mm-dd'));
1 row created.
JZH@jzh>commit;
Commit complete.
4、再次檢視分割槽
JZH@jzh>select table_name,partition_name from user_tab_partitions where table_name='INTERVAL_SALES';
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
INTERVAL_SALES P1
INTERVAL_SALES SYS_P61
二、按天分割槽JZH@jzh>select table_name,partition_name from user_tab_partitions where table_name='INTERVAL_SALES';
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
INTERVAL_SALES P1
INTERVAL_SALES SYS_P61
可以看到多了一個名稱為SYS_P61的分割槽,我們插入的資料是2015-02-01,應該存放在SYS_P61分割槽。
5、檢視SYSP_61分割槽資料
JZH@jzh>select * from interval_sales partition(sys_p61);
PROD_ID TIME_ID
---------- ---------
1 01-FEB-15
5、檢視SYSP_61分割槽資料
JZH@jzh>select * from interval_sales partition(sys_p61);
PROD_ID TIME_ID
---------- ---------
1 01-FEB-15
1、建立測試表
JZH@jzh>create table day_partition (prod_id number(6),time_id date)
2 partition by range(time_id)
3 interval (numtodsinterval(1,'DAY'))
4 (partition p1 values less than(to_date('2015-08-07','yyyy-mm-dd')));
Table created.
2、插入資料
JZH@jzh>insert into day_partition values(001,to_date('2015-08-08','yyyy-mm-dd'));
1 row created.
JZH@jzh>commit;
Commit complete.
3、檢視分割槽
JZH@jzh>select table_name,partition_name from user_tab_partitions where table_name='DAY_PARTITION';
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
DAY_PARTITION P1
DAY_PARTITION SYS_P63
可以看到多了一個SYS_P63分割槽,接下來檢視一下2015-08-08是否在SYS_P63分割槽上
4、檢視分割槽資料
JZH@jzh>select * from day_partition partition(sys_p63);
PROD_ID TIME_ID
---------- ---------
1 08-AUG-15
三、按年分割槽
1、建立測試表
JZH@jzh>create table year_partition (prod_id number(6),time_id date)
2 partition by range(time_id)
3 interval (numtoyminterval(1,'YEAR'))
4 (partition p1 values less than(to_date('2014-01-01','yyyy-mm-dd')));
Table created.
2、插入資料
JZH@jzh>insert into year_partition values(001,to_date('2015-01-01','yyyy-mm-dd'));
1 row created.
JZH@jzh>commit;
Commit complete.
3、檢視分割槽
JZH@jzh>select table_name,partition_name from user_tab_partitions where table_name='YEAR_PARTITION';
TABLE_NAME PARTITION_NAME
------------------------------ ------------------------------
YEAR_PARTITION P1
YEAR_PARTITION SYS_P64
可以看到多了一個SYS_P64分割槽,接下來檢視一下2015-01-01是否在SYS_P64分割槽上
4、檢視分割槽資料
JZH@jzh>select * from year_partition partition(sys_p64);
PROD_ID TIME_ID
---------- ---------
1 01-JAN-15
總結:需要注的是,按年,月分割槽函式是numtoyminterval,而按天分割槽函式是numtodsinterval。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10271187/viewspace-1765908/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分割槽表之自動增加分割槽(11G)
- Spark 3.0 新特性 之 自適應查詢與分割槽動態裁剪Spark
- ORACLE 19c 新特性之混合分割槽表Oracle
- oracle 19C新特性——混合分割槽表Oracle
- Oracle計算時間函式(對時間的加減numtodsinterval、numtoyminterval)Oracle函式
- Oracle 12C新特性-線上把非分割槽錶轉為分割槽表Oracle
- Oracle12c:建立主分割槽、子分割槽,實現自動分割槽插入效果Oracle
- LightDB 22.4 新特性之相容Oracle線上轉換普通表為分割槽表Oracle
- mysql 8.0.17 分割槽特性測試MySql
- Linux磁碟分割槽及自動掛載Linux
- Spark SQL:Parquet資料來源之自動分割槽推斷SparkSQL
- Linux 分割槽擴容(根分割槽擴容,SWAP 分割槽擴容,掛載新分割槽為目錄)Linux
- oracle 11g 新特性之動態繫結變數窺視(一)Oracle變數
- oracle 11g 新特性之動態繫結變數窺視(二)Oracle變數
- MySql資料分割槽操作之新增分割槽操作MySql
- Hive的靜態分割槽與動態分割槽Hive
- Linux硬碟分割槽及開機自動掛載Linux硬碟
- Hive動態分割槽Hive
- Linux分割槽之parted命令Linux
- linux之硬碟分割槽管理Linux硬碟
- 移動分割槽表和分割槽索引的表空間索引
- Hive中靜態分割槽和動態分割槽總結Hive
- 實現MySQL表結構自動分割槽指令碼MySql指令碼
- oracle 11g 分割槽表建立(年月日周時分秒)Oracle
- DiskGenius分割槽行動硬碟硬碟
- Linux核心之磁碟和分割槽Linux
- Liunx新增新硬碟和分割槽方法硬碟
- linux新增新磁碟和建立分割槽Linux
- Linux分割槽方案、分割槽建議Linux
- Oracle 11g DG新特性--Automatic block repairOracleBloCAI
- 好程式設計師大資料開發之掌握Hive的靜態分割槽與動態分割槽程式設計師大資料Hive
- Hive動態分割槽詳解Hive
- Oracle 12.2之後ALTER TABLE .. MODIFY轉換非分割槽表為分割槽表Oracle
- WDS+MDT網路啟動自動部署windows(十一)硬碟分割槽格式化全自動Windows硬碟
- MapReduce之自定義分割槽器Partitioner
- oracle分割槽表和分割槽表exchangeOracle
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL
- 【12.2】Oracle 12C R2新特性-外部表支援分割槽了(Partitioning External Tables)Oracle
- win10新增硬碟分割槽怎麼操作 win10硬碟如何增加新分割槽Win10硬碟