日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Oracle8.0.6數(shù)據(jù)庫(kù)詳解與應(yīng)用指導(dǎo)(oracle8.0.6數(shù)據(jù)庫(kù))

Oracle 8.0.6數(shù)據(jù)庫(kù)詳解與應(yīng)用指導(dǎo)

在都江堰等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需網(wǎng)站策劃,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),成都營(yíng)銷(xiāo)網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,都江堰網(wǎng)站建設(shè)費(fèi)用合理。

Oracle 8.0.6是一個(gè)歷史悠久的數(shù)據(jù)庫(kù)版本,于1999年發(fā)布。雖然現(xiàn)在已經(jīng)被后續(xù)版本所替代,但是了解其特點(diǎn)和使用方法仍具有重要的意義。在本篇文章中,我們將對(duì)Oracle 8.0.6數(shù)據(jù)庫(kù)進(jìn)行詳細(xì)的介紹和應(yīng)用指導(dǎo)。

一、概述

Oracle 8.0.6是Oracle公司的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),提供了一系列的功能和工具,用于存儲(chǔ)和管理大量數(shù)據(jù),并提供高效的數(shù)據(jù)查詢和處理方法。該版本引入了許多新特性,如分區(qū)表、動(dòng)態(tài)SQL、外部表等技術(shù),這些技術(shù)在數(shù)據(jù)庫(kù)的性能和擴(kuò)展方面都有很大的幫助。

二、功能特點(diǎn)

1. 分區(qū)表

Oracle 8.0.6引入了分區(qū)表的概念,使得大型數(shù)據(jù)庫(kù)的管理變得更加容易。分區(qū)表將表數(shù)據(jù)分解成更小的部分,每個(gè)部分可以單獨(dú)管理和查詢,以提高查詢性能和優(yōu)化維護(hù)。分區(qū)表可以按照時(shí)間、地理位置或其他分區(qū)鍵來(lái)分割數(shù)據(jù),同時(shí)還可以支持多級(jí)分區(qū)表。

2. 動(dòng)態(tài)SQL

動(dòng)態(tài)SQL是一種靈活的查詢技術(shù),使用該技術(shù)可以根據(jù)不同的查詢條件生成不同的SQL語(yǔ)句,并在查詢時(shí)進(jìn)行執(zhí)行。Oracle 8.0.6支持通過(guò)PL/SQL語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)SQL。動(dòng)態(tài)SQL在開(kāi)發(fā)中扮演了一個(gè)非常重要的角色,可以增加代碼的可讀性和可維護(hù)性。同時(shí),在查詢大量數(shù)據(jù)時(shí),還可以提高查詢性能。

3. 外部表

外部表是一種新的表類(lèi)型,它允許在Oracle數(shù)據(jù)庫(kù)中生成數(shù)據(jù)的虛擬視圖,并打開(kāi)存儲(chǔ)在外部文件或數(shù)據(jù)庫(kù)中的數(shù)據(jù)。通過(guò)外部表,可以很方便地在Oracle數(shù)據(jù)庫(kù)中訪問(wèn)非Oracle數(shù)據(jù),如CSV文件、TXT文件等。這種技術(shù)優(yōu)化了數(shù)據(jù)交換和數(shù)據(jù)集成的過(guò)程并增強(qiáng)了數(shù)據(jù)的可用性。

三、應(yīng)用指導(dǎo)

1. 安裝和初始化數(shù)據(jù)庫(kù)

在安裝Oracle 8.0.6之前,需要先檢查系統(tǒng)的要求,確認(rèn)該操作系統(tǒng)、磁盤(pán)空間和內(nèi)存是足夠的。安裝過(guò)程可以參考Oracle 8.0.6安裝指南完成。在完成安裝后,需要初始化數(shù)據(jù)庫(kù),以創(chuàng)建必要的系統(tǒng)表和配置參數(shù)。這個(gè)過(guò)程可以通過(guò)運(yùn)行ORADIM命令完成。

2. 創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象

創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象是Oracle的核心工作之一。Oracle 8.0.6數(shù)據(jù)庫(kù)中,支持創(chuàng)建表、視圖、索引、序列、包等多種類(lèi)型的對(duì)象。在創(chuàng)建對(duì)象前,需要先設(shè)計(jì)好對(duì)象的結(jié)構(gòu)和依賴關(guān)系,設(shè)計(jì)非常重要,可以保證數(shù)據(jù)庫(kù)的高效性和安全性。

3. 數(shù)據(jù)庫(kù)管理

數(shù)據(jù)庫(kù)管理是保證Oracle數(shù)據(jù)庫(kù)正常運(yùn)行和維護(hù)的關(guān)鍵。在Oracle 8.0.6中,可以使用SQL*PLUS和Enterprise Manager等工具進(jìn)行數(shù)據(jù)庫(kù)的管理和監(jiān)控。通過(guò)這些工具,可以執(zhí)行SQL查詢、備份和恢復(fù)、性能優(yōu)化等操作,以保證數(shù)據(jù)庫(kù)穩(wěn)定性和安全性。

4. 開(kāi)發(fā)應(yīng)用程序

使用Oracle 8.0.6開(kāi)發(fā)應(yīng)用程序可以采用PL/SQL或其他編程語(yǔ)言訪問(wèn)數(shù)據(jù)庫(kù)。在使用PL/SQL編程時(shí),需要掌握語(yǔ)法規(guī)則和編程技巧。同時(shí),在選擇其他編程語(yǔ)言時(shí),需要學(xué)習(xí)如何使用相應(yīng)的數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序或API進(jìn)行數(shù)據(jù)連接和操作。

四、后續(xù)發(fā)展

Oracle 8.0.6自發(fā)布以來(lái),經(jīng)過(guò)長(zhǎng)期的發(fā)展過(guò)程,已經(jīng)被后續(xù)版本所替代。Oracle 9i、10g、11g、12c等多個(gè)版本不斷引入新的技術(shù)和特性,以滿足不同場(chǎng)景下的需求。同時(shí),隨著云計(jì)算和大數(shù)據(jù)時(shí)代的到來(lái),數(shù)據(jù)庫(kù)技術(shù)也在不斷發(fā)展和創(chuàng)新。因此,了解Oracle數(shù)據(jù)庫(kù)的發(fā)展和新技術(shù)具有重要的意義。

通過(guò)對(duì)Oracle 8.0.6的介紹和應(yīng)用指導(dǎo),我們可以了解Oracle數(shù)據(jù)庫(kù)的基本概念和核心技術(shù)。Oracle作為一種重要的數(shù)據(jù)庫(kù)管理系統(tǒng),在信息時(shí)代中扮演著至關(guān)重要的角色。我們應(yīng)該掌握數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí),了解其應(yīng)用方法和最新發(fā)展,以更好地利用數(shù)據(jù)庫(kù)技術(shù)。

相關(guān)問(wèn)題拓展閱讀:

  • 創(chuàng)建一個(gè)序列,之一次從5循環(huán)到10,以后再?gòu)?開(kāi)始循環(huán)。如果數(shù)據(jù)的控制文件損壞了,需要如何解決故障。
  • Oracle數(shù)據(jù)庫(kù)基本知識(shí)

創(chuàng)建一個(gè)序列,之一次從5循環(huán)到10,以后再?gòu)?開(kāi)始循環(huán)。如果數(shù)據(jù)的控制文件損壞了,需要如何解決故障。

1、 ORACLE 實(shí)例――包括內(nèi)存結(jié)構(gòu)與后臺(tái)進(jìn)程 2、 ORACLE 數(shù)據(jù)庫(kù)――物理操作系統(tǒng)文件的 3、 了解內(nèi)存結(jié)構(gòu)的組成 4、 了解后臺(tái)進(jìn)程的作用

