oracle 11g 分割槽表建立(年月日周時分秒)
oracle 11g 支援自動分割槽,不過得在建立表時就設定好分割槽。
如果已經存在的表需要改分割槽表,就需要將當前表 rename後,再建立新表,然後複製資料到新表,然後刪除舊錶就可以了。
一、為什麼要分割槽
原因很簡單,快!
二、如何分割槽
2.1 按年分割槽
numtoyminterval(1, 'year')
--按年建立分割槽表
create table test_part
(
ID NUMBER(20) not null,
REMARK VARCHAR2(1000),
create_time DATE
)
PARTITION BY RANGE (CREATE_TIME) INTERVAL (numtoyminterval(1, 'year'))
(partition part_t01 values less than(to_date('2018-11-01', 'yyyy-mm-dd')));
--建立主鍵
alter table test_part add constraint test_part_pk primary key (ID) using INDEX;
-- Create/Recreate indexes
create index test_part_create_time on TEST_PART (create_time);
2.2按月分割槽
numtoyminterval(1, 'month')
--按月建立分割槽表
create table test_part
(
ID NUMBER(20) not null,
REMARK VARCHAR2(1000),
create_time DATE
)
PARTITION BY RANGE (CREATE_TIME) INTERVAL (numtoyminterval(1, 'month'))
(partition part_t01 values less than(to_date('2018-11-01', 'yyyy-mm-dd')));
--建立主鍵
alter table test_part add constraint test_part_pk primary key (ID) using INDEX;
2.3按天分割槽
NUMTODSINTERVAL(1, 'day')
--按天建立分割槽表
create table test_part
(
ID NUMBER(20) not null,
REMARK VARCHAR2(1000),
create_time DATE
)
PARTITION BY RANGE (CREATE_TIME) INTERVAL (NUMTODSINTERVAL(1, 'day'))
(partition part_t01 values less than(to_date('2018-11-12', 'yyyy-mm-dd')));
--建立主鍵
alter table test_part add constraint test_part_pk primary key (ID) using INDEX;
2.4測試
可以新增幾條資料來看看效果,oracle 會自動新增分割槽。
--查詢當前表有多少分割槽
select table_name,partition_name from user_tab_partitions where table_name='TEST_PART';
--查詢這個表的某個(SYS_P21)裡的資料
select * from TEST_PART partition(SYS_P21);
三、numtoyminterval 和 numtodsinterval 的區別
3.1 numtodsinterval(<x>,<c>) ,x 是一個數字,c 是一個字串。
把 x 轉為 interval day to second 資料型別。
常用的單位有 ('day','hour','minute','second')。
測試一下:
select sysdate, sysdate + numtodsinterval(4,'hour') as res from dual;
結果:
3.2 numtoyminterval (<x>,<c>)
將 x 轉為 interval year to month 資料型別。
常用的單位有 ('year','month')。
測試一下:
select sysdate, sysdate + numtoyminterval(3, 'year') as res from dual;
結果:
四、給已有的表分割槽
需要先備份表,然後新建這個表,拷貝資料,刪除備份表。
-- 1. 重新命名
alter table test_part rename to test_part_temp;
-- 2. 建立 partition table
create table test_part
(
ID NUMBER(20) not null,
REMARK VARCHAR2(1000),
create_time DATE
)
PARTITION BY RANGE (CREATE_TIME) INTERVAL (numtoyminterval(1, 'month'))
(partition part_t1 values less than(to_date('2018-11-01', 'yyyy-mm-dd')));
-- 3. 建立主鍵
alter table test_part add constraint test_part_pk_1 primary key (ID) using INDEX;
-- 4. 將 test_part_temp 表裡的資料遷移到 test_part 表中
insert into test_part_temp select * from test_part;
-- 5. 為分割槽表設定索引
-- Create/Recreate indexes
create index test_part_create_time_1 on TEST_PART (create_time);
-- 6. 刪除老的 test_part_temp 表
drop table test_part_temp purge;
-- 7. 作用是:允許分割槽表的分割槽鍵是可更新。
-- 當某一行更新時,如果更新的是分割槽列,並且更新後的列植不屬於原來的這個分割槽,
-- 如果開啟了這個選項,就會把這行從這個分割槽中 delete 掉,並加到更新後所屬的分割槽,此時就會發生 rowid 的改變。
-- 相當於一個隱式的 delete + insert ,但是不會觸發 insert/delete 觸發器。
alter table test_part enable row movement;
相關文章
- 年月日時分秒
- oracle分割槽表和分割槽表exchangeOracle
- js 年月日時分秒JS
- oracle分割槽表和非分割槽表exchangeOracle
- 分割槽表之自動增加分割槽(11G)
- oracle 根據虛擬列建立以周幾為單位的分割槽表Oracle
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- OceaBase 分割槽表建立技巧
- ORACLE分割槽表梳理系列Oracle
- Oracle分割槽表基礎運維-04列表分割槽Oracle運維
- Oracle分割槽表基礎運維-07增加分割槽(3列表分割槽)Oracle運維
- oracle將表配置為分割槽表Oracle
- oracle 普通表-分割槽表改造流程Oracle
- JS轉換成年月日時分秒JS
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- 週六直播充電:探究Oracle分割槽表建立和使用Oracle
- Oracle12c:建立主分割槽、子分割槽,實現自動分割槽插入效果Oracle
- Oracle分割槽表基礎運維-09刪除分割槽Oracle運維
- Oracle分割槽表基礎運維-05組合分割槽Oracle運維
- Oracle分割槽表基礎運維-02範圍分割槽Oracle運維
- Oracle分割槽表基礎運維-03HASH分割槽Oracle運維
- Oracle分割槽表基礎運維-07增加分割槽(1範圍分割槽)Oracle運維
- Oracle分割槽表基礎運維-01分割槽表分類Oracle運維
- 教程:如何使用DataLakeAnalytics建立分割槽表
- Oracle SQL調優之分割槽表OracleSQL
- 對oracle分割槽表的理解整理Oracle
- oracle 線上重新定義,普通表改變分割槽表,分割槽表可以更改型別、分割槽欄位等Oracle型別
- Oracle 12.2之後ALTER TABLE .. MODIFY轉換非分割槽表為分割槽表Oracle
- 11g後設資料匯入19c分割槽表建立不成功
- python獲取當前日期 年月日時分秒Python
- 如何使用Data Lake Analytics建立分割槽表
- ORACLE刪除-表分割槽和資料Oracle
- 建立sawp分割槽
- MySql建立分割槽MySql
- 增加表分割槽時,為local分割槽索引指定不同表空間的方法索引
- Oracle分割槽表基礎運維-07增加分割槽(4 RANGE_HASH)Oracle運維