Oracle業務流程管理10g第三版本面市

為了滿足商業分析師和IT業界的需求,甲骨文公司近日推出了Oracle業務流程管理10g第三版本(Oracle BPM 10g R3),它是Oracle融合中間件的組件之一。
     新版本的軟件可幫助商業和IT用戶實現協作性的業務流程自動化和優化,從而提供效率和靈活性。

     Oracle業務流程管理10g第三版本提供了新的用戶界面、新的模型功能、新的業務規則以及從第三方工具輸入模型的功能。

     作為Oracle業務流程管理套件的部件,Oracle業務流程管理10g第三版本是該產品系列的最新版本,它集成了甲骨文公司和BEA的技術,表現了甲骨文公司在把兩家公司的領先技術整合過程中所獲得的快速進展。

     新版本軟件使最終用戶、商業分析師和IT專業人員受益

(全文…)

  • Share/Bookmark

DBA 2.0的時代與Oracle促進的變革

前幾天我們討論的關於DBA 2.0的話題,實際上也正是Oracle在後9i時代不斷促進的變革,而變革的主要工具之一就正是全新的OEM(Grid/Database Control)。所以我嘗試將這個話題做一個最後的總結。既然我們開始了DBA 2.0的討論,那麼DBA 2.0是從何開始的,又可以如何界定呢?

    普遍的認為,DBA 2.0開始於Oracle Database 10g的時代,由於Oracle 10g引入了大量的新特性,使得DBA的工作發生了質的變化。 比如,ASM的引入使得DBA不得不更加深入的介入存儲的管理和維護;Clusterware的引入,使得DBA不得不深入了解和維護Cluster軟件;如果在加上Oracle的OEL(Oracle Enterprise Linux)和最近推出的Exadata以及HP Oracle Database Machine,那麼現在主機、操作系統、OS都需要一個Oracle DBA深層次的介入和管理。

    而在傳統的數據庫層面,數據庫的自動管理與自我維護性則不斷提高。 Grid Control/Database Control可以幫助我們更好的監控和管理數據庫,AWR(自動工作負載信息庫)使得信息的收集實現自動化,ADDM(自動數據庫診斷監控程序)使得數據庫可以根據AWR等信息進行自動的性能分析和診斷,SQL Advisor、SPM(SQL Plan Management)可以幫助我們進行SQL的調整和建議……

    總結一下那就是,在傳統的數據庫層面,Oracle不斷在強化自動化管理,提高數據庫的自我管理性,減少用戶的干預和工作量;而在數據庫之外,更後端,DBA需要不斷向系統、存儲甚至網絡領域延伸,在前端,DBA則需要不斷向應用層面進行擴展。

(全文…)

  • Share/Bookmark

基於Oracle 高級複製功能的數據庫同步研究與應用

摘要:隨著數據庫的廣泛使用和網絡的迅速發展,數據庫同步技術的研究一直是一個熱點。本文介紹了Oracle 的高級複製功能的相關概念及提供的功能。接著分析比較了幾種網絡間數據庫同步方法,並總結了基於Oracle 高級複製功能的同步的優勢。最後通過一個具體的數據庫同步需求,介紹一種基於Oracle高級複製功能的數據庫同步方案的具體實現。

1.引言
數據庫系統是現代企業運作和管理自動化系統的重要組成部分。在Internet 飛速發展的今天,數據庫一方面向集中化,大型化方向發展,但應用卻在向著分散化,小型化的方向延伸。對於越來越多的企業分支機構和辦公人員,他們需要隨時查詢和更新數據庫,而他們所需要操作的一般並不是數據庫的全部,而往往只是與之緊密相關的少量數據,但少量的數據必須與企業中心數據庫同步更新。如何根據實際情況有效地解決數據庫系統的數據同步問題已成為企業或系統的整個數據庫系統應用的核心環節。

點擊下載:Oracle高級複製功能的數據庫同步研究與應用

  • Share/Bookmark

利用Oracle 10g 的MODEL SQL 進行行間計算

以產品產量表為例,一個工廠(用code 表示)生產多種產品(用p_id 表示),每種產品具有生產量(v1)和銷售量(v2)產品代碼具有審核關係,如’10′=’30′+’31′,其中’10′代表大類,’30′和’31′代表’10′大類下的小類。
SQL>createtablet603(codevarchar(10),p_idvarchar(7),v1number(10),v2number(1
0));
Tablecreated.
SQL>insertintot603values(’600001′,’30′,1,1);
SQL>insertintot603values(’600001′,’31′,1,1);
SQL>insertintot603values(’600001′,’10′,2,2);
SQL>insertintot603values(’600002′,’10′,3,2);
SQL>insertintot603values(’600002′,’31′,2,1);
SQL>insertintot603values(’600002′,’30′,2,1);
SQL>commit;
Commitcomplete.
SQL>select*fromt603;
CODEP_IDV1V2
————————————-
6000013011
6000013111

6000011022
6000021032
6000023121
6000023021
6rowsselected.
SELECTcode,
p_id,v1
FROMt603
WHEREcodeIN(’600001′,’600002′)
MODELRETURNUPDATEDROWS
PARTITIONBY(code)
DIMENSIONBY(p_id)
MEASURES(v1)
RULES(
v1['err1']=v1['30']+v1['31']-v1['10'])
ORDERBYcode,p_id;
其中rule 表示計算規則,’err1′表示這條審核關係的代號,它的值等於P_ID 為’30′的v1 值+P_ID 為’31′的v1 值-P_ID 為’10′的v1 值PARTITION BY (code)表示按工廠分區,即審核在一個工廠內的產品MODEL 關鍵字後面的RETURN UPDATED ROWS 子句將結果限制為在該查詢中創建或更新的那些行。使用該子句是使結果集只包含新計算的值,在本例中就是審核結果

CODEP_IDV1
—————————
600001err10
600002err11
如果返回值=0,表示v1['30'] + v1['31'] =v1['10']審核通過,否則,審核不通過

(全文…)

  • Share/Bookmark

Oracle 10g數據庫中如何分析響應時間

在Oracle10g 中,以前版本中比較難於獲取的響應時間數據將會變得非常容易獲取。在以前看來,為了盡量獲得數據庫的最佳性能,Oracle 的DBA 們和性能分析專家一直很困難獲得系統以及用戶會話活動的一致的響應時間數據。 DBA 們面臨的問題一直以來包括兩個方面:第一個方面是準確定位數據庫或者用戶會話究竟在哪裡消耗了時間;第二個方面就是確定用戶體驗的客觀性質在數據庫中產生所有可能的行為和交互作用,這些任務都不是沒有價值的。  

Oracle 等待接口,在之前的很早的Oracle 數據庫版本中開始介紹的,對於那些知道如何使用等待接口的管理員來說這已經成為一個偉大的開始,即使它仍然缺乏告訴DBA 系統或者用戶會話是否有效的處理了事務或者查詢這個理想的能力。啟用和鑽研跟踪文件能夠存儲這個級別上的詳細信息,但是對於大多數超負荷工作管理大型數據庫的DBA 們,這個鑽研是奢侈的而耗費時間的。幸運的是,那些將數據庫升級到Oracle10g 的DBA 們將會發現找到主要的響應時間變得很容易,可以允許一個非常好的圖表來顯示系統和會話級的響應時間數據。很重要的一點,Oracle 的ADDM 提供了一個查看響應時間的方法,通過自動分析收集的統計信息,識別問題區域,甚至可以通過Oracle 企業管理器網絡控制的圖形界面提供建議。此外,與我們這裡討論相關的是Oracle10g 數據庫的歷史數據機制允許DBA 們按時查看對響應時間趨勢的分析,這將有助於DBA 們確定事務/系統的高峰時期,更好的定位那些拉長批處理週期和ETL 作業的進程和SQL 語句。

(全文…)

  • Share/Bookmark

如何準備oracle認證考試?

1、Oracle公司推薦的官方准備途徑

Oracle的考試內容比較多,並且考題也很細,對動手能力要求很強。因此,為了有足夠的把握,一定要提前充分準備,而且一定要注重動手實踐。在Oracle官方網站上推薦的通過認證的途徑如下,可以進行參考。
Oracle大學:Oracle大學提供的教師引導及基於技術的訓練(Instructor-led training and technology- based training)是準備OCP認證的最好方式,這些課程將為你打下需要通過OCP認證的知識基礎。你可以查閱一下課程表來選擇理想的準備方式,你當地的Oracle大學可以在這方面給你一些最好的建議。你可以訪問Oracle的網站http://education.oracle.com,獲得更多的信息。
自己準備:實戰經驗是加深你對Oracle考試內容理解的最好方式。 Oracle建議你將理論學習拓展,在實際工作或是練習中使用新學到的技巧和知識來自學。
考試內容檢查表:使用考試內容檢查表(Test Content Checklist)來確定你必須準備的所有題目。 Oracle會不斷地更新考試內容檢查表,所以請訪問Oracle網站httP://www.oracle.com/education/certification,下載最新的考試指南。

其它考試工具:模擬考試題及自我測試軟件可以幫助你更好地準備OCP認證考試。 Oracle和自我測試軟件公司(Self Test Software)聯合出品了一些高質量的考試軟件以幫助考生更好地準備OCP認證考試,這些軟件可以通過Oracle 網站http://www.oracle.com/education/certification定購。
事實上,絕大部分的大陸同學都是通過參加培訓班來準備考試的,它們不僅輔導通過考試的知識,而且其他信息包括如何報名,考場上如何應考,都可以得到輔導。以上Oracle官方的介紹只是一般地對你進行一下有關備考的初級教育,事實上,正像我們前面說過的,作為一個龐大的數據庫系統,要想掌握好Oracle(更不要說完全掌握了——我甚至懷疑是否有人真正完全掌握過Oracle),從任何角度而言都不是一件易事。除非你有足夠的決心和耐心,準備將Oracle當作你的職業之路並致力於數據庫技術的研究,你才有可能真正了解這個龐雜系統的精髓。以下的一些論述將有助於你對Oracle有一個初步的了解。

2、Oracle數據庫技術基本知識

(1)Oracle數據庫涵蓋了數據庫技術的方方面面。
儘管關係型數據庫從原理上來講並不是很難,有一些數據庫知識的人掌握這些原理並不會花很大的氣力,而且,一般的關係型數據庫軟件,譬如SQL Server,用起來並不復雜,但Oracle絕對與眾不同。作為有史以來最成功的關係型數據庫軟件,Oracle的實現方式和管理維護手段非常豐富,它涉及到很多方面的細節技術。單從任何一個側面來理解它,是難觀其全貌的。要想真的精通它,沒有兩三年功夫是不行的。單是Oracle的技術文檔,就足夠淹沒你的! 具體說來,Oracle技術包括以下幾個主要方面:Oracle系統結構和原理、Oracle數據庫的安裝和配置、Oracle數據庫的管理、Oracle的數據備份與恢復技術、Oracle的性能調整、Oracle的新產品特性(Java支持、應用服務器、時間空間系列、文本服務等)、Oracle的並行服務器技術、Oracle的數據倉庫技術、Oracle的對像類型和對像一關係模型等技術……
毫不誇張地說,以上任何一個部分單獨拿出來都是很大的題目!
(2)Oracle技術發展快,技術的關聯性大。
儘管Oracle只是一個數據庫系統,但在實際應用中,你不可能只面對數據庫本身。譬如,你在做Oracle數據庫的網絡管理,你將不可避免地遇到如何與網絡通訊、防火牆的技術兼容的問題。同理,你在做其它方面的工作,也肯定有方方面面的技術關聯問題需要解決。而且更要命的是,這些技術(包括Oracle本身)發展速度都非常快,這就使得跟上它們的發展成為一件十分費勁的事情。
不過幸運的是,我們並不需要同時了解Oracle的所有方面,Oracle提供了很多應用方向,我們可以按照偏好,選擇其中的一個方向,集中時間和精力,努力在這個方向做到有所成就還不是一件很難的事情。由於Oracle目前已是世界上最主要的數據庫供應商和第二大軟件公司,Oracle的數據庫技術已經被廣泛應用於各個領域,因而市場上對Oracle人才的需求量是相當之大,獲得OCP認證不愁找不到工作。而以後我們可以在工作中學以致用,再努力地鑽研Oracle數據庫及相關技術。

3、入門者如何起步?

說了這麼多,想必您可能已經有些心動,那麼,面對Oracle這樣一個龐然大物,你也許會覺得無從下手。為此,我們有一些建議:
(1)找一本有關數據庫原理的書,掌握關係數據庫的基本原理——如果你沒有學過這樣的課程的話。
(2)閱讀參考書並結合上機操作,掌握SQL的一般原理及基本用法。
(3)至少買一本Oracle入門級的參考書,並找到一台安裝了Oracle的某個版本(Oracle7.3以上,最好是Oracle 8)計算機,建立起上機學習環境。
其中第三點尤其重要,因為沒有實踐經驗,想通過Oracle認證只是癡人說夢。或者如果你的預算比較充分,你可以選擇參加培訓。在選擇培訓班的時候一定要選擇Oracle授權的培訓班,這樣培訓的質量才有保證,同時,在報名考試的時候還可以享受一定的折扣。
與其他很多考試不同,OCP並沒有真正意義上的參考書,你要做的就是在上機中不斷熟悉Oracle的各種應用,書只是用來查閱和參考的。因為從根本上來講,Oracle數據庫是一門實踐性很強的技術,而Oracle認證主要考的是動手能力。因此,沒有實踐經驗,而只靠背學習資料是根本無法通過Oracle認證考試的。以下是市面上常見的一些書,在此列出,希望能對大家有一些幫助。
初級的:《輕鬆掌握SQL結構化查詢語言》,《輕鬆掌握Oracle數據庫開發》,《Oracle開髮指南》,《Oracle初學者指南》,《Oracle8 PL/SQL程序設計》。
高級的;《Oracle服務器技術精粹》,《Oracle8/8i開發使用手冊》,《Oracle8份與恢復手冊》,《Oracle8性能優化與管理手冊》。

另外可以下載一些Oracle考古題,作為練習資料。無論OCA、OCP考試都會很輕鬆通過!祝大家考試順利!

  • Share/Bookmark

八步精通Oracle訪問Sybase數據庫

配置TRANSPARENT GATEWAY FOR Sybase步驟:
  1. Oracle所在服務器上安裝Sybase client(或者在同一台server上安裝Oracle、Sybase服務器),確保能夠訪問Sybase數據庫;
  2.安裝TRANSPARENT GATEWAY FOR Sybase選件,要用自定義安裝。正確選擇Sybase的安裝目錄;
  3.選擇一個sid字符串準備賦給Sybase數據庫。如:tg4sybs設置Sybase的dll路徑到環境變量PATH(這一步很重要);
  4.修改初始化文件,默認的是:
  Oracle_HOME\tg4sybs\admin\inittg4sybs.ora
  設置參數
  HS_FDS_CONNECT_INFO
  格式:
HS_FDS_CONNECT_INFO= server_name. database_name[,INTER interface_file]
server_name. database_name是大小寫敏感的。
  INTERFACE可選
  例子:如下
# This is a sample agent init file that contains the HS parameters that are# needed
for the Transparent Gateway for Sybase## HS init parameters#HS_FDS_CONNECT_INFO=migration_serv.taxHS_FDS_TRACE_LEVEL=
        
OFFHS_FDS_RECOVERY_ACCOUNT=RECOVERHS_FDS_RECOVERY_PWD=RECOVER
## Environment variables required for Sybase#set SYBASE=d:\sybase

  上例中
  server_name是migration_serv
  database_name是tax
  5.配置oracle網絡服務的listener,配置文件是:listener.ora
  默認路徑:ORACLE_HOME\network\admin
  加入如下:
SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME= gateway_sid)
(ORACLE_HOME= oracle_home_directory)(PROGRAM=tg4sybs)))

gateway_sid就是3選擇的sid字符串
  oracle_home_directory是ORACLE_HOME
  tg4sybs若是SYBASE是特定的。如果是其他數據庫,會不同。
  例子如下:
(SID_DESC=(SID_NAME=tg4sybs)
(ORACLE_HOME = D:\oracle\ora92)(PROGRAM=tg4sybs))

  6.停止監聽
  lsnrctl stop
  重新啟動監聽程序
  lsnrctl start
  7.配置oracle server的tnsnames.ora使其能夠訪問sybase
connect_descriptor=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)
(HOST= host_name)(PORT= port_number))
(CONNECT_DATA=(SID= gateway_sid))(HS=OK))

connect_descriptor是連接串,任取,一般為sybs
  host_name:oracle server的name
  port_number:oracle監聽端口
  gateway_sid就是3選擇的sid字符串
  例子如下:
sybs=(DESCRIPTION=(ADDRESS_LIST =(ADDRESS=(PROTOCOL=TCP)
(HOST= dw-server1)(PORT= 1521)))
(CONNECT_DATA=(SID= tg4sybs))(HS=OK))

  8.建立database link
  如:
CREATE DATABASE LINK sybs CONNECT TO sa IDENTIFIED BY prient USING ‘SBYS’ ;
  即可訪問sybase 數據庫。
需要注意的是,sybase數據庫的表名,字段名,如果是小寫的,那麼在oracle裡訪問的時候要加上雙引號”"
  如:
SQL〉select “a” from “b”@sybs;

  • Share/Bookmark

Oracle 10G 臨時表空間組

Oracle 10g 引進了臨時表空間組(temporary tablespace group)的概念,它允許用戶
在不同的會話中同時利用多個臨時表空間。

 1. 臨時表空間組的主要特徵


一個臨時表空間組必須由至少一個臨時表空間組成,並且無明確的最大數量限制。
如果刪除了一個臨時表空間組的所有成員,該組也自動被刪除。
臨時表空間的名字不能與臨時表空間組的名字相同。
在給用戶分配一個臨時表空間時,可以使用臨時表空間組的名字代替實際的臨時表空間
名;在給數據庫分配默認臨時表空間時也可以使用臨時表空間組的名字。


2. 臨時表空間組的優點


使用臨時表空間組而非普通的臨時表空間,有如下好處:
由於SQL 查詢可以並發使用幾個臨時表空間進行排序操作,因此SQL 查詢很少會出現
排序空間超出,避免當臨時表空間不足時所引起的磁盤排序問題。
可以在數據庫級指定多個默認臨時表空間。
一個並行操作的並行服務器將有效地利用多個臨時表空間。
一個用戶在不同會話中可以同時使用多個臨時表空間。

 3. 管理臨時表空間組

 

  (全文…)

  • Share/Bookmark

Oracle 10G:透明數據加密技術(TDE)

Oracle 透明數據加密提供了實施加密所必需的關鍵管理基礎架構。加密的工作原理是將明文數據以及秘密(稱作密鑰)傳遞到加密程序中。加密程序使用提供的密鑰對明文數據進行加密,然後返回加密數據。以往,創建和維護密鑰的任務由應用程序完成。 Oracle透明數據加密通過為整個數據庫自動生成一個萬能密鑰解決了此問題。在啟動 Oracle 數據庫時,管理員必須使用不同於系統口令或DBA 口令的口令打開一個Oracle Wallet 對象。然後,管理員對數據庫萬能密鑰進行初始化。萬能密鑰是自動生成的。

 
性能:


由於索引數據未被加密,因此加密通常會影響現有的應用程序索引。 Oracle 透明數據加密對與給定應用程序表關聯的索引值進行加密。這意味著應用程序中的相等搜索對性能的影響很小,甚至沒有任何影響。例如,假設應用程序card_id 存在一個索引,並且此應用程序執行以下語句:
SQL> Select cash from credit_card where card_id = ’1025023590′;
Oracle 數據庫將使用現有的應用程序索引,儘管card_id 信息已經在數據庫中加密。
 
準備用於加密的數據庫:

 
在本部分內容中,您將更新sqlnet.ora、創建一個加密錢夾(ewallet.p12)、打開此錢夾並為 TDE 創建萬能密鑰。執行以下操作:
1. 您需要更新sqlnet.ora 文件以包含一個ENCRYPTED_WALLET_LOCATION 條目。打開一個終端窗口,然後輸入以下命令:
cd $ORACLE_HOME/network/admin
gedit sqlnet.ora

connect / as sysdbaalter system set key identified by “welcome1″;
此命令的作用為:
l 如果指定的目錄中不存在加密錢夾,則將創建加密錢夾(ewallet.p12)、打開此錢夾並創建/重新創建 TDE 的萬能密鑰。
l 如果指定目錄中存在加密錢夾,則將打開此錢夾並創建/重新創建TDE 的萬能密鑰。
之後,就可以測試數據了。


下面是實驗記錄:
alter system set key identified by “welcome1″;
SQL> conn dodd/dodd123
create table test (id number,credit_card_number varchar2(16) ENCRYPT NO SALT);
SQL> insert into test values(1,’1231243242′);
1 row created.
SQL> insert into test values(2,’33245235′);
SQL> commit;
Commit complete.
SQL> select * from test;
ID CREDIT_CARD_NUMB
———- —————-
1 1231243242
2 33245235
可見,數據查看是明文,因為這個時候,加密錢夾已經打開,數據可以解密。
2. 接下來,您需要打開錢夾並創建萬能加密密鑰。從終端窗口中,輸入以下命令:
將以下條目添加到文件末尾:
ENCRYPTION_WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DAT
A=(DIRECTORY=/opt/oracle/admin/test97/wallet/)))
如果不加這一項的話,則會提示下面錯誤:
SQL>altersystemsetkeyidentifiedby”hurray”
2;
altersystemsetkeyidentifiedby”hurray”
*
ERRORatline1:
ORA-28368:cannotauto-createwallet
/opt/oracle/admin/test97/wallet/ 目錄是用來存放生成的錢夾的。可以為加密錢夾選擇任何目錄,但路徑不應指向在數據庫安裝過程中創建的標準模糊錢夾 (cwallet.sso)。

 

 

 
這時,停止數據庫,再打開:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> SQL> startup
ORACLE instance started.
Total System Global Area 524288000 bytes
Fixed Size 1979968 bytes
Variable Size 138414528 bytes
Database Buffers 377487360 bytes
Redo Buffers 6406144 bytes
Database mounted.
Database opened.
SQL> select * from dodd.test;
select * from dodd.test
*
ERROR at line 1:
ORA-28365: wallet is not open
SQL> select id from dodd.test;
ID
———-
1
2
可以看到,因為數據庫重啟後,加密錢夾處於關閉狀態,這時只要查詢到加密的列,會提示加密錢夾沒有打開。
如果用戶想打開錢夾,必須具有alter system 權限。下面打開wallet:
SQL> conn / as sysdba
Connected.
SQL> alter system set wallet open identified by “welcome1″;
System altered.
SQL> conn dodd/dodd123
Connected.
SQL> select * from test;
ID CREDIT_CARD_NUMB
———- —————-
1 1231243242
2 33245235
可以看到,加密錢夾打開後,數據可以被解密。
還有一條:sys 用戶的表不能被加密。
可見:Oracle TDE 是在數據層面上對錶裡的數據加密,而且不會影響數據庫現有的權限控制策略。

salt 實際上就是在加密過程中引入一個隨機性。簡單的說,就是一般來說,同樣的明文產生同樣的密文,這樣就導致容易被解密者通過分析詞頻之類的方式(加解密我不太懂)來通過密文破解明文,如果指定salt,那麼即使同樣的明文加密後的密文也是不一樣的。no salt 的話,自然就是相同的明文會產生相同的密文了。對於索引來說,要求no salt 也就可以理解了
丟失ewallet 加密錢夾的話,是不能再解密數據的。
Oracle 10gR2 的TDE 特性,對於防止機密信息的洩漏能起到事半功倍的作用!
–The End–

  • Share/Bookmark

如何保持Oracle數據庫的優良性能

Oracle數據庫以其高可靠性、安全性、可兼容性,得到越來越多的企業的青睞。如何使Oracle數據庫保持優良性能,這是許多數據庫管理員關心的問題,根據筆者經驗建議不妨針對以下幾個方面加以考慮。

一、分區
根據實際經驗,在一個大數據庫中,數據空間的絕大多數是被少量的表所佔有。為了簡化大型數據庫的管理,改善應用的查詢性能,一般可以使用分區這種手段。所謂分區就是動態表中的記錄分離到若干不同的表空間上,使數據在物理上被分割開來,便於維護、備份、恢復、事務及查詢性能。當使用的時候可建立一個連接所有分區的視圖,使其在邏輯上仍以一個整體出現。

1.建立分區表

Create table Employee(
EmpNo varchar2(10) primary key,
Name varchar2(30),
DeptNo Number(2)

Partition by range(DeptNo)
(partition PART1 values less than (11)
tablespace PART1_TS,
partition PART2 values less than(21)
tablespace PART2_TS,
partition PART3 valuse less than(31)
tablespace PART3_TS
partition PART4 values less than(MAXVALUE)
tablespace PART4_TS
);
表Employee依據DeptNo列進行分區。

2.分區索引

Create index Employee_DeptNo on Employee (DeptNo)local(
partition PART1 tablespace PART1_NDX_TS,
partition PART2 tablespace PART2_NDX_TS,
partition PART3 tablespace PART3_NDX_TS,
partition PART4 tablespace PART4_NDX_TS,
);
當分區中出現許多事務並且要保證所有分區中的數據記錄的惟一性時採用全局索引,在建立全局索引時,Global子句允許指定索引的範圍值,這個範圍值可以不同於表分區的範圍值。只有建立局部索引才會使索引分區與表分區間建立起一一對應關係。因此,在大多數情況下,應該使用局部索引分區。若使用了此索引,分區就能夠很容易地將索引分區與表分區建立關聯,局部索引比全局索引更易於管理。

3.分區管理

根據實際需要,還可以使用Alter table命令來增加、刪除、交換、移動、修改、重命名、劃分、截短一個已存在分區的結構。

二、重建索引
如果表中記錄頻繁地被刪除或插入,儘管表中的記錄總量保持不變,索引空間的使用量會不斷增加。雖然記錄從索引中被刪除,但是該記錄索引項的使用空間不能被重新使用。因此,如果表變化不定,索引空間量會不斷增加,不論表中記錄數量是否增加,只是因為索引中無效空間會增加。
要回收那些曾被刪除記錄使用的空間,需要使用Alter index rebuild命令。可以做一個定期運行的批處理程序,來重建最活動表的索引。這個批處理程序可以在空閒時運行,以避免該程序與其他應用程序衝突。若能堅持索引的這一程序規劃,便可以及時回收那些未使用空間,提高空間利用率。

三、段的碎片整理
當生成一個數據庫對象時(一個表或一個索引),通過用戶缺省值或指定值來為它指定表空間。一個在表空間中生成的段,用於存儲對象的相關數據。在段被關閉、收縮、截斷之前,段所分配的空間將不被釋放。

一個段是由范圍組成,而范圍是由相鄰的Oracle塊組成。一旦存在的範圍不能再存儲新的數據,這個段就會去獲得新的範圍,但並不要求這些範圍是彼此相鄰的。這樣的擴展會一直繼續下去,直到表空間中的數據文件不能提供更多的自由空間,或者範圍數量已達到極限。
 
因此,一個碎片太多的數據段,不僅會影響運行,也會引發表空間中的空間管理問題。所以,每個數據段只含有一個範圍是十分有益的。借助監控系統,可以通過檢查DBA_SEGMENTS數據字典視圖來了解哪些數據庫對象含有10個或更多範圍的段,確定其數據段碎片。

若一個段的碎片過多,可用兩種方法解決:
1.用正確的存儲參數建立一個新表,將舊表中的數據插入到新表中,再刪除舊表;
2.利用Export/Import工具。

如:exp system/manager file=exp.dmpcompress=Y grants=Y indexes=Y
tables=(T1,T2)
若輸出成功,進入Oracle,刪除上述表。
注:compress=Y表示將在輸出過程中修改它們的存儲參數。
imp system/manager file=exp.dmp commit=Y buffer=64000 full=Y

四、自由范圍的碎片整理
表空間中的一個自由范圍是表空間中相連的自由(空間)塊的集合。當一個段關閉時,它的範圍將被釋放,並被標記為自由范圍。然而,這些自由范圍再也不能與相鄰的自由范圍合併,它們之間的界線始終存在。但是當表空間的缺省值pctincrease設置不是0時,SMON後台進程會定期將這些相鄰的自由范圍合作。若pctincrease設置為0,那麼相鄰自由范圍不會被數據庫自動合併。但可以使用Alter table命令”coalesce”選項,來強迫進行相鄰自由范圍的合併。

不進行自由范圍合併,在日後的空間請求中,會影響到表空間中的空間分配。當需要一個足夠大的範圍時,數據庫並不會合併相鄰的自由范圍,除非沒有其他選擇。這樣,當表空間中前面較小的自由范圍已被使用時,將使用表空間中後面部分最大的一個自由范圍。結果,會因為沒有足夠多的使用空間,從而導致表空間需求的矛盾。由於這樣的情況出現,使數據庫的空間分配距理想越來越遠。自由空間碎片常會出現在那些經常關閉又重新生成的數據庫表和索引中。

在理想的Oracle表空間中,每一個數據庫對象存儲在一個單獨的範圍中,並且所有有效自由空間集中在一個巨大而連續的範圍中。這樣,在一個對象需要附加存儲空間時,可以在增加獲取足夠大自由空間的可能性的同時,最小化空間中的循環調用,提高自由空間使用率。

  • Share/Bookmark