1、 Oracle 實(shí)例――包括內(nèi)存結(jié)構(gòu)與后臺(tái)進(jìn)程

2、 Oracle 數(shù)據(jù)庫(kù)――物理操作系統(tǒng)文件的

3、 了解內(nèi)存結(jié)構(gòu)的組成

4、 了解后臺(tái)進(jìn)程的作用

5、 了解數(shù)據(jù)庫(kù)的物理文件

6、 解釋各種邏輯結(jié)構(gòu)

一、Oracle實(shí)例

1、Oracle 實(shí)例

System Global Area(SGA) 和 Background Process 稱為數(shù)據(jù)庫(kù)的實(shí)例。

2、Oracle 數(shù)據(jù)庫(kù)

一系列物理文件的(數(shù)據(jù)文件,控制文件,聯(lián)機(jī)日志,參數(shù)文件等)

3、系統(tǒng)全局共享區(qū)System Global Area(SGA)

System Global Area 是一塊巨大的共享內(nèi)存區(qū)域,他被看做是Oracle 數(shù)據(jù)庫(kù)的一個(gè)大緩沖池,這里的數(shù)據(jù)可以被Oracle的各個(gè)進(jìn)程共用。其大小可以通過(guò)如下語(yǔ)句查看:

SQL> select * from v$sga;

NAME VALUE

—-

Fixed Size 39816

Variable Size

Database Buffers 1.049E+09

Redo Buffers

更詳細(xì)的信息可以參考V$sgastat、V$buffer_pool

主要包括以下幾個(gè)部分:

a、 共享池(Shared pool)

共享池是SGA中最關(guān)鍵的內(nèi)存片段,特別是在性能和可伸縮性上。一個(gè)太小的共享池會(huì)扼殺性能,使系統(tǒng)停止,太大的共享池也會(huì)有同樣的效果,將會(huì)消耗大量的CPU來(lái)管理這個(gè)共享池。不正確的使用共享池只會(huì)帶來(lái)災(zāi)難。共享池主要又可以分為以下兩個(gè)部分:

SQL語(yǔ)句緩沖(Library Cache)

當(dāng)一個(gè)用戶提轎唯交一個(gè)SQL語(yǔ)句,Oracle會(huì)將這句SQL進(jìn)行分析(parse),這個(gè)過(guò)程類(lèi)似于編譯,會(huì)耗費(fèi)相對(duì)較多的時(shí)間。在分析完這個(gè)SQL,Oracle會(huì)把他的分析結(jié)果給保存在Shared pool的Library Cache中,當(dāng)數(shù)據(jù)庫(kù)第二次執(zhí)行該SQL時(shí),Oracle自動(dòng)跳過(guò)這個(gè)分析過(guò)程,從而減少了系統(tǒng)運(yùn)行的時(shí)間。這也是為什么之一次運(yùn)行的SQL 比第二次運(yùn)行的SQL要慢一點(diǎn)的原因。

下面舉例說(shuō)明parse的時(shí)間

SQL> select count(*) fromscpass ;

COUNT(*)

243

Elapsed: 00:00:00.08

這是在Share_pool 和Data buffer 都沒(méi)有數(shù)據(jù)緩沖區(qū)的情況下所用的時(shí)間

SQL> alter system flush SHARED_POOL;

System altered.

清空Share_pool,保留Data buffer

SQL> select count(*) from scpass ;

COUNT(*)

243

Elapsed: 00:00:00.02

SQL> select count(*) from scpass ;

COUNT(*)

243

Elapsed: 00:00:00.00

從兩句SQL 的時(shí)間差上可以看出該SQL 的Parse 時(shí)間約為00:00:00.02

對(duì)于保存在共享池中的SQL語(yǔ)句,可以從V$Sqltext、v$Sqlarea中查詢到,對(duì)于編程者來(lái)說(shuō),要盡量提高語(yǔ)句的重用率,減少語(yǔ)句的分析時(shí)間。一個(gè)設(shè)計(jì)的差的應(yīng)用程序可以毀掉整個(gè)頌此數(shù)據(jù)庫(kù)的Share pool,提高SQL語(yǔ)句的重用率必須先養(yǎng)成良好的變成習(xí)慣,盡量使用Bind變量。

數(shù)據(jù)字典緩沖區(qū)(Data Dictionary Cache)

顯而易見(jiàn),數(shù)據(jù)字典緩沖區(qū)是Oracle特地為數(shù)據(jù)字典準(zhǔn)備的一塊緩沖池,供Oracle內(nèi)部使用,沒(méi)有什么可以閉櫻培說(shuō)的。

b、塊緩沖區(qū)高速緩存(Database Buffer Cache)

這些緩沖是對(duì)應(yīng)所有數(shù)據(jù)文件中的一些被使用到的數(shù)據(jù)塊。讓他們能夠在內(nèi)存中進(jìn)行操作。在這個(gè)級(jí)別里沒(méi)有系統(tǒng)文件,,戶數(shù)據(jù)文件,臨時(shí)數(shù)據(jù)文件,回滾段文件之分。也就是任何文件的數(shù)據(jù)塊都有可能被緩沖。數(shù)據(jù)庫(kù)的任何修改都在該緩沖里完成,并由DBWR進(jìn)程將修改后的數(shù)據(jù)寫(xiě)入磁盤(pán)。

這個(gè)緩沖區(qū)的塊基本上在兩個(gè)不同的列表中管理。一個(gè)是塊的“臟”表(Dirty List),需要用數(shù)據(jù)庫(kù)塊的

書(shū)寫(xiě)器(DBWR)來(lái)寫(xiě)入,另外一個(gè)是不臟的塊的列表(Free List),一般的情況下,是使用最近最少使用 (Least Recently Used,LRU)算法來(lái)管理。塊緩沖區(qū)高速緩存又可以細(xì)分為以下三個(gè)部分(Default pool,Keep pool,Recycle pool)。如果不是人為設(shè)置初始化參數(shù)(Init.ora),Oracle將默認(rèn)為Default pool。由于操作系統(tǒng)尋址能力的限制,不通過(guò)特殊設(shè)置,在32位的系統(tǒng)上,塊緩沖區(qū)高速緩存更大可以達(dá)到1.7G,在64位系統(tǒng)上,塊緩沖區(qū)高速緩存更大可以達(dá)到10G。

c、重做日志緩沖區(qū)(Redo log buffer)

重做日志文件的緩沖區(qū),對(duì)數(shù)據(jù)庫(kù)的任何修改都按順序被記錄在該緩沖,然后由LGWR進(jìn)程將它寫(xiě)入磁盤(pán)。這些修改信息可能是DML語(yǔ)句,如(Insert,Update,Delete),或DDL語(yǔ)句,如(Create,Alter,Drop等)。 重做日志緩沖區(qū)的存在是因?yàn)閮?nèi)存到內(nèi)存的操作比較內(nèi)存到硬盤(pán)的速度快很多,所以重作日志緩沖區(qū)可以加快數(shù)據(jù)庫(kù)的操作速度,但是考慮的數(shù)據(jù)庫(kù)的一致性與可恢復(fù)性,數(shù)據(jù)在重做日志緩沖區(qū)中的滯留時(shí)間不會(huì)很長(zhǎng)。所以重作日志緩沖區(qū)一般都很小,大于3M之后的重作日志緩沖區(qū)已經(jīng)沒(méi)有太大的實(shí)際意義。

d、Java程序緩沖區(qū)(Java Pool)

