當前位置:首頁 » 數據倉庫 » oracle資料庫技術介紹
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oracle資料庫技術介紹

發布時間: 2023-03-26 15:52:38

『壹』 Oracle大型資料庫系統的介紹

本書以AIX UNIX平台為主線,以其他UNIX系統為參照,描述了資料庫系統Oracle 10g、Oracle 11g的構架方法,說明了該資料庫在AIX平台常用的管理內容,提供了AIX上實施Oracle集群的環境要素和實施方法,分析了伺服器綜合容災的工程手段和技術方法,綜合了在AIX系統上優化Oracle的諸多做法和要點。最後,本書還以Sybase ASE資料庫系統作為對比,論述了Oracle在AIX上的特徵。

『貳』 Oracle資料庫是什麼

ORACLE是一種適用於大型、中型和微型計算機的關系資料庫管理系統,它使用sql(Structured guery language)作為它的資料庫語言。

SQL主要包括數據定義、數據操縱(包括查詢)和數據控制等三方面功能。SQL是一種非過程化程度很高的語言,用戶只需說明"干什麼"而無需具體說明"怎麼干"語言簡潔、使用方便功能強大,集聯機交互與嵌入於一體,能適應廣泛的使用環境。ORACLE資料庫由三種類型的文件組成:資料庫文件、日誌文件和控制文件。

數據字典是由ORACLE自動建立並更新的一組表,這些表中記錄用戶的姓名、描述表和視圖以及有關用戶許可權等的信息。數據字典是只讀的,只允許查詢。也就是說數據字典是一種資料庫資源,每個用戶都可以訪問數據字典,DBA可通過數據字典來監視ORACLERDBMS的使用,並幫助用戶完成其應用。ORACLE RDBMS本身也要利用資料庫字典來管理和控制整個資料庫。

提起資料庫,第一個想到的公司,一般都會是Oracle。該公司成立於1977年,最初是一家專門開發資料庫的公司。

Oracle在資料庫領域一直處於領先地位。1984年,首先將關系資料庫轉到了桌面計算機上。然後,Oracle的下一個版本,版本5,率先推出了分布式資料庫、客戶/伺服器結構等嶄新的概念。Oracle的版本6首創行鎖定模式以及對稱多處理計算機的支持……最新的Oracle8主要增加了對象技術,成為關系-對象資料庫系統。目前,ORACLE產品覆蓋了大、中、小型機等幾十種機型,Oracle資料庫成為世界上使用最廣泛的關系數據系統之一。

『叄』 資料庫oracle簡介

Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關系資料庫管理系統。它是在資料庫領域一直處於領先地位的產品。可以說Oracle資料庫系統是目前世界上流行的關系資料庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的 適應高吞吐量的資料庫解決方案。

ORACLE資料庫系統是美國ORACLE公司(甲骨文)提供的以分布式資料庫為核心的一組軟體產品,是目前最流行的客戶/伺服器(CLIENT/SERVER)或B/S體系結構的資料庫之一。ORACLE資料庫是目前世界上使用最為廣泛的資料庫管理系統,作為一個通用的資料庫系統,它具有完整的數據管理功能;作為一個關系資料庫,它是一個完備關系的產品;作為分布式資料庫它實現了分布式處理功能。

特點

1、完整的數據管理功能:[2]

1)數據的大量性

2)數據的保存的持久性

3)數據的共享性

4)數據的可靠性

2、完備關系的產品:

1)信息准則---關系型DBMS的所有信息都應在邏輯上用一種方法,即表中的值顯式地表示;

2)保證訪問的准則

3)視圖更新准則---只要形成視圖的表中的數據變化了,相應的視圖中的數據同時變化

4)數據物理性和邏輯性獨立准則

3、分布式處理功能:

ORACLE資料庫自第5版起就提供了分布式處理能力,到第7版就有比較完善的分布式資料庫功能了,一個ORACLE分布式資料庫由oraclerdbms、sql*Net、SQL*CONNECT和其他非ORACLE的關系型產品構成。

4、用ORACLE能輕松的實現數據倉庫的操作。

