轉載:ORACLE8的分割槽管理
ORACLE8的分割槽管理
一、 分割槽概述:
---- 為了簡化資料庫大表的管理,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/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/51862/viewspace-180554/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE8的分割槽管理(轉)Oracle
- ORACLE分割槽表管理[轉]Oracle
- Oracle的分割槽管理Oracle
- 《RHEL6硬碟的分割槽和swap分割槽管理》——硬碟分割槽的大總結硬碟
- 分割槽索引和全域性索引(轉載)索引
- Oracle分割槽表的管理Oracle
- 【學習筆記】分割槽表和分割槽索引——分割槽表的其他管理(三)筆記索引
- 【學習筆記】分割槽表和分割槽索引——管理索引分割槽(四)筆記索引
- 非分割槽錶轉換成分割槽表
- 【轉載】linux自動分割槽指令碼Linux指令碼
- MySQL表分割槽管理MySql
- ORACLE分割槽表管理Oracle
- 全面學習分割槽表及分割槽索引(17)--其它索引分割槽管理操作索引
- (轉)管理LVM2邏輯分割槽LVM
- 將非分割槽錶轉換為分割槽表
- Linux 分割槽擴容(根分割槽擴容,SWAP 分割槽擴容,掛載新分割槽為目錄)Linux
- 學習NetBSD-掛載MSDOS分割槽(轉)
- 關於磁碟陣列,分割槽載入的問題(轉)陣列
- swap分割槽的知識(轉)
- 硬碟空間的管理和分割槽硬碟
- ORACLE分割槽表的使用和管理Oracle
- 將mysql非分割槽錶轉換為分割槽表MySql
- (轉)關於NAND flash的MTD分割槽與uboot中分割槽的理解NaNboot
- 如何查詢分割槽表的分割槽及子分割槽
- 全面學習分割槽表及分割槽索引(7)--怎樣管理索引
- 將一個非分割槽錶轉換為分割槽表
- 非分割槽錶轉換為分割槽表和partition indexIndex
- PLSQL根據分割槽表的分割槽名批次truncate分割槽SQL
- 掛載可讀寫的NTFS分割槽
- (轉)ORACLE 分割槽表的設計Oracle
- FreeBSD 的硬碟分割槽策略(轉)硬碟
- Linux 掛載ntfs分割槽Linux
- 談Linux分割槽(轉)Linux
- 分割槽表PARTITION table(轉)
- Linux與分割槽 (轉)Linux
- linux之硬碟分割槽管理Linux硬碟
- 全面學習分割槽表及分割槽索引(7)--怎樣管理(續)索引
- rebuild分割槽表分割槽索引的方法Rebuild索引