Java 的程序區(qū),Oracle 8I 以后,Oracle 在內(nèi)核中加入了對(duì)Java的支持。該程序緩沖區(qū)就是為Java 程序保留的。如果不用Java程序沒(méi)有必要改變?cè)摼彌_區(qū)的默認(rèn)大小。

e、大池(Large Pool)

大池的得名不是因?yàn)榇螅且驗(yàn)樗脕?lái)分配大塊的內(nèi)存,處理比共享池更大的內(nèi)存,在8.0開(kāi)始引入。

下面對(duì)象使用大池:

MTS――在SGA的Large Pool中分配UGA

語(yǔ)句的并行查詢(Parallel Executeion of Statements)――允許進(jìn)程間消息緩沖區(qū)的分配,用來(lái)協(xié)調(diào) 并行查詢服務(wù)器

備份(Backup)――用于RMAN磁盤(pán)I/O緩存

4、后臺(tái)進(jìn)程(Background process)

后臺(tái)進(jìn)程是Oracle的程序,用來(lái)管理數(shù)據(jù)庫(kù)的讀寫(xiě),恢復(fù)和監(jiān)視等工作。Server Process主要是通過(guò)他和user process進(jìn)行聯(lián)系和溝通,并由他和user process進(jìn)行數(shù)據(jù)的交換。在Unix機(jī)器上,Oracle后臺(tái)進(jìn)程相對(duì)于操作系統(tǒng)進(jìn)程,也就是說(shuō),一個(gè)Oracle后臺(tái)進(jìn)程將啟動(dòng)一個(gè)操作系統(tǒng)進(jìn)程;在Windows機(jī)器上, Oracle后臺(tái)進(jìn)程相對(duì)于操作系統(tǒng)線程,打開(kāi)任務(wù)管理器,我們只能看到一個(gè)Oracle.EXE的進(jìn)程,但是通過(guò)另外的工具,就可以看到包含在這里進(jìn)程中的線程。

在Unix上可以通過(guò)如下方法查看后臺(tái)進(jìn)程:

ps ?ef | grep ora_

# ps -ef | grep ora_ | grep XCLUAT

OracleSep 02 2:02 ora_dbwr_SID

OracleSep 02 0:03 ora_ckpt_SID

OracleSep 02 2:42 ora_on_SID

OracleSep 02 3:25 ora_lgwr_SID

OracleSep 02 0:01 ora_pmon_SID

a、Oracle系統(tǒng)有5 個(gè)基本進(jìn)程他們是

DBWR(數(shù)據(jù)文件寫(xiě)入進(jìn)程)

LGWR(日志文件寫(xiě)入進(jìn)程)

ON(系統(tǒng)監(jiān)護(hù)進(jìn)程)

PMON(用戶進(jìn)程監(jiān)護(hù)進(jìn)程)

CKPT(檢查點(diǎn)進(jìn)程,同步數(shù)據(jù)文件, 日志文件,控制文件)

b、DBWR

將修改過(guò)的數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)寫(xiě)入對(duì)應(yīng)數(shù)據(jù)文件

維護(hù)系統(tǒng)內(nèi)的空緩沖區(qū)

這里指出幾個(gè)容易錯(cuò)誤的概念:

當(dāng)一個(gè)更新提交后,DBWR把數(shù)據(jù)寫(xiě)到磁盤(pán)并返回給用戶提交完成.

DBWR會(huì)觸發(fā)CKPT 后臺(tái)進(jìn)程

DBWR不會(huì)觸發(fā)LGWR 進(jìn)程

上面的概念都是錯(cuò)誤的.

DBWR是一個(gè)很底層的工作進(jìn)程,他批量的把緩沖區(qū)的數(shù)據(jù)寫(xiě)入磁盤(pán)。和任何前臺(tái)用戶的進(jìn)程幾乎沒(méi)有什么關(guān)系,也不受他們的控制。至于DBWR會(huì)不會(huì)觸發(fā)LGWR和CKPT進(jìn)程,我們將在下面幾節(jié)里討論。

DBWR工作的主要條件如下

DBWR 超時(shí)

系統(tǒng)中沒(méi)有多的空緩沖區(qū)用來(lái)存放數(shù)據(jù)

CKPT 進(jìn)程觸發(fā)DBWR 等

c、LGWR

將重做日志緩沖區(qū)的數(shù)據(jù)寫(xiě)入重做日志文件,LGWR是一個(gè)必須和前臺(tái)用戶進(jìn)程通信的進(jìn)程。當(dāng)數(shù)據(jù)被修改的時(shí)候,系統(tǒng)會(huì)產(chǎn)生一個(gè)重做日志并記錄在重做日志緩沖區(qū)內(nèi)。這個(gè)重做日志可以類(lèi)似的認(rèn)為是以下的一個(gè)結(jié)構(gòu):

SCN=

數(shù)據(jù)塊ID

對(duì)象ID=0801

數(shù)據(jù)行=02

修改后的數(shù)據(jù)=0011

提交的時(shí)候,LGWR必須將被修改的數(shù)據(jù)的重做日志緩沖區(qū)內(nèi)數(shù)據(jù)寫(xiě)入日志數(shù)據(jù)文件,然后再通知前臺(tái)進(jìn)程提交成功,并由前臺(tái)進(jìn)程通知用戶。從這點(diǎn)可以看出LGWR承擔(dān)了維護(hù)系統(tǒng)數(shù)據(jù)完整性的任務(wù)。

LGWR 工作的主要條件如下

用戶提交

有1/3 重做日志緩沖區(qū)未被寫(xiě)入磁盤(pán)

有大于1M 重做日志緩沖區(qū)未被寫(xiě)入磁盤(pán)

超時(shí)

DBWR需要寫(xiě)入的數(shù)據(jù)的SCN號(hào)大于LGWR 記錄的SCN號(hào),DBWR 觸發(fā)LGWR寫(xiě)入

d、ON

工作主要包含

清除臨時(shí)空間

在系統(tǒng)啟動(dòng)時(shí),完成系統(tǒng)實(shí)例恢復(fù)

聚結(jié)空閑空間

從不可用的文件中恢復(fù)事務(wù)的活動(dòng)

OPS中失敗節(jié)點(diǎn)的實(shí)例恢復(fù)

清除OBJ$表

縮減回滾段

使回滾段脫機(jī)

e、PMON

主要用于清除失效的用戶進(jìn)程,釋放用戶進(jìn)程所用的資源。如PMON將回滾未提交的工作,釋放鎖,釋放分配給失敗進(jìn)程的SGA資源。

f、CKPT

同步數(shù)據(jù)文件,日志文件和控制文件,由于DBWR/LGWR的工作原理,造成了數(shù)據(jù)文件,日志文件,控制文件的不一至,這就需要CKPT進(jìn)程來(lái)同步。CKPT會(huì)更新數(shù)據(jù)文件/控制文件的頭信息。

CKPT工作的主要條件如下

在日志切換的時(shí)候

數(shù)據(jù)庫(kù)用immediate ,transaction , normal 選項(xiàng)shutdown 數(shù)據(jù)庫(kù)的時(shí)候

根據(jù)初始話文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET 的設(shè)置的數(shù)值來(lái)確定

用戶觸發(fā)

以下進(jìn)程的啟動(dòng)需要手工配置

g、ARCH

當(dāng)數(shù)據(jù)庫(kù)以歸檔方式運(yùn)行的時(shí)候,Oracle會(huì)啟動(dòng)ARCH進(jìn)程,當(dāng)重做日志文件被寫(xiě)滿時(shí),日志文件進(jìn)行切換,舊的重做日志文件就被ARCH進(jìn)程復(fù)制到一個(gè)/多個(gè)特定的目錄/遠(yuǎn)程機(jī)器。這些被復(fù)制的重做日志文件被叫做歸檔日志文件。