這是一個技術發展的趨勢,不在這里討論。

優點

■ 可用性強

■ 可擴展性強

■ 數據安全性強

■ 穩定性強

『肆』 Oracle系統的簡介

Oracle是由甲骨文公司開發出來的,並於1989年正式進入中國市場,成為第一家進入中國的世界軟體巨頭。當然,當時的Oracle尚名不見經傳,由Oracle開發的商用關系型資料庫技術即年開始服務於中國用戶。1991年7月,Oracle在北京建立獨資公司。Oracle資料庫,是積聚了眾多領先性的資料庫系統,在集群技術、高可用性、商業智能、安全性、系統管理等方面都領跑業界。
與Oracle資料庫基本同時期的還有informix資料庫系統。兩者使用的用戶有所側重。Oracle資料庫系統銀行業使用較多,informix資料庫系統,通訊業使用較多。
由於ORACLE資料庫產品是當前資料庫技術的典型代表,她的產品除了資料庫系統外,還有應用系統、開發工具等。剛接觸Oracle的人員都有這樣的感覺:Oracle的產品太多,每個產品內容精深,不知道從哪兒開始學才好。為了用少量時間更好地理解和使用oracle資料庫系統,有必要對oracle的一些基本術語及概念進行了解,下面給出一些在管理中經常用到的概念和術語,供初學者快速了解Oracle資料庫系統提供方便。
ORACLE7和ORACLE8
ORACLE7是一種完全的關系資料庫系統,它不支持面向對象。 ORACLE8 則是一個引入面向對象的資料庫系統,它既非純的面向對象的資料庫也非純的關系資料庫,它是兩者的結合,因此叫做「對象關系資料庫」。
ORACLE8和ORACLE8i
在ORACLE8 的後來版本中不斷作過多次的完善,出現 ORACLE 8.0.X 版本。然而1998年初發行(推出)的 ORACLE 8I 可以被看作是 ORACLE 8 的功能擴展集。 由於ORACLE 8I 比 ORACLE 8 提供了更多的功能,它除了共同的RDBMS功能外,還提供了許多與INTERNET 有關的能力,最重要的是它將 JAVA 集成為一種內部的數據語言,這種語言可充當或替代品,而且它還集成了一個WEB伺服器和開發平台(Web DB )。對ORACLE 8.0.x 來說只到 ORACLE 8.0.5 版本就終止了,接著就推出了 ORACLE8i 8.1.5版本,ORACLE8i 8.1.5版本也經常被稱為Release 1;而ORACLE8i 8.1.6版本被稱為Release 2;ORACLE8i 8.1.7版本被稱為Release 3。
ORACLE8i和ORACLE9i
在正式進入21世紀前的2000年年底,ORACLE公司正式發布了ORACLE 9i新資料庫系統。原先預料可能會有ORACLE 8i V8.1.8等版本,但ORACLE8i版本只推出8.1.7就被Oracle9i所代替。ORACLE公司和其它的軟體公司一樣,為了搶占市場,不再願意在原來版本上再作更多的改進和優化工作,而是直接的推出新產品這樣一種策略。ORACLE9i 與ORACLE8i 比較,ORACLE 9i 主要包括下面三大部分:
l資料庫核心(Database ) l應用伺服器(Application Server )
l 開發工具集(Developer Suite ) Oracle9i 主要焦點(Oracle9i Focus ):
l電子商務智能化( E-Business Intelligence )。
l應用開發( Applications Development )
l應用主機( Applications Hosting )
l 門戶與內容( Portals and Content )
l 電子商務連續性( E-Business Continuity ) Oracle9i 為了結合 Internet 市場設計。
Oracle9i適合並勝任市場上所有的苛刻要求。
l Oracle9I實時應用( Oracle9i Real Application)
l Oracle9I高可用性(Oracle9i High Availability) l Oracle9I系統管理( Oracle9i Systems Management ) l Oracle9I 安全( Oracle9i Security)
Oracle9i資料庫服務(Oracle9i Database Services):
l商業智能與數據倉庫( Business Intelligence and Data Warehousing)
l Oracle9I動態服務( Oracle9i Dynamic Services)
lOracle9I JAVA 和XML(Oracle9i Java and XML)l 電子商務集成(E-Business Integration)
ORACLE OAS和ORACLE iAS
ORACLE公司的iAS 的早期版本是 ORACLE Web Server ,後來第4版改名為ORACLE APPLICATION SERVER ,2000年底前又改名為 ORACLE9i Internet Application Server(ORACLE iAS)。iAS可以與ORACLE8i 或ORACLE9i 結合在一起的綜合開發工具。為創建和部署任何基於網路的應用程序提供了一個完整的Internet 平台,iAS包括了門戶、事務應用、商業智能工具、無線上網應用和企業集成等。 Oracle Internet Application Server 提供了行業中最全面的中間層產品,包括通信、表示、商業邏輯、數據緩存和系統服務等。
1.通信服務: 基於Apache的ORACLE HTTP Server,主要包括下面模塊: mod_jserv:將對servlet 的HTTP請求分發到Oracle iAS 的Servlet 引擎。 Mod_perl:將perl 程序的HTTP請求分發到Apache Web Server 的Perl Interpreter。 Mod_ssl:提供基於SSL證書的公共密鑰,它被用來在客戶端和Apache Server 之間進行加密通信。 Mod_plsql:Oracle 專用模塊,用來將HTTP請求傳到資料庫內的PL/SQL和Java存儲過程。
2. 表示服務 提供下面方法進行內容表示: Oracle portal(Oracle 門戶) Apache Jserver (Apache Java 伺服器) Perl Interpreter( Perl解釋程序) Oracle JavaServer Pager(JSP) Oracle PL/SQL Server Pages(PSP)
3.商業邏輯服務 可提供以下服務組件: Oracle8i JVM( Java虛擬機) Oracle8i PL/SQL Java 商業組件(BC4J) Form Service Report Service Discoverer Viewer
4.數據管理服務 Oracle 8i cache
5.系統服務 Oracle Enterprise Manager(Oracle企業管理器) Oracle Advanced Security (Oracle 高級安全性) Developer's KITS(開發工具),
包括:l Oracle database client developer's Kit l Oracle XML developer's Kit(XDK) l Oracle LDAP developer's Kit
ORACLE Application R11i
Oracle 公司除了提供完美的資料庫系統外,也提供完整的解決方案的套件,即全套應用系統,通常稱作 Oracle Application R11i。它是一全面集成的電子商務套件。它包括:
1.數據倉庫平台
Oracle 8i 企業級資料庫伺服器
Oracle Warehouse Builder(數據倉庫構造器)
2.商業智能工具集
Oracle Discoverer
Oracle Express產品系列
Oracle darwin
3.Oracle 金融服務應用 l 績效管理 l客戶關系管理l 風險管理
4.ORACLE財務系統基於Internet 的財務管理系統包括下面模塊:
商業智能管理
預算管理
合並管理
現金預測管理
員工費用管理
Oracle 財務分析系統
Oracle項目管理系統
工作流程管理
預警系統。

『伍』 詳細介紹Oracle資料庫的聚簇技術

什麼是聚簇

聚簇是根據碼值找到數據的物理存儲位置 從而達到快速檢索數據的目的 聚簇索引的順序就是數據的物理存儲順序 葉節點就是數據節點 非聚簇索引的順序與數據物理排列順序無關 葉節點仍然是索引節點 只不過有一個指針指向對應的數據塊 一個表最多隻能有一個聚簇索引

使用 Oracle 聚簇索引

聚簇是一種存儲表的方法 這些表密切相關並經常一起連接進磁碟的同一區域 例如 表 BOOKSHELF 和BOOKSHELF_AUTHOR 數據行可以一起插入到稱為簇(Cluster)的單個區域中 而不是將兩個表放在磁碟上的不同扇區上 簇鍵(Cluster Key)可以是一列或多列 通過這些列可以將這些表在查詢中連接起來(例如 BOOKSHELF表和BOOKSHELF_AUTHOR表中的 Title列) 為了將表聚集在一起 必須擁有這些將要聚集在一起的表

下面是create cluster命令的基本格式

create cluster (column datatype [ column datatype] ) [other options];

cluster的名字遵循表命名約定 column datatype是將作為簇鍵使用的名字和數據類型 column的名字可以與將要放進該簇中的表的一個列名相同 或者為其他有效名字 下面是一個例子

create cluster BOOKandAUTHOR (Col VARCHAR ( ));

這樣就建立了一個沒有任何內容的簇(象給表分配了一塊空間一樣) COL 的使用對於簇鍵是不相乾的 不會再使用它 但是 它的定義應該與要增加的表的主鍵相符 接下罩信來 建立包含在該簇中的表

create table BOOKSHELF (Title VARCHAR ( ) primary key Publisher VARCHAR ( ) CategoryName VARCHAR ( ) Rating VARCHAR ( ) constraint CATFK foreign key (CategoryName) references CATEGORY(CategoryName) ) cluster BOOKandAUTHOR(Title);

在向BOOKSHELF表中插入數據行之前 必須建立一個聚簇索引

create index BOOKandAUTHORndx on cluster BOOKandAUTHOR;

在上面的create table語句中 簇BOOKandAUTHOR(Title)子句放在表的列清單的閉括弧的後面 BOOKandAUTHOR是前面建立的聚簇的名字 Title是將存儲到聚簇Col 中的該表的列 create cluster語句中可能會有多個簇鍵 並且在created table語句中可能有多個列存儲在這些鍵中 請注意 沒有任何語句明確說明Title列進入到Col 中 這種匹配僅僅是通過位滾畝置做到的 即Col 和Title都是在它們各自的簇語句中提到的第一個對象 多個列和簇鍵是第一個與第一個匹配 第二個與第二個匹配 第三個與第三個匹配 等等 現在 添加第二個表到聚簇中

create table BOOKSHELF_AUTHOR (Title VARCHAR ( ) AuthorName VARCHAR ( ) constraint TitleFK Foreign key (Title) references BOOKSHELF(Title) constraint AuthorNameFK Foreign key (AuthorName) references AUTHOR(AuthorName) ) cluster BOOKandAUTHOR (Title);

當這兩個表被聚在一起時 每個唯一的Title在簇中實際只存儲一次 對於每個Title 都從這兩個表中附加列

來自這兩個表的數物備輪據實際上存放在一個位置上 就好像簇是一個包含兩個表中的所有數據的大表一樣

散列聚簇

對於散列聚簇 它只有一個表 它通過散列演算法求出存儲行的物理存儲位置 從而快速檢索數據 創建散列聚簇時要指定碼列的數據類型 數據行的大小及不同碼值的個數 如果碼值不是平均分布的 就可能有許多行存儲到溢出塊上 從而會降低查詢該表的SQL語句的性能

散列聚簇被用在總是通過主鍵查詢數據的情況 例如要從表 T 查詢數據並且查詢語句總是是這樣

select * from T where id = :x;

這時散列聚簇是一個好的選擇 因為不需要索引 Oracle 將通過散列演算法得到值 :x 所對應的物理地址 從而直接取到數據 不用進行索引掃描 只通過散列值進行一次表訪問

散列聚簇語法示例

lishixin/Article/program/Oracle/201311/18689

『陸』 ORACLE資料庫結構的簡介

關於ORACLE資料庫結構的簡介

ORACLE的資料庫結構大家都了解嗎?如果不了解,下面我為大家整理了關於ORACLE資料庫結構簡介的文章,希望能為你提供幫助:

一、物理結構:

1、數據文件:ORACLE資料庫包含若干數據文件,數據文件存儲資料庫數據,包括表、索引等等。數據文件的幾個特點:

1)一個數據文件只允許分配給一個資料庫

2)數據文件可設置為自動擴展

3)一個或多個數據文件構成表空間

在進行資料庫操作的時候,資料庫先從內存尋找要操作的數據,如果沒有找到的話,再從數據文件取出數據放在內存中,然後才對內存中的數據進行相關的操作。操作完的數據並沒有立即寫到數據文件中(這樣減少了磁碟的IO),而是放在內存中,然後由DBWn進程決定何時批量寫入數據文件。

2、控制文件:每一個資料庫都有一個或多個控制文件,控制文件包含了資料庫的物理結構,包括:

1)資料庫名

2)數據文件名及位置

3)重做日誌文件名及位置

4)資料庫的建立時間等等

一般一個資料庫都有若干個控制文件鏡像。資料庫在打開的時候(ALTER

DATABASE OPEN),會讀取控制文件中的信息來打開資料庫。當資料庫的物理結構發生變化的時候,比如增加一個數據文件、一組重做日誌等等,控制文件都會自動地做相應的修改。在資料庫物理結構發生變化後,最好重新備份一下控制文件,用於資料庫恢復。

3、重做日誌文件:重做日誌中記錄了數據的變化。一般一個資料庫都會有兩到三組重做日誌文件。同一日誌組的鏡像最好分布於不同的磁碟上。

4、歸檔日誌:當資料庫啟動歸檔的時候,重做日誌會被自動歸檔到指定的位置。

5、初始化參數文件:包含了資料庫啟動時的配置信息

6、警告和跟蹤日誌文件

1)跟蹤文件:每一個後台進程都有一個單獨的'跟蹤文件,比如當系統發現某一個進程有問題的時候,相關的信息就會寫到相應的跟蹤文件中。可以從資料庫的跟蹤文件來發現和調試資料庫的錯誤。

2)警告文件,也叫警告日誌。是一個特別的跟蹤文件,它記錄著資料庫啟動、運行中的相關信息,它是按時間順序進行記錄的。

7、備份文件

二、邏輯結構

1、表空間:相關邏輯對象的集合。在oracle10g中,在創建資料庫的時候就自動創建了SYSTEM和SYSAUX表空間。

2、數據塊:數據存儲在數據塊中,一個數據塊的大小(DB_BLOCK_SIZE)由操作系統塊來決定。可以指定5種,分別為2K、4K、8K、16K、32K。

3、區:一系列連續的數據塊組成區,區存儲特定類型的數據,比如索引,表等等。

4、段:由一系列區組成段。

1)數據段:對於每一個非聚集表有一數據段,表的所有數據存放在該段。每一聚集有一個數據段,聚集中每一個表的數據存儲在該段中。分區表中的每一個分區有一個數據段,分區中的數據存儲在該段中。

2)索引段:每一個索引有一索引段,存儲索引數據。分區索引中的每一分區有一個索引段。

3)回滾段:用於臨時存儲要撤消的信息,這些信息用於生成讀一致性資料庫信息,在資料庫恢復時使用,回滾未提交的事務。系統回滾段用於處理系統事務,不建議用戶使用系統回滾段來做其它操作。

4)臨時段:當一個SQL語句需要臨時工作區時,由ORACLE建立臨時段。當語句執行完畢,臨時段的區退回給系統。

;

『柒』 Oracle資料庫基本知識

Oracle資料庫基本知識

Oracle Database,又名OracleRDBMS,或簡稱Oracle。是甲骨文公司的一款關系資料庫管理系統。本文為大家分享的是Oracle資料庫的基本知識,希望對大家有所幫助!

它是在資料庫領域一直處於領先地位的產品。可以說Oracle資料庫系統是目前世界上流行的關系資料庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的適應高吞吐量的資料庫解決方案。

介紹

ORACLE資料庫系統是美國ORACLE公司(甲骨文)提供的以分布式資料庫為核心的一組軟體產品,是目前最流行的客戶/伺服器(CLIENT/SERVER)或B/S體系結構的資料庫之一。比如SilverStream就是基於資料庫的一種中間件。ORACLE資料庫是目前世界上使用最為廣泛的資料庫管理系統,作為一個通用的資料庫系統,它具有完整的數據管理功能;作為一個關系資料庫,它是一個完備關系的產品;作為分布式資料庫它實現了分布式處理功能。但它的所有知識,只要在一種機型上學習了ORACLE知識,便能在各種類型的機器上使用它。

Oracle資料庫最新版本為OracleDatabase 12c。Oracle資料庫12c引入了一個新的多承租方架構,使用該架構可輕松部署和管理資料庫雲。此外,一些創新特性可最大限度地提高資源使用率和靈活性,如Oracle Multitenant可快速整合多個資料庫,而Automatic Data Optimization和Heat Map能以更高的密度壓縮數據和對數據分層。這些獨一無二的技術進步再加上在可用性、安全性和大數據支持方面的主要增強,使得Oracle資料庫12c 成為私有雲和公有雲部署的理想平台。

就業前景

從就業與擇業的角度來講,計算機相關專業的大學生從事oracle方面的技術是職業發展中的最佳選擇。

其一、就業面廣:ORACLE幫助拓展技術人員擇業的廣度,全球前100強企業99家都在使用ORACLE相關技術,中國政府機構,大中型企事業單位都能有ORACLE技術的工程師崗位,大學生在校期間興趣廣泛,每個人興趣特長各異,不論你想進入金融行業還是電信行業或者政府機構,ORACLE都能夠在你的職業發展中給你最強有力的支撐,成為你最貼身的金飯碗。

其二、技術層次深:如果期望進入IT服務或者產品公司,Oracle技術能夠幫助提高就業的深度。Oracle技術已經成為全球每個IT公司必選的軟體技術之一,熟練掌握Oracle技術能夠為從業人員帶來技術應用上的優勢,同時為IT技術的深入應用起到非常關鍵的作用。掌握 Oracle技術,是IT從業人員了解全面信息化整體解決方案的基礎。

其三、職業方向多:Oracle資料庫管理方向、Oracle開發及系統架構方向、Oracle數據建模數據倉庫等方向。

Oracle資料庫漏洞分析:無需用戶名和密碼進入你的資料庫

一般性的資料庫漏洞,都是在成功連接或登錄資料庫後實現入侵;本文介紹兩個在2012年暴露的Oracle漏洞,通過這兩種漏洞的結合,可以在不掌握用戶名/密碼的情況下入侵Oracle,從而完成對數據的竊取或者破壞。這兩個漏洞就是CVE-2012-1675和CVE-2012-3137。

引言

國內外很多重要的系統都採用Oracle作為數據存儲的資料庫;在Oracle中存儲著企業或政府大量敏感的信息,在金錢或政治的誘導下,內外部黑客會想法利用管理、網路、主機或資料庫的自身漏洞嘗試入侵到資料庫中,以達到自身的目的。

本文的作者通過對Oracle倆種漏洞的組合研究,設計了一套在不掌握用戶名/密碼的方式入侵到Oracle中;這種方法,比傳統的需要登錄到資料庫中的入侵方法,具有更大的安全隱患和破壞性。

本文希望通過對這兩個漏洞和攻擊方法的介紹,能夠引起相關人員的重視,完善對資料庫安全的措施。

1、概要介紹

本文提供的方法是基於漏洞CVE-2012-1675和CVE-2012-3137對oracle資料庫的攻擊測試的方法。

CVE-2012-1675漏洞是Oracle允許攻擊者在不提供用戶名/密碼的'情況下,向遠程“TNS Listener”組件處理的數據投毒的漏洞。攻擊者可利用此漏洞將資料庫伺服器的合法“TNS Listener”組件中的數據轉向到攻擊者控制的系統,導致控制遠程組件的資料庫實例,造成組件和合法資料庫之間的中間人攻擊、會話劫持或拒絕服務攻擊。

CVE-2012-3137漏洞是Oracle Database 10g/11g身份驗證協議實現中存在一個設計缺陷,攻擊者無需認證即可遠程獲取資料庫用戶密碼哈希相關數據,從而可以離線暴力破解用戶密碼,進一步控制資料庫系統。

我們通過如下的步驟和過程可以實現對Oracle的入侵:

(1)利用CVE-2012-1675進行TNS劫持,在監聽下利用遠程注冊,注冊同名資料庫實例;

