ORACLE8的分割槽管理(轉)

Rounders發表於2007-08-06

ORACLE8的分割槽管理

[@more@]

分割槽表的建立
分割槽表的擴容
刪除不必要的分割槽
分割槽的其他操作
檢視分割槽資訊
EXPORT分割槽
IMPORT分割槽
---- 一、 分割槽概述:

---- 為了簡化資料庫大表的管理,ORACLE8推出了分割槽選項。分割槽將表分離在若干不同的表空間上,
用分而治之的方法來支撐無限膨脹的大表,給大表在物理一級的可管理性。將大表分割成較小的分
區可以改善表的維護、備份、恢復、事務及查詢效能。針對當前社保及電信行業的大量日常業務資料,
可以推薦使用ORACLE8的該選項。


返回

---- 二、分割槽的優點:

---- 1 、增強可用性:如果表的一個分割槽由於系統故障而不能使用,表的其餘好的分割槽仍然可以使用;

---- 2 、減少關閉時間:如果系統故障隻影響表的一部分分割槽,那麼只有這部分分割槽需要修復,
故能比整個大表修復花的時間更少;

---- 3 、維護輕鬆:如果需要重建表,獨立管理每個分割槽比管理單個大表要輕鬆得多;

---- 4 、均衡I/O:可以把表的不同分割槽分配到不同的磁碟來平衡I/O改善效能;

---- 5 、改善效能:對大表的查詢、增加、修改等操作可以分解到表的不同分割槽來並行執行,
可使執行速度更快;

---- 6 、分割槽對使用者透明,終端使用者感覺不到分割槽的存在。


返回

---- 三、分割槽的管理:

返回

---- 1 、分割槽表的建立:

---- 某公司的每年產生巨大的銷售記錄,DBA向公司建議每季度的資料放在一個分割槽內,
以下示範的是該公司1999年的資料(假設每月產生30M的資料),操作如下:

STEP1、建立表的各個分割槽的表空間:
CREATE TABLESPACE ts_sale1999q1
DATAFILE ‘/u1/oradata/sales/sales1999_q1.dat’
SIZE 100M
DEFAULT STORAGE (INITIAL 30m NEXT 30m
MINEXTENTS 3 PCTINCREASE 0)
CREATE TABLESPACE ts_sale1999q2
DATAFILE ‘/u1/oradata/sales/sales1999_q2.dat’
SIZE 100M
DEFAULT STORAGE (INITIAL 30m NEXT 30m
MINEXTENTS 3 PCTINCREASE 0)
CREATE TABLESPACE ts_sale1999q3
DATAFILE ‘/u1/oradata/sales/sales1999_q3.dat’
SIZE 100M
DEFAULT STORAGE (INITIAL 30m NEXT 30m
MINEXTENTS 3 PCTINCREASE 0)
CREATE TABLESPACE ts_sale1999q4
DATAFILE ‘/u1/oradata/sales/sales1999_q4.dat’
SIZE 100M
DEFAULT STORAGE (INITIAL 30m NEXT 30m
MINEXTENTS 3 PCTINCREASE 0)