h、RECO

負(fù)責(zé)解決分布事物中的故障。Oracle可以連接遠(yuǎn)程的多個(gè)數(shù)據(jù)庫(kù),當(dāng)由于網(wǎng)絡(luò)問(wèn)題,有些事物處于懸而未決的狀態(tài)。RECO進(jìn)程試圖建立與遠(yuǎn)程服務(wù)器的通信,當(dāng)故障消除后,RECO進(jìn)程自動(dòng)解決所有懸而未決的會(huì)話。

i、服務(wù)進(jìn)程Server Process

服務(wù)進(jìn)程的分類(lèi)

專用服務(wù)進(jìn)程(Dedicated Server Process)

一個(gè)服務(wù)進(jìn)程對(duì)應(yīng)一個(gè)用戶進(jìn)程

共享服務(wù)進(jìn)程(MultiTreaded Server Process)

一個(gè)服務(wù)進(jìn)程對(duì)應(yīng)多個(gè)用戶進(jìn)程,輪流為用戶進(jìn)程服務(wù)。

PGA & UGA

PGA = Process Global Area

UGA = User Global Area

他保存了用戶的變量、權(quán)限、堆棧、排序空間等用戶信息,對(duì)于專用服務(wù)器進(jìn)程,UGA在PGA中分配。對(duì)于多線程進(jìn)程,UGA在Large pool中分配。

j、用戶進(jìn)程User Process

在客戶端,將用戶的SQL 語(yǔ)句傳遞給服務(wù)進(jìn)程

5、一個(gè)貫穿數(shù)據(jù)庫(kù)全局的概念—-系統(tǒng)改變號(hào)SCN(System Change Number)

系統(tǒng)改變號(hào),一個(gè)由系統(tǒng)內(nèi)部維護(hù)的序列號(hào)。當(dāng)系統(tǒng)需要更新的時(shí)候自動(dòng)增加,他是系統(tǒng)中維持?jǐn)?shù)據(jù)的一致性和順序恢復(fù)的重要標(biāo)志。

a. 查詢語(yǔ)句不會(huì)使SCN增加,就算是同時(shí)發(fā)生的更新,數(shù)據(jù)庫(kù)內(nèi)部對(duì)應(yīng)的SCN也是不同的。這樣一來(lái)就保證了數(shù)據(jù)恢復(fù)時(shí)候的順序。

b. 維持?jǐn)?shù)據(jù)的一致性,當(dāng)一

二、Oracle 數(shù)據(jù)庫(kù)

Oracle數(shù)據(jù)庫(kù)的組成――物理操作系統(tǒng)文件的。主要包括以下幾種。

1、控制文件(參數(shù)文件init.ora記錄了控制文件的位置)

控制文件包括如下主要信息

數(shù)據(jù)庫(kù)的名字,檢查點(diǎn)信息,數(shù)據(jù)庫(kù)創(chuàng)建的時(shí)間戳

所有的數(shù)據(jù)文件,聯(lián)機(jī)日志文件,歸檔日志文件信息

備份信息等

有了這些信息,Oracle就知道那些文件是數(shù)據(jù)文件,現(xiàn)在的重做日志文件是哪些,這些都是系統(tǒng)啟動(dòng)和運(yùn)行的基本條件,所以他是Oracle運(yùn)行的根本。如果沒(méi)有控制文件系統(tǒng)是不可能啟動(dòng)的??刂莆募欠浅V匾?,一般采用多個(gè)鏡相復(fù)制來(lái)保護(hù)控制文件,或采用RAID來(lái)保護(hù)控制文件。控制文件的丟失,將使數(shù)據(jù)庫(kù)的恢復(fù)變的很復(fù)雜。

控制文件信息可以從V$Controlfile中查詢獲得

2、數(shù)據(jù)文件(數(shù)據(jù)文件的詳細(xì)信息記載在控制文件中)

可以通過(guò)如下方式查看數(shù)據(jù)文件

SQL> select name from v$datafile;

NAME

—–

/u05/dbf/PROD/system_01.dbf

/u06/dbf/PROD/temp_01.dbf

/u04/dbf/PROD/users_01.dbf

/u09/dbf/PROD/rbs_01.dbf

/u06/dbf/PROD/applsys_indx_01.dbf

/u05/dbf/PROD/applsys_data_01.dbf

從以上可以看出,數(shù)據(jù)文件大致可以分為以下幾類(lèi):

i. 系統(tǒng)數(shù)據(jù)文件(system_01.dbf)

存放系統(tǒng)表和數(shù)據(jù)字典,一般不放用戶的數(shù)據(jù),但是用戶腳本,如過(guò)程,函數(shù),包等卻是保存在數(shù)據(jù)字典中的。

名詞解釋:數(shù)據(jù)字典 數(shù)據(jù)字典是一些系統(tǒng)表或視圖,他存放系統(tǒng)的信息,他包括數(shù)據(jù)庫(kù)版本,數(shù)據(jù)文件信息,表與索引等段信息,系統(tǒng)的運(yùn)行狀態(tài)等各種和系統(tǒng)有關(guān)的信息和用戶腳本信息。數(shù)據(jù)庫(kù)管理員可以通過(guò)對(duì)數(shù)據(jù)字典的查詢,就可以了解到Oracle的運(yùn)行狀態(tài)。

ii. 回滾段文件(rbs_01.dbf)

如果數(shù)據(jù)庫(kù)進(jìn)行對(duì)數(shù)據(jù)的修改,那么就必須使用回滾段,回滾段是用來(lái)臨時(shí)存放修改前的數(shù)據(jù)(Before Image)。回滾段通常都放在一個(gè)單獨(dú)的表空間上(回滾表空間),避免表空間碎片化,這個(gè)表空間包含的數(shù)據(jù)文件就是回滾數(shù)據(jù)文件。

iii. 臨時(shí)數(shù)據(jù)文件(temp_01.dbf)

主要存放用戶的排序等臨時(shí)數(shù)據(jù),與回滾段相似,臨時(shí)段也容易引起表空間碎片化,而且沒(méi)有辦法在一個(gè)永久表空間上開(kāi)辟臨時(shí)段,所以就必須有一個(gè)臨時(shí)表空間,它所包含的數(shù)據(jù)文件就是臨時(shí)數(shù)據(jù)文件,主要用于不能在內(nèi)存上進(jìn)行的排序操作。我們必須為用戶指定一個(gè)臨時(shí)表空間。

iv. 用戶數(shù)據(jù)文件(/applsys_data_01.dbf ,applsys_indx_01.dbf)

存放用戶數(shù)據(jù),這里列舉了兩類(lèi)常見(jiàn)的用戶型數(shù)據(jù),一般數(shù)據(jù)和索引數(shù)據(jù),一般來(lái)說(shuō),如果條件許可的話,可以考慮放在不同的磁盤(pán)上。

3、重做日志文件(聯(lián)機(jī)重做日志)

用戶對(duì)數(shù)據(jù)庫(kù)進(jìn)行的任何操作都會(huì)記錄在重做日志文件。在了解重做日志之前必須了解重做日志的兩個(gè)概念,重做日志組和重做日志組成員(Member),一個(gè)數(shù)據(jù)庫(kù)中至少要有兩個(gè)日志組文件,一組寫(xiě)完后再寫(xiě)另一組,即輪流寫(xiě)。每個(gè)日志組中至少有一個(gè)日志成員,一個(gè)日志組中的多個(gè)日志成員是鏡相關(guān)系,有利于日志文件的保護(hù),因?yàn)槿罩疚募膿p壞,特別是當(dāng)前聯(lián)機(jī)日志的損壞,對(duì)數(shù)據(jù)庫(kù)的影響是巨大的。

