程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> ORACLE實例和ORACLE數據庫詳解

ORACLE實例和ORACLE數據庫詳解

編輯:Oracle數據庫基礎

導讀:Oracle數據庫是一種大型數據庫系統,一般應用於商業,政府部門,它的功能很強大,能夠處理大批量的數據,在網絡方面也用的非常多。不過,一般的中小型企業都比較喜歡用MySQL, SQL Server等數據庫系統,它的操作很簡單,功能也非常齊全。只是比較Oracle數據庫而言,在處理大量數據方面有些不如。

一、Oracle實例

1、Oracle 實例——包括內存結構與後台進程

System Global Area(SGA) 和 Background Process 稱為數據庫的實例。

2、Oracle 數據庫——物理操作系統文件的集合

一系列物理文件的集合(數據文件,控制文件,聯機日志,參數文件等)

3、系統全局共享區System Global Area(SGA)

System Global Area是一塊巨大的共享內存區域,他被看做是Oracle數據庫的一個大緩沖池,這裡的數據可以被Oracle的各個進程共用。其大小可以通過如下語句查看:

SQL> select * from v$sga;

NAME VALUE

-

Fixed Size 39816

Variable Size 259812784

Database Buffers 1.049E+09

Redo Buffers 327680

更詳細的信息可以參考V$sgastat、V$buffer_pool

主要包括以下幾個部分:

a、 共享池(Shared pool)

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

SQL語句緩沖(Library Cache)

當一個用戶提交一個SQL語句,Oracle會將這句SQL進行分析(parse),這個過程類似於編譯,會耗費相對較多的時間。在分析完這個SQL,Oracle會把他的分析結果給保存在Sharedpool的LibraryCache中,當數據庫第二次執行該SQL時,Oracle自動跳過這個分析過程,從而減少了系統運行的時間。這也是為什麼第一次運行的SQL比第二次運行的SQL要慢一點的原因。

下面舉例說明parse的時間

SQL> select count(*) fromscpass ;

COUNT(*)

--

243

Elapsed: 00:00:00.08

這是在Share_pool 和Data buffer 都沒有數據緩沖區的情況下所用的時間

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 的時間差上可以看出該SQL 的Parse 時間約為00:00:00.02

對於保存在共享池中的SQL語句,可以從V$Sqltext、v$Sqlarea中查詢到,對於編程者來說,要盡量提高語句的重用率,減少語句的分析時間。一個設計的差的應用程序可以毀掉整個數據庫的Sharepool,提高SQL語句的重用率必須先養成良好的變成習慣,盡量使用Bind變量。

數據字典緩沖區(Data Dictionary Cache)

顯而易見,數據字典緩沖區是ORACLE特地為數據字典准備的一塊緩沖池,供Oracle內部使用,沒有什麼可以說的。

上文的內容相對來說還是很基礎的,所以對於剛剛入門的初學者來說,學習初期,好好的研究一下本文中介紹的內容,相信對大家的入門學習會很有幫助的。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved