国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle8分區功能研究與應用

2024-08-29 13:38:44
字體:
來源:轉載
供稿:網友

  一、現狀分析
  伴隨著信息高速公路的飛速建設,油田的各項勘探開發數據都做到了及時準確入庫,數據庫中數據量日益增加。以其下屬的勝利采油廠為例,數據量已達到2000M,各種數據庫表更是多達1千多個。 與此同時,又生了一個新的問題,那就是雖然各種生產數據都已入庫,但是由于數據量巨大,造成查詢速度非常緩慢。
  下面以油井日度數據表(dba01)為例進行說明,該表是最基礎的開發數據,天天每一口井都有記錄進入到數據庫中。油田規定,該數據15個月內必須保存在線,15個月下來這個表就997890條記錄。
  這接近100萬的記錄大大增加系統開銷,在用戶提交查詢后,經常需要等待五六分鐘才能得到結果,有時甚至查不出數據,給用戶的感覺是仿佛處于"死機"狀態。
  二、常規解決辦法
  為了提高速度,解決大表查詢速度緩慢的問題,我們最初的對策是在后臺創建很多中間表。
  例如:要得到采油廠生產日數據匯總情況,了解全廠天天的油井開井數,水井開井數,日產油量,注采比等重要數據,其缺點主要有兩個:
  1、中間表的建立會占用大量表空間,也就是說查詢速度的提高是以犧牲服務器空間為代價,造成了巨大的資源浪費。
  2、隨著各種應用的不斷開展,中間表的數量也越來越多,這就人為加大了數據治理和維護的工作量。
  因此,要從根本上解決大表存在的查詢速度緩慢的問題,必須找到更為有效的方法。
  三、采用分區功能解決問題
  1、分區的定義
  分區將表分離在若干不同的表空間上,將大的表和索引拆分成小的易于治理的數據片段,用分而治之的方法來支撐無限膨脹的大表,給大表在物理一級的可治理性。將大表分割成較小的分區可以改善表的維護、備份、恢復、事務及查詢性能。針對我廠大量的油水井日度數據,可以推薦使用Oracle8的分區功能。
  2、分區的優點
  首先,能夠成倍提高查詢速度:進行分區治理后,服務器可以進行智能的分區檢測。
  跳過與查詢無關的分區訪問,并跳過不在線的分區。
  其次,增強系統可用性:假如表的一個分區由于系統故障而不能使用,其余好的分區仍然可以使用。
  不同分區可以跨表空間存儲, 降低了磁盤損壞帶來的數據不可用性。
  四、分區的治理
  1、建立表的各個分區的表空間
  下面是創建2001年第一季度表空間的操作語句,指定所建立表空間的名字,所用數據文件的名稱、大小和存放目錄,并由存儲字句指定在該空間中所建立對象的缺省存儲參數。
  CREATE TABLESPACE ts_dba01_2001q1
  DATAFILE '/home2/oracle/test/dba01_2001q1.dat' SIZE 200M
  DEFAULT STORAGE (INITIAL 30m NEXT 30m
  MINEXTENTS 3 PCTINCREASE 0);
  2、建立分區表
  下面是建立dba01表的操作語句,指定表名、列名及列的數據類型等。這些都于常規創建表的語句相同。
  CREATE TABLE dba01
  (jh varchar2(16) not null,
  rq date not null,
  cyfs varchar2(3),
  dwdm varchar2(11),
  ......
  PARTITION BY RANGE (rq)
  PARTITION dba01_2000q4
  VALUES LESS THAN (TO_DATE('2001-01-01','YYYY-MM-DD')
  TABLESPACE ts_dba01_2000q4,
  PARTITION dba01_2001q1
  VALUES LESS THAN (TO_DATE('2001-04-01','YYYY-MM-DD')
  TABLESPACE ts_dba01_2001q1)
  這是創建分區的語句,這里指定按照日期進行分區,例如:
  日期>='2001-01-01'并且<'2001-04-01'(即2001年第一季度)的數據放在dba01_2001q1分區內。其他分區也依次原則建立。
  3、分區表的擴充
  在2001年年底,我們向表中加入2002年的表空間,同樣是每季度一個表空間,預計每個分區為200M,下面是創建2002第一季度表空間的操作語
  句,指定表空間名稱,數據文件名稱及大小等 。
  CREATE TABLESPACE ts_dba01_2002q1
  DATAFILE '/home2/oracle/test/dba01_2002q1.dat' SIZE 200M
  DEFAULT STORAGE (INITIAL 40m NEXT 40m
  MINEXTENTS 3 PCTINCREASE 0)
  其他季度表空間也如此建立。
  4、為表添加表空間
  操作語句如下:
  ALTER TABLE dba01
  ADD PARTITION dba01_2002q1
  VALUES LESS THAN (TO_DATE('2002-04-01','YYYY-MM-DD')
  TABLESPACE ts_dba01_2002q1;
  5、刪除不必要的分區
  采油廠規定:必須保存15個月的日度數據在線。到2002年,必須把2000年3季度的數據備份,將該分區刪除,使空間空出來供后續數據循環使用。
刪除分區 ALTER TABLE dba01 DROP PARTION dba01_2000q3;
  利用操作系統工具刪除這個分區所占用的文件
  oracle$ rm /home2/oracle/test/dba01_2000q3.dat
  6、查看分區信息
  可通過對數據字典USER_EXTENTS進行查詢,操作如下:
  SVRMGRL >SELECT * FROM user_extents
  WHERE SEGMENT_NAME='dba01';
  顯示內容如下:
  
  7、卸出分區
  ORACLE8的EXPORT 工具可卸出分區并導出數據,例如到2002年,我們可將2000年的數據按分區卸出。
  例如:要卸出2000年3季度的數據,操作如下:
  oracle$ exp tycx/***
  tables=dba01:dba01_2000q3 file= dba01_2000q3.dmp
  在語句中要指定用戶名、口令、需要卸出的表名及分區名、卸出文件名稱等。
  8、導入分區
  ORACLE8的IMPORT工具可導入分區并加載數據,例如在2002年,用戶要查看2000年的數據,我們必須導入該年數據。
 ?。?)建立該表2000年的四個表空間和相應的分區
  (2)下面是導入2000年3季度分區數據的操作語句:
  oracle$ imp tycx/***
  file = dba01_2000q3.dmp tables= (dba01: dba01_2000q3)
  五、實施效果
  1、能夠成倍提高查詢速度
  進行分區治理后,服務器可以進行智能的分區檢測,跳過與查詢無關的分區訪問,跳過不在線的分區。
  2、增強系統可用性
  假如表的一個分區由于系統故障而不能使用,其余好的分區仍然可以使用。
  不同分區可以跨表空間存儲, 降低了磁盤損壞帶來的數據不可用性。
  以油井日數據表為例:
  不采用分區技術時,若表空間文件受到破壞,會影響到所有數據都無法使用,必須將該表全部記錄(多達100萬條)重新恢復,工作量很大,恢復期間用戶根本無法查詢數據,完全不能使用。
  而采用分區技術后,由于整個表已按季度拆分為6個分區,因此當某一個表空間文件被破壞,則僅是該分區表空間所對應的季度數據無法使用,其他季度數據仍然可以正常使用,對用戶的查詢以及其他應用影響不大。
  六、總結
  通過合理應用oracle8的分區功能,就可以大大改善系統的性能,降低大表數據治理和維護的工作量,對大表的查詢、增加、修改等操作可以分解到表的不同分區來并行執行,可使運行速度更快。對促進無紙化辦公,輔助生產有積極的推動作用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 增城市| 天祝| 南部县| 乡城县| 莒南县| 南涧| 金阳县| 平泉县| 阿拉善左旗| 临城县| 综艺| 陵水| 新丰县| 五家渠市| 财经| 宣恩县| 北安市| 茶陵县| 夏邑县| 苍南县| 孝义市| 无锡市| 康马县| 肥东县| 新竹县| 邹城市| 甘肃省| 靖州| 清镇市| 江源县| 石门县| 伊宁县| 平泉县| 怀远县| 读书| 美姑县| 广德县| 平远县| 招远市| 重庆市| 赤壁市|