STEP2、建立基於分割槽的表:
CREATE TABLE sales
(invoice_no NUMBER,
...
sale_date DATE NOT NULL )
PARTITION BY RANGE (sale_date)
(PARTITION sales1999_q1
VALUES LESS THAN (TO_DATE
(‘1999-04-01’,’YYYY-MM-DD’)
TABLESPACE ts_sale1999q1,
PARTITION sales1999_q2
VALUES LESS THAN (TO_DATE
(‘1999-07-01’,’YYYY-MM-DD’)
TABLESPACE ts_sale1999q2,
PARTITION sales1999_q3
VALUES LESS THAN (TO_DATE
(‘1999-10-01’,’YYYY-MM-DD’)
TABLESPACE ts_sale1999q3,
PARTITION sales1999_q4
VALUES LESS THAN (TO_DATE
(‘2000-01-01’,’YYYY-MM-DD’)
TABLESPACE ts_sale1999q4 );

返回

---- 2 、分割槽表的擴容:
---- 到了1999年年底,DBA應向表中加入2000年的表空間,同樣是每季度一個表空間,
由於公司業務欣欣向榮,預計每個分割槽為40M,操作如下。

STEP1、建立表空間:
CREATE TABLESPACE ts_sale2000q1
DATAFILE ‘/u1/oradata/sales/sales2000_q1.dat’
SIZE 130M
DEFAULT STORAGE (INITIAL 40m NEXT 40m
MINEXTENTS 3 PCTINCREASE 0)
其他表空間ts_sale2000q2,ts_sale2000q3,
ts_sales2000q4如法炮製。
STEP2、為表新增表空間:
ALTER TABLE sales
ADD PARTITION sales2000_q1
VALUES LESS THAN (TO_DATE
(‘2000-04-01’,’YYYY-MM-DD’)
TABLESPACE ts_sale2000q1;
其他分割槽sales2000_q1,sales2000_q1,
sales2000_q1如法炮製。


返回

---- 3 、刪除不必要的分割槽:
---- 公司規定:銷售的明細資料兩年內必須儲存線上。到2001年,DBA必須將1999年的資料備份
(備份方法見5、EXPORT分割槽),將1999年的分割槽刪除,將空間供後來的資料使用。如此迴圈,
永遠保持兩年的銷售資料線上。

STEP1、DROP 分割槽:
ALTER TABLE sales
DROP PARTION sales1999_q1;
ALTER TABLE sales
DROP PARTION sales1999_q2;
ALTER TABLE sales
DROP PARTION sales1999_q3;
ALTER TABLE sales
DROP PARTION sales1999_q4;
STEP2、利用作業系統的工具刪除以上表空間佔用的檔案
(表空間基於裸裝置無須次步),UNIX系統為例:
oracle$ rm /u1/oradata/sales/sales1999_q1.dat
oracle$ rm /u1/oradata/sales/sales1999_q2.dat
oracle$ rm /u1/oradata/sales/sales1999_q3.dat
oracle$ rm /u1/oradata/sales/sales1999_q4.dat


返回

---- 4 、分割槽的其他操作:
---- 分割槽的其他操作包括截短分割槽(truncate),將存在的分割槽劃分為多個分割槽(split),
交換分割槽(exchange),重新命名(rename),為分割槽建立索引等。DBA可以根據適當的情況使用。

---- 以下僅說明分裂分割槽(split),例如該公司1999年第四季度銷售明細資料急劇增加
(因為慶國慶、迎千禧、賀迴歸),DBA向公司建議將第四季度的分割槽劃分為兩個分割槽,
每個分割槽放兩個月份的資料,操作如下:

STEP1、按(1)的方法建立兩個分割槽的表空間ts_sales1999q4p1,
ts_sales1999q4p2;
STEP2、給表新增兩個分割槽sales1999_q4_p1,sales1999_q4_p2;
STEP3、分裂分割槽:
ALTER TABLE sales
SPLIT PARTITON sales1999_q4
AT TO_DATE (‘1999-11-01’,’YYYY-MM-DD’)
INTO (partition sales1999_q4_p1, partition sales1999_q4_p2)


返回

---- 5 、檢視分割槽資訊:
---- DBA要檢視錶的分割槽資訊,可檢視資料字典USER_EXTENTS,操作如下:

SVRMGRL >SELECT * FROM user_extents WHERE SEGMENT_NAME=’SALES’;
SEGMENT_NA PARTITION_ SEGMENT_TYPE TABLESPACE
---------- ------------ --------------- --------------
SALES SALES1999_Q1 TABLE PARTITION TS_SALES1999Q1
SALES SALES1999_Q2 TABLE PARTITION TS_SALES1999Q2
SALES SALES1999_Q3 TABLE PARTITION TS_SALES1999Q3
SALES SALES1999_Q4 TABLE PARTITION TS_SALES1999Q4
SALES SALES2000_Q1 TABLE PARTITION TS_SALES1999Q1
SALES SALES2000_Q2 TABLE PARTITION TS_SALES1999Q2
SALES SALES2000_Q3 TABLE PARTITION TS_SALES1999Q3
SALES SALES2000_Q4 TABLE PARTITION TS_SALES1999Q4


返回

---- 5 、EXPORT分割槽:
---- ORACLE8的EXPORT 工具可在表的分割槽以及匯出資料,例如到2001年,DBA必須
將1999年的資料按分割槽匯出,操作如下:

oracle$ exp sales/sales_password tables=sales:
sales1999_q1 rows=Y
file=sales1999_q1.dmp
oracle$ exp sales/sales_password tables=sales:
sales1999_q2 rows=Y
file=sales1999_q2.dmp
oracle$ exp sales/sales_password tables=sales:
sales1999_q3 rows=Y
file=sales1999_q3.dmp
oracle$ exp sales/sales_password tables=sales:
sales1999_q4 rows=Y
file=sales1999_q4.dmp


返回


---- 6 、IMPORT分割槽:
---- ORACLE8的IMPORT 工具可在表的分割槽以及匯入資料,例如在2001年,使用者要檢視1999年
的資料,DBA必須匯入1999年的資料,使之線上,操作如下: STEP1、建立表的1999年的四個
表空間和相應的分割槽,參照(2); STEP2、匯入資料:

oracle$ imp sales/sales_password FILE =sales1999_q1.dmp
TABLES = (sales:sales1999_q1) IGNORE=y
oracle$ imp sales/sales_password FILE =sales1999_q2.dmp
TABLES = (sales:sales1999_q2) IGNORE=y
oracle$ imp sales/sales_password FILE =sales1999_q3.dmp
TABLES = (sales:sales1999_q3) IGNORE=y
oracle$ imp sales/sales_password FILE =sales1999_q4.dmp
TABLES = (sales:sales1999_q4) IGNORE=y

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9417382/viewspace-932301/,如需轉載,請註明出處,否則將追究法律責任。

相關文章