(2)新登陸的用戶,在TNS的負載均衡策略下,有可能流量登錄到偽造的監聽服務上;

(3)該監聽服務對用戶的登陸過程進行監控,並將相關數據流量轉發到真實的資料庫上;

(4)利用CVE-2012-3137獲得通訊過程中的認證相關信息;

(5)對認證相關信息進行離線的暴力破解,獲得登陸的密碼;

(6)試用破解的用戶名/密碼登陸Oracle,完成對Oracle中數據的訪問;

2、通過CVE-2012-1675進行TNS劫持

該漏洞存在於Oracle的所有版本,並且Oracle至今僅是發布了警告性通知,並未提供解決方案。

要想利用CVE-2012-1675漏洞做TNS劫持,首先需要了解TNS機制。如下圖所示oracle 通過在本地解析網路服務名到目標主機IP地址,服務埠號,目標資料庫名,把這些信息發送到oracle伺服器端監聽程序,最後再由監聽程序遞送DBMS。

其中關鍵點在於監聽會按照目標資料庫名遞送到名稱正確的資料庫。那麼如果一個監聽下有2個同名資料庫。監聽將自動按照負載均衡把這次訪問發送到負載低的資料庫上,進行連接訪問。資料庫注冊到監聽的方法就決定了,能否同時注冊同名資料庫在同一個監聽下。注冊方式分為本地注冊和遠程注冊,通過修改參數可以調整為遠程注冊。

下面是一段可用的TNS劫持的過程:

1.在劫持機上創建一個和目標資料庫實例同名的資料庫實例。

2.在劫持機上修改 tnsnames.ora 文件

添加

listener_name=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=tcp)(HOST=目標機器IP)(PORT=目標機器埠)))

3.在劫持機上用SQL*Plus 順序執行下面步驟。

1.$ sqlplus / as sysdba

2. SQL> ALTER SYSTEM SETREMOTE_LISTENER='LISTENER_NAME';

3. SQL> ALTER SYSTEM REGISTER;

4.多個客戶端,向資料庫發起登錄。會劫持到一部分客戶端的登錄信息。

最終達到效果如下圖所示:

按照猜想同一個監聽下有2個同名實例。客戶端訪問監聽,監聽按照客戶端中的資料庫名信息分配資料庫,由於監聽下有2個同名資料庫,客戶端鏈接很可能會被分配到劫持者的資料庫實例下,再通過配置劫持者的本地監聽把客戶端請求指回原資料庫。結構圖如下:

測試客戶端鏈接196次。目標資料庫實例獲得113次,劫持資料庫實例獲得83次基本滿足負載均衡的假設。(註上面實例是local server 下面實例是 remote server)

通過以上方式我們可以截獲約一半左右客戶端發送到伺服器的合法鏈接。其中獲得了伺服器IP、埠號、資料庫位置、實例名、登錄用戶名等一系列明文信息和4組密文信息(AUTH_SESSKEY,AUTH_SESSKEY_CLIENT,AUTH_PASSWORD,AUTH_VFR_DATA)。

3、通過CVE-2012-3137進行密碼破解

CVE-2012-3137受影響的資料庫版本有11.2.0.3,11.2.0.2,11.1.0.7,有使用了SHA-1加密演算法的10.2.0.5和10.2.0.4,還有使用了SHA-1的10.2.0.3(運行在z/OS下)版本。

雖然這個漏洞在11.2.0.3中已經解決,但是僅僅資料庫客戶端和伺服器都升級到11.2.0.3並且sqlnet.ora文件中增加SQLNET.ALLOWED_LOGON_VERSION=12才有效。

正如CVE-2012-3137所描述Oracle為了防止第三方通過網路獲取登錄信息包。而對密碼進行了加密處理。本部分只以oracle11.1密碼如何破解為例進行說明。

在發起連接之後(oracle牽手完成),客戶端和伺服器經過協商確定要使用的驗證協議。要完成這個任務,客戶端首先向資料庫發送一個包。包中包含客戶端主要信息和所請求的加密方式。資料庫確認加密方式有效後,發送一個確認服務包如下圖所示:

在通過安全網路服務完成任何所要求的協議之後,資料庫用戶被O3logon(oracle驗證方式) 進行驗證,這個協議執行一個序列來向資料庫證明客戶端擁有密碼。為了避免網路第三方截獲到密碼。首先客戶端發送用戶名到資料庫來表明用戶身份。資料庫端根據加密協議,其中96位的作為資料庫端密鑰,20位的作為偏移量,它對每個連接都是不同的。一個典型的資料庫端發給客戶端的密鑰如下:

AUTH_SESSKEY.....COCDD89FIGODKWASDF……………………

客戶端根據加密演算法向伺服器端發送96位的客戶端密鑰和64位的密碼密鑰。伺服器端計算客戶端傳入的密碼密鑰。如果計算後密碼密文和資料庫中存儲的16位密碼密文一致則驗證通過。

根據這個過程可知上面TNS劫持包中取得的加密信息:AUTH_SESSKEY,AUTH_SESSKEY_CLIENT,AUTH_PASSWORD,AUTH_VFR_DATA這四個值是解密的關鍵。我們把他們按照SHA1,MD5,AES192進行一系列處理。最終通過數據字典碰撞得到密碼明文。

下面這段網上公布的一段示例代碼,這段代碼與筆者的思路不完全相同,但也能大概地說明這個漏洞的攻擊過程:

import hashlib

from Crypto.Cipher import AES

def decrypt(session,salt,password):

pass_hash= hashlib.sha1(password+salt)

key =pass_hash.digest() + 'x00x00x00x00'

decryptor= AES.new(key,AES.MODE_CBC)

plain =decryptor.decrypt(session)

returnplain

session_hex ='6EAAB5422553A7598143E78767'

salt_hex = 'A7193E546377EC56639E'

passwords = ['test','password',''oracle','demo']

for password in passwords:

session_id= decrypt(session_hex.decode('hex'),salt_hex.decode('hex'),password)

print'Decrypted session_id for password "%s" is %s' %(password,session_id.encode('hex'))

ifsession_id[40:] == 'x08x08x08x08x08x08x08x08':

print'PASSWORD IS "%s"' % password

break

4、建議的預防措施

根據以上兩段分析,我們可以有如下的預防措施:

(1)在條件許可的情況下,對Oracle進行補丁升級,對Oracle打cpuoct2012-1515893補丁;注意對於cpuoct2012-1515893補丁要求伺服器端和應用伺服器端同時升級,否則應用系統將無法訪問Oracle;

(2)若無法對Oracle升級,要購買或安裝具備虛擬補丁功能的資料庫安全產品,防止對CVE-2012-3137和CVE-2012-1675的利用;

(3)建立足夠強健的口令,不要使用8位以下密碼,或者字典庫中的口令。

;

『捌』 Oracle資料庫的介紹

ORACLE資料庫系統是美國ORACLE公司(甲骨文)提供的以分布式資料庫為核心的一組軟體產品,是目前最流行的客戶/伺服器(CLIENT/SERVER)或B/S體系結構的資料庫之一。比如SilverStream就是基於資料庫的一種中間件。ORACLE資料庫是目前世界上使用最為廣泛的資料庫管理系統,作為一辯沒個通用的資料庫系統,它具有完整的數據管理功能;作為一個關系資料庫,它是一個完備關系的產品;此段作為分布式資料庫它實現了分布式處理功能。但它的所有知識,只要在一種機型上學習了ORACLE知識,便能在各種類型的機器上使用它。
Oracle資料庫最新版本為Oracle Database 12c。Oracle資料庫12c 引入了一個新的多承租方架構,使用該架構可輕松部署和管理資料庫雲。此外,一些創新特性攜扒納可最大限度地提高資源使用率和靈活性,如Oracle Multitenant可快速整合多個資料庫,而Automatic Data Optimization和Heat Map能以更高的密度壓縮數據和對數據分層。這些獨一無二的技術進步再加上在可用性、安全性和大數據支持方面的主要增強,使得Oracle資料庫12c 成為私有雲和公有雲部署的理想平台。