天天看點

Oracle 建立分區表

--檢視資料庫中所有使用者的分區表
SELECT * FROM DBA_TABLES WHERE PARTITIONED='YES' AND OWNER NOT IN ('SYSTEM','SYS') ORDER BY OWNER
--檢視目前使用者下的分區表
SELECT * FROM USER_TABLES WHERE PARTITIONED='YES'
--建立分區表--注意 PARTITION 的字段不能為空
CREATE TABLE TABLE_TEST
(	
	ID VARCHAR2(36 CHAR) NOT NULL PRIMARY KEY, 
	EVENT_ID VARCHAR2(36 CHAR), 
	PATIENT_ID VARCHAR2(36 CHAR), 
	PATIENT_NAME VARCHAR2(50 CHAR), 
	WARD_ID VARCHAR2(36 CHAR), 
	WARD_NAME VARCHAR2(50 CHAR), 
	ISSUE_TIME DATE
)
PARTITION BY RANGE (ISSUE_TIME)
INTERVAL ( NUMTOYMINTERVAL (3, 'MONTH') )  --每3個月建一個分區
(
 PARTITION P1 VALUES LESS THAN (TO_DATE('2018-1-1', 'YYYY-MM-DD')) --15年之前的資料統一建一個分區
)

--将現有表修改成分區表(此方法配合 RENAME TABLE_NAME TO TABLE_NAME_NEW 适用于資料遷移)
CREATE TABLE E_CHARGE_RECORD_1
PARTITION BY RANGE (ISSUE_TIME)
INTERVAL ( NUMTOYMINTERVAL (3, 'MONTH') )  --每3個月建一個分區
(
     PARTITION P1 VALUES LESS THAN (TO_DATE('2015-1-1', 'YYYY-MM-DD')) --15年之前的資料統一建一個分區
)
AS
SELECT * FROM E_CHARGE_RECORD;
      

 測試效果