聯(lián)機(jī)日志組的交換過(guò)程叫做切換,需要特別注意的是,日志切換在一個(gè)優(yōu)化效果不好的數(shù)據(jù)庫(kù)中會(huì)引起臨時(shí)的“掛起”。掛起大致有兩種情況:

在歸檔情況下,需要?dú)w檔的日志來(lái)不及歸檔,而聯(lián)機(jī)日志又需要被重新利用

檢查點(diǎn)事件還沒(méi)有完成(日志切換引起檢查點(diǎn)),而聯(lián)機(jī)日志需要被重新利用

解決這種問(wèn)題的常用手段是:

i.增加日志組

ii.增大日志文件成員大小

通過(guò)v$log可以查看日志組,v$logfile可以查看具體的成員文件。

4、歸檔日志文件

Oracle可以運(yùn)行在兩種模式之中,歸檔模式和不歸檔模式。如果不用歸檔模式,當(dāng)然,你就不會(huì)有歸檔日志,但是,你的系統(tǒng)將不會(huì)是一個(gè)實(shí)用系統(tǒng),特別是不能用于生產(chǎn)系統(tǒng),因?yàn)槟憧赡軙?huì)丟失數(shù)據(jù)。但是在歸檔模式中,為了保存用戶的所有修改,在重做日志文件切換后和被覆蓋之間系統(tǒng)將他們另外保存成一組連續(xù)的文件系列,該文件系列就是歸檔日志文件。

有人或許會(huì)說(shuō),歸檔日志文件占領(lǐng)我大量的硬盤(pán)空間,其實(shí),具體想一想,你是愿意浪費(fèi)一點(diǎn)磁盤(pán)空間來(lái)保護(hù)你的數(shù)據(jù),還是愿意丟失你的數(shù)據(jù)呢?顯而義見(jiàn),我們需要保證我們的數(shù)據(jù)的安全性。其實(shí),歸檔并不是一直占領(lǐng)你的磁盤(pán)空間,你可以把她備份到磁帶上,或則刪除上一次完整備份前的所有日志文件。

5、初始化參數(shù)文件

initSID.ora或init.ora文件,因?yàn)榘姹镜牟灰粯?,其位置也可能?huì)不一樣。在8i中,通常位于$Oracle_HOME/admin//Pfile下,初始化文件記載了許多數(shù)據(jù)庫(kù)的啟動(dòng)參數(shù),如內(nèi)存,控制文件,進(jìn)程數(shù)等,在數(shù)據(jù)庫(kù)啟動(dòng)的時(shí)候加載(Nomount時(shí)加載),初始化文件記錄了很多重要參數(shù),對(duì)數(shù)據(jù)庫(kù)的性能影響很大,如果不是很了解,不要輕易亂改寫(xiě),否則會(huì)引起數(shù)據(jù)庫(kù)性能下降。

6、其他文件

i . 密碼文件

用于Oracle 的具有sysdba權(quán)限用戶的認(rèn)證.

ii. 日志文件

報(bào)警日志文件(alert.log或alrt.ora)

記錄數(shù)據(jù)庫(kù)啟動(dòng),關(guān)閉和一些重要的出錯(cuò)信息。數(shù)據(jù)庫(kù)管理員應(yīng)該經(jīng)常檢查這個(gè)文件,并對(duì)出現(xiàn)的問(wèn)題作出即使的反應(yīng)。你可以通過(guò)以下SQL 找到他的路徑select value from v$PARAMETER where name =”background_dump_dest”;

后臺(tái)或用戶跟蹤文件

系統(tǒng)進(jìn)程或用戶進(jìn)程出錯(cuò)前寫(xiě)入的信息,一般不可能讀懂,可以通過(guò)Oracle的TKPROF工具轉(zhuǎn)化為可以讀懂的格式。對(duì)于系統(tǒng)進(jìn)程產(chǎn)生的跟蹤文件與報(bào)警日志文件的路徑一樣,用戶跟蹤文件的路徑,你可以通過(guò)以下SQL找到他的路徑select value from v$PARAMETER where name =”user_dump_dest”;

三、Oracle邏輯結(jié)構(gòu)

1、 表空間(tablespace)

表空間是數(shù)據(jù)庫(kù)中的基本邏輯結(jié)構(gòu),一系列數(shù)據(jù)文件的。一個(gè)表空間可以包含多個(gè)數(shù)據(jù)文件,但是一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間。

2、 段(Segment)

段是對(duì)象在數(shù)據(jù)庫(kù)中占用的空間,雖然段和數(shù)據(jù)庫(kù)對(duì)象是一一對(duì)應(yīng)的,但段是從數(shù)據(jù)庫(kù)存儲(chǔ)的角度來(lái)看的。一個(gè)段只能屬于一個(gè)表空間,當(dāng)然一個(gè)表空間可以有多個(gè)段。

表空間和數(shù)據(jù)文件是物理存儲(chǔ)上的一對(duì)多的關(guān)系,表空間和段是邏輯存儲(chǔ)上的一對(duì)多的關(guān)系,段不直接和數(shù)據(jù)文件。一個(gè)段可以屬于多個(gè)數(shù)據(jù)文件,關(guān)于段可以指定擴(kuò)展到哪個(gè)數(shù)據(jù)文件上面。

段基本可以分為以下四種

數(shù)據(jù)段(Data Segment)

索引段(Index Segment)

回滾段(Rollback Segment)

臨時(shí)段(Temporary Segment)

3、區(qū)間(Extent)

關(guān)于Extent的翻譯有多種解釋,有的譯作擴(kuò)展,有的譯作盤(pán)區(qū),我這里通常譯為區(qū)間。在一個(gè)段中可以存在多個(gè)區(qū)間,區(qū)間是為數(shù)據(jù)一次性預(yù)留的一個(gè)較大的存儲(chǔ)空間,直到那個(gè)區(qū)間被用滿,數(shù)據(jù)庫(kù)會(huì)繼續(xù)申請(qǐng)一個(gè)新的預(yù)留存儲(chǔ)空間,即新的區(qū)間,一直到段的更大區(qū)間數(shù)(Max Extent)或沒(méi)有可用的磁盤(pán)空間可以申請(qǐng)。 在Oracle8i以上版本,理論上一個(gè)段可以無(wú)窮個(gè)區(qū)間,但是多個(gè)區(qū)間對(duì)Oracle卻是有性能影響的,Oracle建議把數(shù)據(jù)分布在盡量少的區(qū)間上,以減少Oracle的管理與磁頭的移動(dòng)。

4、Oracle數(shù)據(jù)塊(Block)

Oracle最基本的存儲(chǔ)單位,他是OS數(shù)據(jù)塊的整數(shù)倍。Oracle的操作都是以塊為基本單位,一個(gè)區(qū)間可以包含多個(gè)塊(如果區(qū)間大小不是塊大小的整數(shù)倍,Oracle實(shí)際也擴(kuò)展到塊的整數(shù)倍)。

5、基本表空間介紹

a. 系統(tǒng)表空間

主要存放數(shù)據(jù)字典和內(nèi)部系統(tǒng)表基表

查看數(shù)據(jù)數(shù)據(jù)字典的SQL

select * from dict

查看內(nèi)部系統(tǒng)表的SQL

select * from v$fixed_view_definition

DBA對(duì)系統(tǒng)的系統(tǒng)表中的數(shù)據(jù)字典必須有一個(gè)很深刻的了解,他們必須準(zhǔn)備一些基礎(chǔ)的SQL語(yǔ)句,通過(guò)這些SQL可以立即了解系統(tǒng)的狀況和數(shù)據(jù)庫(kù)的狀態(tài),這些基本的SQL包括

系統(tǒng)的剩余空間

系統(tǒng)的SGA

狀態(tài)系統(tǒng)的等待

用戶的權(quán)限

當(dāng)前的用戶鎖

緩沖區(qū)的使用狀況等

在成為DBA 的道路上我們不建議你過(guò)分的依賴于OEM/Quest 等優(yōu)秀的數(shù)據(jù)庫(kù)管理工具,因?yàn)樗麄儾焕谀銓?duì)數(shù)據(jù)數(shù)據(jù)字典的理解,SQL語(yǔ)句可以完成幾乎全部的數(shù)據(jù)庫(kù)管理工作。

大量的讀少量的寫(xiě)是該表空間的一個(gè)顯著的特點(diǎn)。

b. 臨時(shí)表空間.

臨時(shí)表空間顧名思義是用來(lái)存放臨時(shí)數(shù)據(jù)的,例如排序操作的臨時(shí)空間,他的空間會(huì)在下次系統(tǒng)啟動(dòng)的時(shí)候全部被釋放。

c. 回滾段表空間

i. 回滾段在系統(tǒng)中的作用

當(dāng)數(shù)據(jù)庫(kù)進(jìn)行更新插入刪除等操作的時(shí)候,新的數(shù)據(jù)被更新到原來(lái)的數(shù)據(jù)文件,而舊的數(shù)據(jù)(Before Image)就被放到回滾段中,如果數(shù)據(jù)需要回滾,那么可以從回滾段將數(shù)據(jù)再?gòu)?fù)制到數(shù)據(jù)文件中。來(lái)完成數(shù)據(jù)的回滾。在系統(tǒng)恢復(fù)的時(shí)候, 回滾段可以用來(lái)回滾沒(méi)有被commit 的數(shù)據(jù),解決系統(tǒng)的一至性。

回滾段在什么情況下都是大量的寫(xiě),一般是少量讀,因此建議把回滾段單獨(dú)出來(lái)放在一個(gè)單獨(dú)的設(shè)備(如單獨(dú)的磁盤(pán)或RAID),以減少磁盤(pán)的IO爭(zhēng)用。

ii. 回滾段的工作方式

一個(gè)回滾表空間可以被劃分成多個(gè)回滾段.

一個(gè)回滾段可以保存多個(gè)會(huì)話的數(shù)據(jù).

回滾段是一個(gè)圓形的數(shù)據(jù)模型

假設(shè)回滾段由4 個(gè)區(qū)間組成,他們的使用順序就是區(qū)間1à區(qū)間2à區(qū)間3à區(qū)間4à區(qū)間1。也就是說(shuō),區(qū)間是可以循環(huán)使用的,當(dāng)區(qū)間4到區(qū)間1的時(shí)候,區(qū)間1里面的會(huì)話還沒(méi)有結(jié)束, 區(qū)間4用完后就不能再用區(qū)間1,這時(shí)系統(tǒng)必須分配區(qū)間5,來(lái)繼續(xù)為其他會(huì)話服務(wù)服務(wù)。

我們分析一個(gè)Update 語(yǔ)句的完成

①. 用戶提交一個(gè)Update 語(yǔ)句

②. Server Process 檢查內(nèi)存緩沖.

如果沒(méi)有該數(shù)據(jù)塊的緩沖,則從磁盤(pán)讀入

i. 如果沒(méi)有內(nèi)存的有效空間,DBWR被啟動(dòng)將未寫(xiě)入磁盤(pán)的臟緩沖寫(xiě)入磁盤(pán)

ii. 如果有有效空間,則讀入

③. 在緩沖內(nèi)更新數(shù)據(jù)

i. 申請(qǐng)一個(gè)回滾段入口,將舊數(shù)據(jù)寫(xiě)如回滾段

ii. 加鎖并更新數(shù)據(jù)

iii. 并在同時(shí)將修改記錄在Redo log buffer中

另外,站長(zhǎng)團(tuán)上有產(chǎn)品團(tuán)購(gòu),便宜有保證

Oracle數(shù)據(jù)庫(kù)基本知識(shí)

Oracle數(shù)據(jù)庫(kù)基本知識(shí)

  Oracle Database,又名OracleRDBMS,或簡(jiǎn)稱Oracle。是甲骨文公司的一款笑液關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。本文為大家分享的是Oracle數(shù)據(jù)庫(kù)的基本知識(shí),希望對(duì)大家有所幫助!

  它是在數(shù)據(jù)庫(kù)領(lǐng)域一直處于領(lǐng)先地位的產(chǎn)品。可以說(shuō)Oracle數(shù)據(jù)庫(kù)系統(tǒng)是目前世界上流行的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),系統(tǒng)可移植性好、使用方便、功能強(qiáng),適用于各類(lèi)大、中、小、微機(jī)環(huán)境。它是一種高效率、可靠性好的適應(yīng)高吞吐量的數(shù)據(jù)庫(kù)解決方案。

  介紹

  ORACLE數(shù)據(jù)庫(kù)系統(tǒng)是美國(guó)ORACLE公司(甲骨文)提供的以分布式數(shù)據(jù)庫(kù)為核心的一組軟件產(chǎn)品,是目前更流行的客戶/服務(wù)器(CLIENT/SERVER)或B/S體系結(jié)構(gòu)的數(shù)據(jù)庫(kù)之一。比如SilverStream就是基于數(shù)據(jù)庫(kù)的一種中間件。ORACLE數(shù)據(jù)庫(kù)是目前世界上使用最為廣泛的數(shù)據(jù)庫(kù)管理系統(tǒng),作為一個(gè)通用的數(shù)據(jù)庫(kù)系統(tǒng),它具有完整的數(shù)據(jù)管理功能;作為一個(gè)關(guān)系數(shù)據(jù)庫(kù),它是一個(gè)完備關(guān)系的產(chǎn)品;作為分布式數(shù)據(jù)庫(kù)它實(shí)現(xiàn)了分布式處理功能。但它的所有知識(shí),只要在一種機(jī)型上學(xué)習(xí)了ORACLE知識(shí),便能在各種類(lèi)型的機(jī)器上使用它。

  Oracle數(shù)據(jù)庫(kù)最新版本為OracleDatabase 12c。Oracle數(shù)據(jù)庫(kù)12c引入了一個(gè)新的多承租方架構(gòu),使用該架構(gòu)可輕松部署和管理數(shù)據(jù)庫(kù)云。此外,一些創(chuàng)新特性可更大限度地提高資源使用率和靈活性,如Oracle Multitenant可快速整合多個(gè)數(shù)據(jù)庫(kù),而Automatic Data Optimization和Heat Map能以更高的密度壓縮數(shù)據(jù)和對(duì)數(shù)據(jù)分層。這些獨(dú)一無(wú)二的技術(shù)進(jìn)步再加上在可用性、安全性和大數(shù)據(jù)支持方面的主要增強(qiáng),使得Oracle數(shù)據(jù)庫(kù)12c 成為私有云和公有云部署的理想平臺(tái)。

  就業(yè)前景

  從就業(yè)與擇業(yè)的角度來(lái)講,計(jì)算機(jī)相關(guān)專業(yè)的大學(xué)生從事oracle方面的技術(shù)是職業(yè)發(fā)展中的更佳選擇。

  其一、就業(yè)面廣:ORACLE幫助拓展技術(shù)人員擇業(yè)的廣度,全球前100強(qiáng)企業(yè)99家都在使用ORACLE相關(guān)技術(shù),中國(guó)機(jī)構(gòu),大中型企事業(yè)單位都能有ORACLE技術(shù)的工程師崗位,大學(xué)生在校期間興趣廣泛,每個(gè)人興趣特長(zhǎng)各異,不論你想進(jìn)入金融行業(yè)還是電信行業(yè)或者機(jī)構(gòu),ORACLE都能夠在你的職業(yè)發(fā)展中給你最強(qiáng)有力的支撐,成為你最貼身的金飯碗。

  其二、技術(shù)層次深:如果期望進(jìn)入IT服務(wù)或者產(chǎn)品公司,Oracle技術(shù)能夠幫助提高就業(yè)的深度。Oracle技術(shù)已經(jīng)成為全球每個(gè)IT公司必選的軟件技術(shù)之一,熟練掌握Oracle技術(shù)能夠?yàn)閺臉I(yè)人員帶來(lái)技術(shù)應(yīng)用上的優(yōu)勢(shì),同時(shí)為IT技術(shù)的深入應(yīng)用起到非常關(guān)鍵的作用。掌握 Oracle技術(shù),是IT從業(yè)人員了解全面信息化整體解決方案的基礎(chǔ)。

  其三、職業(yè)方向多:Oracle數(shù)據(jù)庫(kù)管理方向、Oracle開(kāi)發(fā)及系統(tǒng)架構(gòu)方向、Oracle數(shù)據(jù)建模數(shù)據(jù)倉(cāng)庫(kù)等方向。

  Oracle數(shù)據(jù)庫(kù)漏洞分析:無(wú)需用戶名和密碼進(jìn)入你的數(shù)據(jù)庫(kù)

  一般性的數(shù)據(jù)庫(kù)漏洞,都是在成功連接或登錄數(shù)據(jù)庫(kù)后實(shí)現(xiàn)入侵;本文介紹兩個(gè)在2023年暴露的Oracle漏洞,通過(guò)這兩種漏洞的結(jié)合,可以在不掌握用戶名/密碼的情況下入侵Oracle,從嫌陪而完成對(duì)數(shù)據(jù)的竊取或者破壞。這兩個(gè)漏洞就是CVE和CVE。

  引言

  國(guó)內(nèi)外很多重碰者物要的系統(tǒng)都采用Oracle作為數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù);在Oracle中存儲(chǔ)著企業(yè)或大量敏感的信息,在金錢(qián)或政治的誘導(dǎo)下,內(nèi)外部黑客會(huì)想法利用管理、網(wǎng)絡(luò)、主機(jī)或數(shù)據(jù)庫(kù)的自身漏洞嘗試入侵到數(shù)據(jù)庫(kù)中,以達(dá)到自身的目的。

  本文的作者通過(guò)對(duì)Oracle倆種漏洞的組合研究,設(shè)計(jì)了一套在不掌握用戶名/密碼的方式入侵到Oracle中;這種方法,比傳統(tǒng)的需要登錄到數(shù)據(jù)庫(kù)中的入侵方法,具有更大的安全隱患和破壞性。

  本文希望通過(guò)對(duì)這兩個(gè)漏洞和攻擊方法的介紹,能夠引起相關(guān)人員的重視,完善對(duì)數(shù)據(jù)庫(kù)安全的措施。

  1、概要介紹

  本文提供的方法是基于漏洞CVE和CVE對(duì)oracle數(shù)據(jù)庫(kù)的攻擊測(cè)試的方法。

  CVE漏洞是Oracle允許攻擊者在不提供用戶名/密碼的’情況下,向遠(yuǎn)程“TNS Listener”組件處理的數(shù)據(jù)投毒的漏洞。攻擊者可利用此漏洞將數(shù)據(jù)庫(kù)服務(wù)器的合法“TNS Listener”組件中的數(shù)據(jù)轉(zhuǎn)向到攻擊者控制的系統(tǒng),導(dǎo)致控制遠(yuǎn)程組件的數(shù)據(jù)庫(kù)實(shí)例,造成組件和合法數(shù)據(jù)庫(kù)之間的中間人攻擊、會(huì)話劫持或拒絕服務(wù)攻擊。

  CVE漏洞是Oracle Database 10g/11g身份驗(yàn)證協(xié)議實(shí)現(xiàn)中存在一個(gè)設(shè)計(jì)缺陷,攻擊者無(wú)需認(rèn)證即可遠(yuǎn)程獲取數(shù)據(jù)庫(kù)用戶密碼哈希相關(guān)數(shù)據(jù),從而可以離線暴力破解用戶密碼,進(jìn)一步控制數(shù)據(jù)庫(kù)系統(tǒng)。

  我們通過(guò)如下的步驟和過(guò)程可以實(shí)現(xiàn)對(duì)Oracle的入侵:

  (1)利用CVE進(jìn)行TNS劫持,在監(jiān)聽(tīng)下利用遠(yuǎn)程注冊(cè),注冊(cè)同名數(shù)據(jù)庫(kù)實(shí)例;

  (2)新登陸的用戶,在TNS的負(fù)載均衡策略下,有可能流量登錄到偽造的監(jiān)聽(tīng)服務(wù)上;

  (3)該監(jiān)聽(tīng)服務(wù)對(duì)用戶的登陸過(guò)程進(jìn)行監(jiān)控,并將相關(guān)數(shù)據(jù)流量轉(zhuǎn)發(fā)到真實(shí)的數(shù)據(jù)庫(kù)上;

  (4)利用CVE獲得通訊過(guò)程中的認(rèn)證相關(guān)信息;

  (5)對(duì)認(rèn)證相關(guān)信息進(jìn)行離線的暴力破解,獲得登陸的密碼;

  (6)試用破解的用戶名/密碼登陸Oracle,完成對(duì)Oracle中數(shù)據(jù)的訪問(wèn);

  2、通過(guò)CVE進(jìn)行TNS劫持

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

  要想利用CVE漏洞做TNS劫持,首先需要了解TNS機(jī)制。如下圖所示oracle 通過(guò)在本地解析網(wǎng)絡(luò)服務(wù)名到目標(biāo)主機(jī)IP地址,服務(wù)端口號(hào),目標(biāo)數(shù)據(jù)庫(kù)名,把這些信息發(fā)送到oracle服務(wù)器端監(jiān)聽(tīng)程序,最后再由監(jiān)聽(tīng)程序遞送DBMS。

  其中關(guān)鍵點(diǎn)在于監(jiān)聽(tīng)會(huì)按照目標(biāo)數(shù)據(jù)庫(kù)名遞送到名稱正確的數(shù)據(jù)庫(kù)。那么如果一個(gè)監(jiān)聽(tīng)下有2個(gè)同名數(shù)據(jù)庫(kù)。監(jiān)聽(tīng)將自動(dòng)按照負(fù)載均衡把這次訪問(wèn)發(fā)送到負(fù)載低的數(shù)據(jù)庫(kù)上,進(jìn)行連接訪問(wèn)。數(shù)據(jù)庫(kù)注冊(cè)到監(jiān)聽(tīng)的方法就決定了,能否同時(shí)注冊(cè)同名數(shù)據(jù)庫(kù)在同一個(gè)監(jiān)聽(tīng)下。注冊(cè)方式分為本地注冊(cè)和遠(yuǎn)程注冊(cè),通過(guò)修改參數(shù)可以調(diào)整為遠(yuǎn)程注冊(cè)。

  下面是一段可用的TNS劫持的過(guò)程:

.在劫持機(jī)上創(chuàng)建一個(gè)和目標(biāo)數(shù)據(jù)庫(kù)實(shí)例同名的數(shù)據(jù)庫(kù)實(shí)例。

.在劫持機(jī)上修改 tnsnames.ora 文件

  添加

  listener_name=

  (DESCRIPTION=

  (ADDRESS=(PROTOCOL=tcp)(HOST=目標(biāo)機(jī)器IP)(PORT=目標(biāo)機(jī)器端口)))

.在劫持機(jī)上用SQL*Plus 順序執(zhí)行下面步驟。

.$ sqlplus / as sysdba

. SQL> ALTER SYSTEM SETREMOTE_LISTENER=’LISTENER_NAME’;

. SQL> ALTER SYSTEM REGISTER;

.多個(gè)客戶端,向數(shù)據(jù)庫(kù)發(fā)起登錄。會(huì)劫持到一部分客戶端的登錄信息。

  最終達(dá)到效果如下圖所示:

  按照猜想同一個(gè)監(jiān)聽(tīng)下有2個(gè)同名實(shí)例??蛻舳嗽L問(wèn)監(jiān)聽(tīng),監(jiān)聽(tīng)按照客戶端中的數(shù)據(jù)庫(kù)名信息分配數(shù)據(jù)庫(kù),由于監(jiān)聽(tīng)下有2個(gè)同名數(shù)據(jù)庫(kù),客戶端鏈接很可能會(huì)被分配到劫持者的數(shù)據(jù)庫(kù)實(shí)例下,再通過(guò)配置劫持者的本地監(jiān)聽(tīng)把客戶端請(qǐng)求指回原數(shù)據(jù)庫(kù)。結(jié)構(gòu)圖如下:

  測(cè)試客戶端鏈接196次。目標(biāo)數(shù)據(jù)庫(kù)實(shí)例獲得113次,劫持?jǐn)?shù)據(jù)庫(kù)實(shí)例獲得83次基本滿足負(fù)載均衡的假設(shè)。(注上面實(shí)例是local server 下面實(shí)例是 remote server)

  通過(guò)以上方式我們可以截獲約一半左右客戶端發(fā)送到服務(wù)器的合法鏈接。其中獲得了服務(wù)器IP、端口號(hào)、數(shù)據(jù)庫(kù)位置、實(shí)例名、登錄用戶名等一系列明文信息和4組密文信息(AUTH_SESSKEY,AUTH_SESSKEY_CLIENT,AUTH_PASSWORD,AUTH_VFR_DATA)。

  3、通過(guò)CVE進(jìn)行密碼破解

  CVE受影響的數(shù)據(jù)庫(kù)版本有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(運(yùn)行在z/OS下)版本。

  雖然這個(gè)漏洞在11.2.0.3中已經(jīng)解決,但是僅僅數(shù)據(jù)庫(kù)客戶端和服務(wù)器都升級(jí)到11.2.0.3并且sqlnet.ora文件中增加SQLNET.ALLOWED_LOGON_VERSION=12才有效。

  正如CVE所描述Oracle為了防止第三方通過(guò)網(wǎng)絡(luò)獲取登錄信息包。而對(duì)密碼進(jìn)行了加密處理。本部分只以oracle11.1密碼如何破解為例進(jìn)行說(shuō)明。

  在發(fā)起連接之后(oracle牽手完成),客戶端和服務(wù)器經(jīng)過(guò)協(xié)商確定要使用的驗(yàn)證協(xié)議。要完成這個(gè)任務(wù),客戶端首先向數(shù)據(jù)庫(kù)發(fā)送一個(gè)包。包中包含客戶端主要信息和所請(qǐng)求的加密方式。數(shù)據(jù)庫(kù)確認(rèn)加密方式有效后,發(fā)送一個(gè)確認(rèn)服務(wù)包如下圖所示:

  在通過(guò)安全網(wǎng)絡(luò)服務(wù)完成任何所要求的協(xié)議之后,數(shù)據(jù)庫(kù)用戶被O3logon(oracle驗(yàn)證方式) 進(jìn)行驗(yàn)證,這個(gè)協(xié)議執(zhí)行一個(gè)序列來(lái)向數(shù)據(jù)庫(kù)證明客戶端擁有密碼。為了避免網(wǎng)絡(luò)第三方截獲到密碼。首先客戶端發(fā)送用戶名到數(shù)據(jù)庫(kù)來(lái)表明用戶身份。數(shù)據(jù)庫(kù)端根據(jù)加密協(xié)議,其中96位的作為數(shù)據(jù)庫(kù)端密鑰,20位的作為偏移量,它對(duì)每個(gè)連接都是不同的。一個(gè)典型的數(shù)據(jù)庫(kù)端發(fā)給客戶端的密鑰如下:

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

  客戶端根據(jù)加密算法向服務(wù)器端發(fā)送96位的客戶端密鑰和64位的密碼密鑰。服務(wù)器端計(jì)算客戶端傳入的密碼密鑰。如果計(jì)算后密碼密文和數(shù)據(jù)庫(kù)中存儲(chǔ)的16位密碼密文一致則驗(yàn)證通過(guò)。

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

  下面這段網(wǎng)上公布的一段示例代碼,這段代碼與筆者的思路不完全相同,但也能大概地說(shuō)明這個(gè)漏洞的攻擊過(guò)程:

  import hashlib

  from Crypto.Cipher import AES

  def decrypt(session,salt,password):

  pass_hash= hashlib.sha1(password+salt)

  key =pass_hash.digest() + ‘\x00\x00\x00\x00’

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

  plain =decryptor.decrypt(session)

  returnplain

  session_hex =’EA2023CB8B46EC68BDC161F8CA170363C1E6F57F3EBC6435F541A8239B6DBA16EAABAE78767′

  salt_hex = ‘A7193E546377EC56639E’

  passwords =

  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 == ‘\x08\x08\x08\x08\x08\x08\x08\x08’:

  print’PASSWORD IS “%s”‘ % password

  break

  4、建議的預(yù)防措施

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

  (1)在條件許可的情況下,對(duì)Oracle進(jìn)行補(bǔ)丁升級(jí),對(duì)Oracle打cpuoct補(bǔ)丁;注意對(duì)于cpuoct補(bǔ)丁要求服務(wù)器端和應(yīng)用服務(wù)器端同時(shí)升級(jí),否則應(yīng)用系統(tǒng)將無(wú)法訪問(wèn)Oracle;

  (2)若無(wú)法對(duì)Oracle升級(jí),要購(gòu)買(mǎi)或安裝具備虛擬補(bǔ)丁功能的數(shù)據(jù)庫(kù)安全產(chǎn)品,防止對(duì)CVE和CVE的利用;

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

關(guān)于oracle8.0.6數(shù)據(jù)庫(kù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

創(chuàng)新互聯(lián)服務(wù)器托管擁有成都T3+級(jí)標(biāo)準(zhǔn)機(jī)房資源,具備完善的安防設(shè)施、三線及BGP網(wǎng)絡(luò)接入帶寬達(dá)10T,機(jī)柜接入千兆交換機(jī),能夠有效保證服務(wù)器托管業(yè)務(wù)安全、可靠、穩(wěn)定、高效運(yùn)行;創(chuàng)新互聯(lián)專注于成都服務(wù)器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認(rèn)可。


文章標(biāo)題:Oracle8.0.6數(shù)據(jù)庫(kù)詳解與應(yīng)用指導(dǎo)(oracle8.0.6數(shù)據(jù)庫(kù))
鏈接地址:http://m.5511xx.com/article/cosdigj.html