導航:首頁 > 廢水知識 > 回滾段爭用

回滾段爭用

發布時間:2023-01-02 06:36:18

① oracle性能檢測sql語句

監控事例的等待

select event sum(decode(wait_Time )) Prev

sum(decode(wait_Time )) Curr count(*) Tot

from v$session_Wait

group by event order by ;

回滾段的爭用情況

select name waits gets waits/gets Ratio

from v$rollstat a v$rollname b

where a usn = b usn;

監控表空間的 I/O 比例

select df tablespace_name name df file_name file f phyrds pyr

f phyblkrd pbr f phywrts pyw f phyblkwrt pbw

from v$filestat f dba_data_files df

where f file# = df file_id

order by df tablespace_name;

監控文件系統的 I/O 比例

select substr(a file# ) # substr(a name ) Name

a status a bytes b phyrds b phywrts

from v$datafile a v$filestat b

where a file# = b file#;

在某個用戶下找所有的索引

select user_indexes table_name user_indexes index_name uniqueness column_name

from user_ind_columns user_indexes

where user_ind_columns index_name = user_indexes index_name

and user_ind_columns table_name = user_indexes table_name

order by user_indexes table_type user_indexes table_name

user_indexes index_name column_position;

監控 SGA 的命中率

select a value + b value logical_reads c value phys_reads

round( * ((a value+b value) c value) / (a value+b value)) BUFFER HIT RATIO

from v$sysstat a v$sysstat b v$sysstat c

where a statistic# = and b statistic# =

and c statistic# = ;

監控 SGA 中字典緩沖區的命中率

select parameter gets Getmisses getmisses/(gets+getmisses)* miss ratio

( (sum(getmisses)/ (sum(gets)+sum(getmisses))))* Hit ratio

from v$rowcache

where gets+getmisses <>

group by parameter gets getmisses;

監控 SGA *** 享緩存區的命中率 應該小於 %

select sum(pins) Total Pins sum(reloads) Total Reloads

sum(reloads)/sum(pins) * libcache

from v$librarycache;

select sum(pinhits reloads)/sum(pins) hit radio sum(reloads)/sum(pins) reload percent

from v$librarycache;

顯示所有資料庫對象的類別和大小

select count(name) num_instances type sum(source_size) source_size

sum(parsed_size) parsed_size sum(code_size) code_size sum(error_size) error_size

sum(source_size) +sum(parsed_size) +sum(code_size) +sum(error_size) size_required

from dba_object_size

group by type order by ;

監控 SGA 中重做日誌緩存區的命中率 應該小於 %

SELECT name gets misses immediate_gets immediate_misses

Decode(gets misses/gets* ) ratio

Decode(immediate_gets+immediate_misses

immediate_misses/(immediate_gets+immediate_misses)* ) ratio

FROM v$latch WHERE name IN ( redo allocation redo );

監控內存和硬碟的排序比率 最好使它小於 增加 sort_area_size

SELECT name value FROM v$sysstat WHERE name IN ( sorts (memory) sorts (disk) );

監控當前資料庫誰在運行什麼SQL語句

SELECT osuser username sql_text from v$session a v$sqltext b

where a sql_address =b address order by address piece;

監控字典緩沖區

SELECT (SUM(PINS RELOADS)) / SUM(PINS) LIB CACHE FROM V$LIBRARYCACHE;

SELECT (SUM(GETS GETMISSES USAGE FIXED)) / SUM(GETS) ROW CACHE FROM V$ROWCACHE;

SELECT SUM(PINS) EXECUTIONS SUM(RELOADS) CACHE MISSES WHILE EXECUTING FROM V$LIBRARYCACHE;

後者除以前者 此比率小於 % 接近 %為好

SELECT SUM(GETS) DICTIONARY GETS SUM(GETMISSES) DICTIONARY CACHE GET MISSES

FROM V$ROWCACHE

找ORACLE字元集

select * from sys props$ where name= NLS_CHARACTERSET ;

監控 MTS

select busy/(busy+idle) shared servers busy from v$dispatcher;

此值大於 時 參數需加大

select sum(wait)/sum(totalq) dispatcher waits from v$queue where type= dispatcher ;

select count(*) from v$dispatcher;

select servers_highwater from v$mts;

servers_highwater接近mts_max_servers時 參數需加大

碎片程度

select tablespace_name count(tablespace_name) from dba_free_space group by tablespace_name

having count(tablespace_name)> ;

alter tablespace name coalesce;

alter table name deallocate unused;

create or replace view ts_blocks_v as

select tablespace_name block_id bytes blocks free space segment_name from dba_free_space

union all

select tablespace_name block_id bytes blocks segment_name from dba_extents;

select * from ts_blocks_v;

select tablespace_name sum(bytes) max(bytes) count(block_id) from dba_free_space

group by tablespace_name;

查看碎片程度高的表

SELECT segment_name table_name COUNT(*) extents

FROM dba_segments WHERE owner NOT IN ( SYS SYSTEM ) GROUP BY segment_name

HAVING COUNT(*) = (SELECT MAX( COUNT(*) ) FROM dba_segments GROUP BY segment_name);

表 索引的存儲情況檢查

select segment_name sum(bytes) count(*) ext_quan from dba_extents where

tablespace_name= &tablespace_name and segment_type= TABLE group by tablespace_name segment_name;

select segment_name count(*) from dba_extents where segment_type= INDEX and owner= &owner

group by segment_name;

找使用CPU多的用戶session

是cpu used by this session

select a sid spid status substr(a program ) prog a terminal osuser value/ / value

from v$session a v$process b v$sesstat c

where c statistic#= and c sid=a sid and a paddr=b addr order by value desc;

lishixin/Article/program/Oracle/201311/17800

② 如何使用Oracle回滾段

Oracle預設用的是專用伺服器模式,也就是說一個用戶連接進程對應一個伺服器的進程.
記得某大醫院剛啟用的時候,我們曾經試過MTS.因為聽說MTS在不增加內存和CPU的情況下連接更多的客戶端,結果並不是我們預期的那樣.
因為我們對MTS不了解,並不是它有問題,而是它不是用來在這種情況下做這件事的.

③ 什麼是 回滾段爭用

很簡單,事務並發太多,回滾段不夠用了。

④ oracle與sqlserver區別

體系結構

ORACLE的文件體系結構為

數據文件 DBF (真實數據)

日誌文件 RDO

控制文件 CTL

參數文件 ORA

SQL SERVER的文件體系結構為

MDF (數據字典)

NDF (數據文件)

LDF (日誌文件)

ORACLE存儲結構

在ORACLE里有兩個塊參數PCTFREE(填充因子)和PCTUSED(復用因子) 可控制塊確定塊本身何時有 何時沒有足夠的空間接受新信息(對塊的存儲情況的分析機制)

這樣可降低數據行連接與行遷移的可能性 塊的大小可設置(OLTP塊和DSS塊)

在ORACLE中 將連續的塊組成區 可動態分配區(區的分配可以是等額的也可以是自增長的)可減少空間分配次數

在ORACLEl里表可以分為多個段 段由多個區組成 每個段可指定分配在哪個表空間里(段的類型分為 數據段 索引段 回滾段 臨時段 CASH段 ORACLE里還可對表進行分區 可按照用戶定義的業務規則 條件或規范 物理的分開磁碟上的數據

這樣大大降低了磁碟爭用的可能性

ORACLE有七個基本表空間

·SYSTEM表空間(存放數據字典和數據管理自身所需的信息)

·RBS回滾表空間

·TEMP臨時表空間

·TOOLS互動式表空間

·USERS用戶默認表空間

·INDX索引表空間

·DBSYS福數據表空間

不同的數據分別放在不同的表空間(數據字典與真實數據分開存放) 在ORACLE里基表(存儲系統參數信息)是加密存儲 任何人都無法訪問 只能通過用戶可視視圖查看

SQL SERVER 存儲結構

以頁為最小分配單位 每個頁為 K(不可控制 缺乏對頁的存儲情況的分析機制)

可將 個連續的頁的組成一個 擴展 以進一步減少分配時所耗用的資源 (分配缺乏靈活性) 在SQL SERVER里數據以表的方式存放 而表是存放在資料庫里

SQL SERVER有五個基本資料庫

·master(數據字典)

·mode(存放樣版)

·tempdb(臨時資料庫)

·msdb(存放調度信息和日誌信息)

·pubs(示例資料庫)

真實數據與數據字典存放在一起 對系統參數信息無安全機制

ORACLE登入管理

·SYSTEM/MANAGER (初始帳戶)

·SYS/CHANGE_ON_NSTALL

·INSTALL/ORACLE(安裝帳戶)

·SCOTT/TIGER(示例資料庫 測試用)

在ORACLE里默認只有三個系統用戶 ORACLE是通過用戶登入

SQL SERVER登入管理

·SQL SERVER身份驗證

·WINDOWS 身份驗證

在SQL SERVER里是通過WINDOWS用戶帳戶或是用SQL SERVER身份驗證連接資料庫的

SQL不是一種語言 而是對ORACLE資料庫傳輸指令的一種方式

SQL中NULL既不是字元也不是數字 它是預設數據 ORACLE提供了NVL函數來解決

ORACLE中的字元串連接為 string ‖string SQL中為string +string

集合操作 在SQL中只有UNION(並操作) ORACLE中包含MINUS(差操作)

INTERECT(交操作) UNION(並操作)

索引 SQL的索引分為聚集索引和非聚集索引 還包括全文索引

ORACLE的索引包括 B+樹索引 Bitmap點陣圖索引 函數索引 反序索引

主鍵索引 散列索引 本地索引

ORACLE的數據類型比較復雜 有基本數據類型 衍生型 列對象型 表對象型 結構體型 SQL中的數據比較簡單 只有一些簡單的基本數據類型無法提供事務操作

在SQL中如果一個事務從開始執行到結束時了錯了 它就會回滾到開始之前

在ORACLE中它採用的是定點回滾 就是該事務函數化和精確錯誤定位 用savepoint標記保存點 用Rollback標記回滾錯誤的保存點

在SQL中循環只有WHILE一種這用起來不靈活 在ORACLE中有多種循環(LOOP循環 WHILE循環 FOR循環)

在SQL中游標的使用比較復雜 不能同時打開一個以上的游標 因為它只有一個全局變數@@Fast_statues而且聲明游標也麻煩 關閉游標時也不清除內存的 ORACLE中游標是以提高速度全部統一的單項游標 可以允許多用戶非同步讀取 而且聲明比較簡單 就一句declare cursor游標名 is select 語句就可以了

容錯機制 SQL中的錯誤機制比較復雜 沒有提供錯誤描述 ORACLE中容錯類型有三種 一個是預定義錯誤 一個是非預定義錯誤 一個是用戶自定義 其中在自定義錯誤中它有兩個是在SQL中不有的 那就是SQLCODE 錯誤號 SQLERRM錯誤描述

文件體系結構 SQL中有 MDF(主要數據文件) NDF(擴展文件 可以有多個)

LDF(日誌文件 可以有多個 存放在聯機重做日誌數據 這里的日誌文件有一個缺點就是如果日誌文件已填小巧玲瓏的話 SQL將自動停止運行並等待人工干預 所以要經常監控日誌的情況保證系統的穩定運行) ORACLE中有 DBF(主要數據文件) RDO(日誌文件 用來做災難性的數據備份) CTL(控制文件 將資料庫的物理文件映射到了數據字典中的邏輯表空間和連機重做日誌文件上去 確保數據的一致性) ORA(參數文件)

SQL只能是本機備份本機的資料庫 無法聯機備份 而且備份壓縮很低 佔用了大量空間 ORACLE提供了 種備份機制 具有聯機備份功能 有志門的備份機子

Oracle的日誌默認有 個 先寫入 號日誌 滿了後再寫入 號日誌 號滿了再寫入 號日誌 號滿了後Oracle將自動備分 號日誌的內容 然後清空後寫入新的日誌信息 且Oracle的日誌有多路復用功能 我們可以為日誌創建多個鏡像 把相同的日誌信息同時寫入多個日誌文件中 這樣可以防止磁碟損壞造成的數據丟失

SQL Server對每個資料庫只能分配一個日誌文件 且當日誌填滿後 日誌將停止工作 等待人工干預 而無法自動重用

Oracle的控制文件記錄了資料庫文件的物理位置和有效性 在每次打開Oracle系統都將自動對數據進行驗證 查看其有效性 防止數據的丟失 這體現了Oracle對數據管理的嚴密性

SQL Server無此安全機制 只用在使用到了資料庫的信息後 系統才去查找數據是否存在

Oracle的參數文件init ora是可調的 既我們可以根據資料庫的規模調整Oracle對系統資源的使用情況 以達到最合理的資源分配 讓Oracle達到最佳的性能

SQL Server的配置參數是內定的不可調整 它對系統資源的分配是固定的 不受擁護控制 因此無法同時處理大量用戶的需求 這限制了它只能作為中 小型資料庫

Oracle以塊為最小存儲單位 以區為單位分配空間 用戶可以根據需要自己定義塊的大小 且區可以按等額或遞增進行分配 這可以大大減少系統的I/O操作提高資料庫的性能

SQL Server中以頁為單位或使用擴展類型以 頁為一單位進行空間分配而無法人工干預 當遇到頻繁存儲或大數據量存儲時 系統將頻繁進行I/O操作使工作效率低下

Oracle中的SQL語句書寫規范且提供了完整的函數和數據類型 Oracle提供了健全的錯誤機制 用戶可以輕松的獲得錯誤位置和錯誤原因而加以修改 用戶還可以自己定義所須的錯誤類型 用以檢查邏輯錯誤 Oracle中對數據類型的轉換和游標的定義也十分方便 因此 我們對代碼的書寫和維護也比SQL Server方便許多

SQL Server使用類C語言 不易維護和查看代碼 SQL Server包含的數據類型太少 無法定義結構體 數組 對象 SQL Server無法定義流程機制 類型轉換也極不方便 SQL Server中對游標定義十分復雜 且當用戶定義的多個游標同時打開時系統卻只有一個游標變數 這是SQL SERVER中一個嚴重的缺陷

ORACLE中用戶可以根據數據需要在創建塊時定義填充因子(空閑空間的百分比)和復用因子(當塊的存儲數據所佔的空間下降到這個百分比之下時 塊才重新標記為可用) 用戶可以根據記錄變化頻率和數據量的大小設置合適的填充因子和空閑因子

SQL SERVER只有填充因子 而它的定義與ORACLE剛好相反 它定義的是剩餘可用空間的百分比 而SQL SERVER中沒有復用因子 當頁中數據低於填充因子 但剩餘的空間已經不可能再插入新的數據 但頁還是標記為可用的 當系統要寫入新數據都要訪問這個頁而浪費時間 這種頁稱為廢頁 將使系統插入新數據時浪費大量時間查找可用的頁

ORACLE在創建表時用戶可以精確定義數據存放的表空間 甚至可以把一張表分開存放在多個表空間中 這樣可以將數據量龐大的表按某些欄位分開存放 這將給查詢帶來極高的效率

=========================================================================================

隨著信息技術的飛速發展 數據處理不僅在數量上要求越來越大 而且在質量上也要求越來越高

操作系統的穩定對資料庫來說是十分緊要的 在資料庫可操作平台上 Oracle可在所有主流平台上運行 Oracle資料庫採用開放的策略目標 它使得客戶可以選擇一種最適合他們特定需要的解決方案 客戶可以利用很多種第三方應用程序 工具 對開發商來說是很大的支持 而SQL Server卻只能在Windows上運行了 這個就顯得比較單調了 但SQL Sever在Window平台上的表現 和Windows操作系統的整體結合程度 使用方便性 和Microsoft開發平台的整合性都比Oracle強的很多 但Windows操作系統的穩定性及可靠性大家是有目共睹的 再說Microsoft公司的策略目標是將客戶都鎖定到Windows平台的環境當中 只有隨著Windows性能的改善 SQL Server才能進一步提高 從操作平台這點上Oracle是完全優勝於SQL Server的了

從資料上可以看到 Oracle的安全認證獲得最高認證級別的ISO標准認證 而SQL Server並沒有獲得什麼安全認證 這方面證明了Oracle的安全性是高於SQL Server的

購買一個產品 首先考慮的當然是產品的性能了 當考慮性能的同時當然少不了究竟要花多少錢在這產品也是個很關鍵的問題 要建立並運行一個資料庫系統 不僅僅包含最初購置軟體 硬體的費用 還包含了培訓及以後維護的費用 Orcale資料庫的價格是遠比SQL Server資料庫要高 為什麼Oracle資料庫比SQL Server資料庫價格上要高出那麼多 一方面Oracle的初始花費相對較高 特別是在考慮工具軟體的時候 Oracle很多工具軟體需要另外購買 與Microsoft提供免費的SQL Server工具軟體相比 Oracle更顯價格的不菲 但由於SQL Server只能在Windows下運行的原因 普遍認為SQL Server資料庫的可靠性是比較差的 Oracle的性能優勢體現在他的多用戶上 而SQL Server的性能優勢在多用戶上就顯得力不從心了

操作上SQL Server明顯要比Orcale簡單 如果你用過Java和DOTNET的開發平台 區別的基本就是Oracle和SQL Server不同 Oracle的界面基本是基於Java的 大部分的工具是Dos界面的 甚至SQLPlus也是 SQL Server是跟VB一樣 全圖形界面 很少見到DOS窗口 SQL Server中的企業管理器給用戶提供一個全圖形界面的集成管理控制台來集中管理多個伺服器 Oracle也有自己的企業管理器 而且它的性能在某些方面甚至超過了SQL Server的企業管理器 但它安裝較為困難

Orcale資料庫和SQL Server資料庫那個更快?其實是一個很難答的問題 因為存在許多不定因素 包括處理類型 數據分布以及硬體基礎設施等

SQL Server 是一個具備完全Web支持的資料庫產品 提供了可擴展標記語言核心支持以及Internet上和防火牆外進行查詢的能力 具有可伸縮性 靈活性 擴充性好 而且價格便宜等特點 而Oracle則有著可靠安全性 速度比SQL Server快上百倍 但其價格在實施中卻比SQL Server它高出了幾百倍

lishixin/Article/program/Oracle/201311/18988

⑤ 在不自動提交的情況下,回滾段有什麼用。

回滾段用於容納update, insert, delete語句時產生的中間數據,這些中間數據就是用於「回滾」(rollback)的。
如果回滾段設置過小,你在對大表執行update, insert, delete語句時可能會一直卡死在一個地方,你這時通過DBA工具查看回滾段表空間,使用率會達到99%,這時只能通過擴大回滾段表空間來解決。
沒有回滾段是不可想像的。

⑥ oracle資料庫和sql server的區別

ORACLE與SQL SERVER的區別

ORACLE的文件體系結構為:

數據文件 .DBF (真實數據)

日誌文件 .RDO

控制文件 .CTL

參數文件 .ORA

SQL SERVER的文件體系結構為:

.MDF (數據字典)

.NDF (數據文件)

.LDF (日誌文件)


ORACLE存儲結構:

在ORACLE里有兩個塊參數PCTFREE(填充因子)和PCTUSED(復用因子),可控制塊確定塊本身何時有,何時沒有足夠的空間接受新信息(對塊的存儲情況的分析機制)這樣可降低數據行連接與行遷移的可能性。塊的大小可設置(OLTP塊和DSS塊)

在ORACLE中,將連續的塊組成區,可動態分配區(區的分配可以是等額的也可以是自增長的)可減少空間分配次數。

在ORACLEl里表可以分為多個段,段由多個區組成,每個段可指定分配在哪個表空間里(段的類型分為:數據段、索引段、回滾段、臨時段、CASH段。ORACLE里還可對表進行分區,可按照用戶定義的業務規則、條件或規范,物理的分開磁碟上的數據。

這樣大大降低了磁碟爭用的可能性。

ORACLE有七個基本表空間:

·SYSTEM表空間(存放數據字典和數據管理自身所需的信息)

·RBS回滾表空間

·TEMP臨時表空間

·TOOLS互動式表空間

·USERS用戶默認表空間

·INDX索引表空間

·DBSYS福數據表空間

不同的數據分別放在不同的表空間(數據字典與真實數據分開存放),在ORACLE里基表(存儲系統參數信息)是加密存儲,任何人都無法訪問。只能通過用戶可視視圖查看。


SQL SERVER 存儲結構

以頁為最小分配單位,每個頁為8K(不可控制,缺乏對頁的存儲情況的分析機制),

可將8個連續的頁的組成一個『擴展』,以進一步減少分配時所耗用的資源。(分配缺乏靈活性),在SQL SERVER里數據以表的方式存放,而表是存放在資料庫里。

SQL SERVER有五個基本資料庫:

·master(數據字典)

·mode(存放樣版)

·tempdb(臨時資料庫)

·msdb(存放調度信息和日誌信息)

·pubs(示例資料庫)

真實數據與數據字典存放在一起。對系統參數信息無安全機制。

ORACLE登入管理:

·SYSTEM/MANAGER (初始帳戶)

·SYS/CHANGE_ON_NSTALL

·INSTALL/ORACLE(安裝帳戶)

·SCOTT/TIGER(示例資料庫,測試用)

在ORACLE里默認只有三個系統用戶,ORACLE是通過用戶登入。


SQL SERVER登入管理:

·SQL SERVER身份驗證

·WINDOWS 身份驗證

在SQL SERVER里是通過WINDOWS用戶帳戶或是用SQL SERVER身份驗證連接資料庫的。

SQL不是一種語言,而是對ORACLE資料庫傳輸指令的一種方式。

SQL中NULL既不是字元也不是數字,它是預設數據。ORACLE提供了NVL函數來解決。


ORACLE中的字元串連接為 string1‖string2 ,SQL中為string1+string2.

集合操作:在SQL中只有UNION(並操作),ORACLE中包含MINUS(差操作)、 INTERECT(交操作)、UNION(並操作)。


索引

SQL的索引分為聚集索引和非聚集索引,還包括全文索引;

ORACLE的索引包括:B+樹索引,Bitmap點陣圖索引,函數索引,反序索引,主鍵索引,散列索引,本地索引。

ORACLE的數據類型比較復雜,有基本數據類型,衍生型,列對象型,表對象型,結構體型;

SQL中的數據比較簡單,只有一些簡單的基本數據類型無法提供事務操作。

⑦ 如何用LoadRunner分析資源佔用率

軟體測試工具LoadRunner分析頁面:

平均事務響應時間

Average Transation Response Time
優秀:<2s

良好:2-5s

及格:6-10s

不及格:>10s

每秒點擊率

Hits per
Second

當增大系統的壓力(或增加並發用戶數)時,吞吐率和TPS的變化曲線呈大體一致,則系統基本穩定。若壓力增大時,吞吐率的曲線增加到一定程度後出現變化緩慢,甚至平坦,很可能是網路出現帶寬瓶頸,同理若點擊率/TPS曲線出現變化緩慢或者平坦,很可能是伺服器響應時間增加,觀察伺服器資源使用情況,確定是否是伺服器問題。

請求響應時間

Time
to Last Byte

每秒系統處理事務數

Transaction per
second

吞吐量

Throughout

CPU利用率

Processor / %Processor Time
好:70%

壞:85%

很差:90%+

資料庫操作消耗的CPU時間

Processor / %User Time
如果該值較大,可以考慮是否能通過友好演算法等方法降低這個值。如果該伺服器是資料庫伺服器, Processor\%User Time
值大的原因很可能是資料庫的排序或是函數操作消耗了過多的CPU時間,此時可以考慮對資料庫系統進行優化。

核心態CPU平均利用率

Processor
/%Privileged Time 如果該參數值和"Physical
Disk"參數值一直很高,表明I/O有問題。可考慮更換更快的硬碟系統

處理隊列中的線程數

Processor / Processor Queue
Length 如果該值保持不變(>=2)個並且%Processor Time
超過90%,那麼可能存在處理器瓶頸。如果發現超過2,而處理器的利用率卻一直很低,那麼或許更應該去解決處理器阻塞問題,這里處理器一般不是瓶頸。

文件系統緩存

Memory
/ Cache Bytes 50%的可用物理內存

剩餘的可用內存

Memory / Avaiable Mbytes 至少要有10%
的物理內存值

每秒下載頁數

Memory / pages/sec
好:無頁交換

壞:CPU每秒10個頁交換

很差:更多的頁交換

頁面讀取操作速率

Memory / page read/sec
如果頁面讀取操作速率很低,同時 % Disk Time 和 Avg.Disk Queue
Length的值很高,則可能有磁碟瓶徑。但是,如果隊列長度增加的同時頁面讀取速率並未降低,則內存不足。

物理磁碟利用率

Physical
Disk / %Disk Time
好:<30%

壞:<40%

很差:<50%+

物理磁碟平均磁碟I/O隊列長度

Physical Disk /
Avg.Disk Queue Length 該值應不超過磁碟數的1.5~2 倍。要提高性能,可增加磁碟

網路吞吐量

Network
Interface / Bytes Total/sec
判斷網路連接速度是否是瓶頸,可以用該計數器的值和目前網路的帶寬,結果應該小於50%

數據高速緩存區命中率
命中率應大於0.90最好

共享區庫緩存區命中率 命中率應大於0.99

監控 SGA 中字典緩沖區的命中率
命中率應大於0.85

檢測回滾段的爭用 小於1%

監控 SGA
中重做日誌緩存區的命中率應該小於1%

監控內存和硬碟的排序比率 最好使它小於 10%

⑧ oracle 體系結構怎麼樣 去理解


1、 ORACLE 實例――包括內存結構與後台進程 2、 ORACLE 資料庫――物理操作系統文件的集合 3、 了解內存結構的組成 4、 了解後台進程的作用

1、 Oracle 實例――包括內存結構與後台進程
2、 Oracle 資料庫――物理操作系統文件的集合
3、 了解內存結構的組成
4、 了解後台進程的作用
5、 了解資料庫的物理文件
6、 解釋各種邏輯結構

一、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會把他的分析結果給保存在Shared pool的Library Cache中,當資料庫第二次執行該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中查詢到,對於編程者來說,要盡量提高語句的重用率,減少語句的分析時間。一個設計的差的應用程序可以毀掉整個資料庫的Share pool,提高SQL語句的重用率必須先養成良好的變成習慣,盡量使用Bind變數。

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

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

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

這些緩沖是對應所有數據文件中的一些被使用到的數據塊。讓他們能夠在內存中進行操作。在這個級別里沒有系統文件,,戶數據文件,臨時數據文件,回滾段文件之分。也就是任何文件的數據塊都有可能被緩沖。資料庫的任何修改都在該緩沖里完成,並由DBWR進程將修改後的數據寫入磁碟。

這個緩沖區的塊基本上在兩個不同的列表中管理。一個是塊的「臟」表(Dirty List),需要用資料庫塊的

書寫器(DBWR)來寫入,另外一個是不臟的塊的列表(Free List),一般的情況下,是使用最近最少使用 (Least Recently Used,LRU)演算法來管理。塊緩沖區高速緩存又可以細分為以下三個部分(Default pool,Keep pool,Recycle pool)。如果不是人為設置初始化參數(Init.ora),Oracle將默認為Default pool。由於操作系統定址能力的限制,不通過特殊設置,在32位的系統上,塊緩沖區高速緩存最大可以達到1.7G,在64位系統上,塊緩沖區高速緩存最大可以達到10G。

c、重做日誌緩沖區(Redo log buffer)

重做日誌文件的緩沖區,對資料庫的任何修改都按順序被記錄在該緩沖,然後由LGWR進程將它寫入磁碟。這些修改信息可能是DML語句,如(Insert,Update,Delete),或DDL語句,如(Create,Alter,Drop等)。 重做日誌緩沖區的存在是因為內存到內存的操作比較內存到硬碟的速度快很多,所以重作日誌緩沖區可以加快資料庫的操作速度,但是考慮的資料庫的一致性與可恢復性,數據在重做日誌緩沖區中的滯留時間不會很長。所以重作日誌緩沖區一般都很小,大於3M之後的重作日誌緩沖區已經沒有太大的實際意義。

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

Java 的程序區,Oracle 8I 以後,Oracle 在內核中加入了對Java的支持。該程序緩沖區就是為Java 程序保留的。如果不用Java程序沒有必要改變該緩沖區的默認大小。

e、大池(Large Pool)

大池的得名不是因為大,而是因為它用來分配大塊的內存,處理比共享池更大的內存,在8.0開始引入。

下面對象使用大池:

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

語句的並行查詢(Parallel Executeion of Statements)――允許進程間消息緩沖區的分配,用來協調 並行查詢伺服器

備份(Backup)――用於RMAN磁碟I/O緩存

4、後台進程(Background process)

後台進程是Oracle的程序,用來管理資料庫的讀寫,恢復和監視等工作。Server Process主要是通過他和user process進行聯系和溝通,並由他和user process進行數據的交換。在Unix機器上,Oracle後台進程相對於操作系統進程,也就是說,一個Oracle後台進程將啟動一個操作系統進程;在Windows機器上, Oracle後台進程相對於操作系統線程,打開任務管理器,我們只能看到一個Oracle.EXE的進程,但是通過另外的工具,就可以看到包含在這里進程中的線程。

在Unix上可以通過如下方法查看後台進程:

ps ?ef | grep ora_
# ps -ef | grep ora_ | grep XCLUAT
Oracle 29431 1 0 Sep 02 2:02 ora_dbwr_SID
Oracle 29444 1 0 Sep 02 0:03 ora_ckpt_SID
Oracle 29448 1 0 Sep 02 2:42 ora_smon_SID
Oracle 29442 1 0 Sep 02 3:25 ora_lgwr_SID
Oracle 29427 1 0 Sep 02 0:01 ora_pmon_SID

a、Oracle系統有5 個基本進程他們是
DBWR(數據文件寫入進程)
LGWR(日誌文件寫入進程)
SMON(系統監護進程)
PMON(用戶進程監護進程)
CKPT(檢查點進程,同步數據文件, 日誌文件,控制文件)

b、DBWR
將修改過的數據緩沖區的數據寫入對應數據文件
維護系統內的空緩沖區
這里指出幾個容易錯誤的概念:
當一個更新提交後,DBWR把數據寫到磁碟並返回給用戶提交完成.
DBWR會觸發CKPT 後台進程
DBWR不會觸發LGWR 進程
上面的概念都是錯誤的.
DBWR是一個很底層的工作進程,他批量的把緩沖區的數據寫入磁碟。和任何前台用戶的進程幾乎沒有什麼關系,也不受他們的控制。至於DBWR會不會觸發LGWR和CKPT進程,我們將在下面幾節里討論。
DBWR工作的主要條件如下
DBWR 超時
系統中沒有多的空緩沖區用來存放數據
CKPT 進程觸發DBWR 等

c、LGWR
將重做日誌緩沖區的數據寫入重做日誌文件,LGWR是一個必須和前台用戶進程通信的進程。當數據被修改的時候,系統會產生一個重做日誌並記錄在重做日誌緩沖區內。這個重做日誌可以類似的認為是以下的一個結構:
SCN=000000001000
數據塊ID
對象ID=0801
數據行=02
修改後的數據=0011
提交的時候,LGWR必須將被修改的數據的重做日誌緩沖區內數據寫入日誌數據文件,然後再通知前台進程提交成功,並由前台進程通知用戶。從這點可以看出LGWR承擔了維護系統數據完整性的任務。
LGWR 工作的主要條件如下
用戶提交
有1/3 重做日誌緩沖區未被寫入磁碟
有大於1M 重做日誌緩沖區未被寫入磁碟
超時
DBWR需要寫入的數據的SCN號大於LGWR 記錄的SCN號,DBWR 觸發LGWR寫入

d、SMON
工作主要包含
清除臨時空間
在系統啟動時,完成系統實例恢復
聚結空閑空間
從不可用的文件中恢復事務的活動
OPS中失敗節點的實例恢復
清除OBJ$表
縮減回滾段
使回滾段離線

e、PMON
主要用於清除失效的用戶進程,釋放用戶進程所用的資源。如PMON將回滾未提交的工作,釋放鎖,釋放分配給失敗進程的SGA資源。

f、CKPT
同步數據文件,日誌文件和控制文件,由於DBWR/LGWR的工作原理,造成了數據文件,日誌文件,控制文件的不一至,這就需要CKPT進程來同步。CKPT會更新數據文件/控制文件的頭信息。
CKPT工作的主要條件如下
在日誌切換的時候
資料庫用immediate ,transaction , normal 選項shutdown 資料庫的時候
根據初始話文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET 的設置的數值來確定
用戶觸發
以下進程的啟動需要手工配置

g、ARCH
當資料庫以歸檔方式運行的時候,Oracle會啟動ARCH進程,當重做日誌文件被寫滿時,日誌文件進行切換,舊的重做日誌文件就被ARCH進程復制到一個/多個特定的目錄/遠程機器。這些被復制的重做日誌文件被叫做歸檔日誌文件。

h、RECO
負責解決分布事物中的故障。Oracle可以連接遠程的多個資料庫,當由於網路問題,有些事物處於懸而未決的狀態。RECO進程試圖建立與遠程伺服器的通信,當故障消除後,RECO進程自動解決所有懸而未決的會話。
i、服務進程Server Process
服務進程的分類
專用服務進程(Dedicated Server Process)
一個服務進程對應一個用戶進程
共享服務進程(MultiTreaded Server Process)
一個服務進程對應多個用戶進程,輪流為用戶進程服務。
PGA & UGA
PGA = Process Global Area
UGA = User Global Area
他保存了用戶的變數、許可權、堆棧、排序空間等用戶信息,對於專用伺服器進程,UGA在PGA中分配。對於多線程進程,UGA在Large pool中分配。

j、用戶進程User Process
在客戶端,將用戶的SQL 語句傳遞給服務進程

5、一個貫穿資料庫全局的概念----系統改變號SCN(System Change Number)
系統改變號,一個由系統內部維護的序列號。當系統需要更新的時候自動增加,他是系統中維持數據的一致性和順序恢復的重要標志。

a. 查詢語句不會使SCN增加,就算是同時發生的更新,資料庫內部對應的SCN也是不同的。這樣一來就保證了數據恢復時候的順序。

b. 維持數據的一致性,當一

二、Oracle 資料庫

Oracle資料庫的組成――物理操作系統文件的集合。主要包括以下幾種。

1、控制文件(參數文件init.ora記錄了控制文件的位置)
控制文件包括如下主要信息
資料庫的名字,檢查點信息,資料庫創建的時間戳
所有的數據文件,聯機日誌文件,歸檔日誌文件信息
備份信息等
有了這些信息,Oracle就知道那些文件是數據文件,現在的重做日誌文件是哪些,這些都是系統啟動和運行的基本條件,所以他是Oracle運行的根本。如果沒有控制文件系統是不可能啟動的。控制文件是非常重要的,一般採用多個鏡相復制來保護控制文件,或採用RAID來保護控制文件。控制文件的丟失,將使資料庫的恢復變的很復雜。
控制文件信息可以從V$Controlfile中查詢獲得

2、數據文件(數據文件的詳細信息記載在控制文件中)
可以通過如下方式查看數據文件
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
從以上可以看出,數據文件大致可以分為以下幾類:

i. 系統數據文件(system_01.dbf)
存放系統表和數據字典,一般不放用戶的數據,但是用戶腳本,如過程,函數,包等卻是保存在數據字典中的。
名詞解釋:數據字典 數據字典是一些系統表或視圖,他存放系統的信息,他包括資料庫版本,數據文件信息,表與索引等段信息,系統的運行狀態等各種和系統有關的信息和用戶腳本信息。資料庫管理員可以通過對數據字典的查詢,就可以了解到Oracle的運行狀態。

ii. 回滾段文件(rbs_01.dbf)
如果資料庫進行對數據的修改,那麼就必須使用回滾段,回滾段是用來臨時存放修改前的數據(Before Image)。回滾段通常都放在一個單獨的表空間上(回滾表空間),避免表空間碎片化,這個表空間包含的數據文件就是回滾數據文件。

iii. 臨時數據文件(temp_01.dbf)
主要存放用戶的排序等臨時數據,與回滾段相似,臨時段也容易引起表空間碎片化,而且沒有辦法在一個永久表空間上開辟臨時段,所以就必須有一個臨時表空間,它所包含的數據文件就是臨時數據文件,主要用於不能在內存上進行的排序操作。我們必須為用戶指定一個臨時表空間。

iv. 用戶數據文件(/applsys_data_01.dbf ,applsys_indx_01.dbf)
存放用戶數據,這里列舉了兩類常見的用戶型數據,一般數據和索引數據,一般來說,如果條件許可的話,可以考慮放在不同的磁碟上。

3、重做日誌文件(聯機重做日誌)
用戶對資料庫進行的任何操作都會記錄在重做日誌文件。在了解重做日誌之前必須了解重做日誌的兩個概念,重做日誌組和重做日誌組成員(Member),一個資料庫中至少要有兩個日誌組文件,一組寫完後再寫另一組,即輪流寫。每個日誌組中至少有一個日誌成員,一個日誌組中的多個日誌成員是鏡相關系,有利於日誌文件的保護,因為日誌文件的損壞,特別是當前聯機日誌的損壞,對資料庫的影響是巨大的。
聯機日誌組的交換過程叫做切換,需要特別注意的是,日誌切換在一個優化效果不好的資料庫中會引起臨時的「掛起」。掛起大致有兩種情況:
在歸檔情況下,需要歸檔的日誌來不及歸檔,而聯機日誌又需要被重新利用
檢查點事件還沒有完成(日誌切換引起檢查點),而聯機日誌需要被重新利用
解決這種問題的常用手段是:

i.增加日誌組

ii.增大日誌文件成員大小
通過v$log可以查看日誌組,v$logfile可以查看具體的成員文件。

4、歸檔日誌文件
Oracle可以運行在兩種模式之中,歸檔模式和不歸檔模式。如果不用歸檔模式,當然,你就不會有歸檔日誌,但是,你的系統將不會是一個實用系統,特別是不能用於生產系統,因為你可能會丟失數據。但是在歸檔模式中,為了保存用戶的所有修改,在重做日誌文件切換後和被覆蓋之間系統將他們另外保存成一組連續的文件系列,該文件系列就是歸檔日誌文件。
有人或許會說,歸檔日誌文件佔領我大量的硬碟空間,其實,具體想一想,你是願意浪費一點磁碟空間來保護你的數據,還是願意丟失你的數據呢?顯而義見,我們需要保證我們的數據的安全性。其實,歸檔並不是一直佔領你的磁碟空間,你可以把她備份到磁帶上,或則刪除上一次完整備份前的所有日誌文件。

5、初始化參數文件
initSID.ora或init.ora文件,因為版本的不一樣,其位置也可能會不一樣。在8i中,通常位於$Oracle_HOME/admin//Pfile下,初始化文件記載了許多資料庫的啟動參數,如內存,控制文件,進程數等,在資料庫啟動的時候載入(Nomount時載入),初始化文件記錄了很多重要參數,對資料庫的性能影響很大,如果不是很了解,不要輕易亂改寫,否則會引起資料庫性能下降。

6、其他文件
i . 密碼文件
用於Oracle 的具有sysdba許可權用戶的認證.
ii. 日誌文件
報警日誌文件(alert.log或alrt.ora)
記錄資料庫啟動,關閉和一些重要的出錯信息。資料庫管理員應該經常檢查這個文件,並對出現的問題作出即使的反應。你可以通過以下SQL 找到他的路徑select value from v$PARAMETER where name ="background_mp_dest";
後台或用戶跟蹤文件
系統進程或用戶進程出錯前寫入的信息,一般不可能讀懂,可以通過Oracle的TKPROF工具轉化為可以讀懂的格式。對於系統進程產生的跟蹤文件與報警日誌文件的路徑一樣,用戶跟蹤文件的路徑,你可以通過以下SQL找到他的路徑select value from v$PARAMETER where name ="user_mp_dest";

三、Oracle邏輯結構

1、 表空間(tablespace)
表空間是資料庫中的基本邏輯結構,一系列數據文件的集合。一個表空間可以包含多個數據文件,但是一個數據文件只能屬於一個表空間。

2、 段(Segment)
段是對象在資料庫中佔用的空間,雖然段和資料庫對象是一一對應的,但段是從資料庫存儲的角度來看的。一個段只能屬於一個表空間,當然一個表空間可以有多個段。
表空間和數據文件是物理存儲上的一對多的關系,表空間和段是邏輯存儲上的一對多的關系,段不直接和數據文件發生關系。一個段可以屬於多個數據文件,關於段可以指定擴展到哪個數據文件上面。
段基本可以分為以下四種
數據段(Data Segment)
索引段(Index Segment)
回滾段(Rollback Segment)
臨時段(Temporary Segment)

3、區間(Extent)
關於Extent的翻譯有多種解釋,有的譯作擴展,有的譯作盤區,我這里通常譯為區間。在一個段中可以存在多個區間,區間是為數據一次性預留的一個較大的存儲空間,直到那個區間被用滿,資料庫會繼續申請一個新的預留存儲空間,即新的區間,一直到段的最大區間數(Max Extent)或沒有可用的磁碟空間可以申請。 在Oracle8i以上版本,理論上一個段可以無窮個區間,但是多個區間對Oracle卻是有性能影響的,Oracle建議把數據分布在盡量少的區間上,以減少Oracle的管理與磁頭的移動。

4、Oracle數據塊(Block)
Oracle最基本的存儲單位,他是OS數據塊的整數倍。Oracle的操作都是以塊為基本單位,一個區間可以包含多個塊(如果區間大小不是塊大小的整數倍,Oracle實際也擴展到塊的整數倍)。

5、基本表空間介紹

a. 系統表空間
主要存放數據字典和內部系統表基表
查看數據數據字典的SQL
select * from dict
查看內部系統表的SQL
select * from v$fixed_view_definition
DBA對系統的系統表中的數據字典必須有一個很深刻的了解,他們必須准備一些基礎的SQL語句,通過這些SQL可以立即了解系統的狀況和資料庫的狀態,這些基本的SQL包括
系統的剩餘空間
系統的SGA
狀態系統的等待
用戶的許可權
當前的用戶鎖
緩沖區的使用狀況等
在成為DBA 的道路上我們不建議你過分的依賴於OEM/Quest 等優秀的資料庫管理工具,因為他們不利於你對數據數據字典的理解,SQL語句可以完成幾乎全部的資料庫管理工作。
大量的讀少量的寫是該表空間的一個顯著的特點。

b. 臨時表空間.
臨時表空間顧名思義是用來存放臨時數據的,例如排序操作的臨時空間,他的空間會在下次系統啟動的時候全部被釋放。

c. 回滾段表空間

i. 回滾段在系統中的作用
當資料庫進行更新插入刪除等操作的時候,新的數據被更新到原來的數據文件,而舊的數據(Before Image)就被放到回滾段中,如果數據需要回滾,那麼可以從回滾段將數據再復制到數據文件中。來完成數據的回滾。在系統恢復的時候, 回滾段可以用來回滾沒有被commit 的數據,解決系統的一至性。
回滾段在什麼情況下都是大量的寫,一般是少量讀,因此建議把回滾段單獨出來放在一個單獨的設備(如單獨的磁碟或RAID),以減少磁碟的IO爭用。

ii. 回滾段的工作方式
一個回滾表空間可以被劃分成多個回滾段.
一個回滾段可以保存多個會話的數據.
回滾段是一個圓形的數據模型
假設回滾段由4 個區間組成,他們的使用順序就是區間1à區間2à區間3à區間4à區間1。也就是說,區間是可以循環使用的,當區間4到區間1的時候,區間1裡面的會話還沒有結束, 區間4用完後就不能再用區間1,這時系統必須分配區間5,來繼續為其他會話服務服務。
我們分析一個Update 語句的完成

①. 用戶提交一個Update 語句

②. Server Process 檢查內存緩沖.
如果沒有該數據塊的緩沖,則從磁碟讀入

i. 如果沒有內存的有效空間,DBWR被啟動將未寫入磁碟的臟緩沖寫入磁碟

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

③. 在緩沖內更新數據

i. 申請一個回滾段入口,將舊數據寫如回滾段

ii. 加鎖並更新數據

iii. 並在同時將修改記錄在Redo log buffer中

⑨ Oracle中邏輯結構和物理結構,他們之間的關系是什麼

1.1、物理結構:由構成資料庫的操作系統文件組成,它是從操作系統的角度來分析資料庫的組成,在操作系統中可以看得到的文件,也就是說它是資料庫在操作系統中的存儲位置。常見的物理結構包括:控制文件、數據文件、重作日誌文件、歸檔日誌文件、初始化參數文件、還有其它文件(密碼文件、報警日誌文件和後台及用戶跟蹤文件)。
1.2、邏輯結構:描述資料庫從邏輯上如何存儲資料庫中的數據。它是從資料庫的角度來分析數據的邏輯存儲。常見的邏輯結構包括:表空間、數據段、擴展區間、塊構成。需要明白的是:
*1、資料庫邏輯上是由一個或多個表空間組成的,常見的表空間包括:系統表空間、系統輔助表空間、UNDO表空間、臨時表空間、用戶表空間
*2、表空間與數據文件是物理上的一對多的關系,既一個表空間對應一個或多個數據文件,但是一個數據文件只能屬於一個表空間
*3、表空間將資料庫的物理結構與邏輯結構相連接
2、物理結構
2.1、控制文件 (Control files):主要記錄資料庫的物理結構及其他的一些控制信息,如資料庫的名稱、數據文件、日誌文件的名稱及位置。通常oracle會保留多個控制文件副本,並分別放在不同的物理位置,一旦其中的某個控制文件損壞,則可以通可其它的副本進行啟動。
參數文件init.ora記錄了控制文件的位置
控制文件包括如下主要信息
�6�1資料庫的名字,檢查點信息,資料庫創建的時間戳
�6�1所有的數據文件,聯機日誌文件,歸檔日誌文件信息
�6�1備份信息等
有了這些信息,Oracle就知道那些文件是數據文件,現在的重做日誌文件是哪些,這些都是系統啟動和運行的基本條件,所以他是Oracle運行的根本。如果沒有控制文件系統是不可能啟動的。控制文件是非常重要的,一般採用多個鏡相復制來保護控制文件,或採用RAID來保護控制文件。控制文件的丟失,將使資料庫的恢復變的很復雜。
控制文件信息可以從v$controlfile中查詢獲得
SQL> select * from v$controlfile;
STATUS NAME
------- --------------------------------------------------------------------------------
C:\ORACLE\ORADATA\ORCL\CONTROL01.CTL
C:\ORACLE\ORADATA\ORCL\CONTROL02.CTL
C:\ORACLE\ORADATA\ORCL\CONTROL03.CTL2.2、數據文件(Data files),注意可以與後面講到的表空間進行對比,數據文件的詳細信息記載在控制文件中。注意:SYSTEM表空間是不允許離線的。在進行資料庫恢復時,很多時候需要先將故障數據文件離線。
可以通過如下方式查看數據文件:
SQL> select name,status,enabled from v$datafile;
NAME STATUS ENABLED
-------------------------------------------------------------------------------- ------- ----------C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSTEM01.DBF ONLINE READ WRITE
C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS01.DBF ONLINE READ WRITE
C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\SYSAUX01.DBF ONLINE READ WRITE
C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\USERS01.DBF ONLINE READ WRITE
C:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\EXAMPLE01.DBF ONLINE READ WRITE
C:\ORACLE\ORADATA\ORCL\TEMP01.DBF ONLINE READ WRITE
2.3、重做日誌文件(Redo files)用戶對資料庫進行的任何操作都會記錄在重做日誌文件。在了解重做日誌之前必須了解重做日誌的兩個概念,重做日誌組和重做日誌組成員(Member),一個資料庫中至少要有兩個日誌組文件,一組寫完後再寫另一組,即輪流寫。每個日誌組中至少有一個日誌成員,一個日誌組中的多個日誌成員是鏡相關系,有利於日誌文件的保護,因為日誌文件的損壞,特別是當前聯機日誌的損壞,對資料庫的影響是巨大的。
聯機日誌組的交換過程叫做切換,需要特別注意的是,日誌切換在一個優化效果不好的資料庫中會引起臨時的「掛起」。掛起大致有兩種情況:
�6�1在歸檔情況下,需要歸檔的日誌來不及歸檔,而聯機日誌又需要被重新利用
�6�1檢查點事件還沒有完成(日誌切換引起檢查點),而聯機日誌需要被重新利用
解決這種問題的常用手段是:
i.增加日誌組
ii.增大日誌文件成員大小
通過v$log可以查看日誌組,v$logfile可以查看具體的成員文件。SQL> select group#,thread#,bytes,archived,members,archived,status from v$log; GROUP# THREAD# BYTES ARC MEMBERS ARC STATUS
---------- ---------- ---------- --- ---------- --- ----------------
1 1 10485760 NO 1 NO CURRENT
2 1 10485760 NO 1 NO INACTIVE
3 1 10485760 NO 1 NO INACTIVE2.4、歸檔日誌文件(Archived files)Oracle可以運行在兩種模式之中,歸檔模式和不歸檔模式。如果不用歸檔模式,當然,你就不會有歸檔日誌,但是,你的系統將不會是一個實用系統,Oracle不能保證數據能夠被正確恢復,因為你可能會丟失數據。但是在歸檔模式中,為了保存用戶的所有修改,在重做日誌文件切換後和被覆蓋之間系統將他們另外保存成一組連續的文件系列,該文件系列就是歸檔日誌文件。
有人或許會說,歸檔日誌文件佔領我大量的硬碟空間,其實,具體想一想,你是願意浪費一點磁碟空間來保護你的數據,還是願意丟失你的數據呢?顯而義見,我們需要保證我們的數據的安全性。其實,歸檔並不是一直佔領你的磁碟空間,你可以把她備份到磁帶上,或則刪除上一次完整備份前的所有日誌文件。2.5、初始化參數文件(Parameter file)initSID.ora或init.ora文件,因為版本的不一樣,其位置也可能會不一樣。在8i或10g中,通常位於$ORACLE_HOME/admin/<SID>/Pfile下
初始化文件記載了許多資料庫的啟動參數,如內存,控制文件,進程數等,在資料庫啟動的時候載入(Nomount時載入),初始化文件記錄了很多重要參數,對資料庫的性能影響很大,如果不是很了解,不要輕易亂改寫,否則會引起資料庫性能下降。2.6、其他文件i . 密碼文件。用於Oracle 的具有sysdba許可權用戶的認證。文件一般位於
$ORACLE_HOME/database/PWD<sid>.ora。
ii. 日誌文件�6�1報警日誌文件(alert.log或alrt<SID>.ora)
記錄資料庫啟動,關閉和一些重要的出錯信息。資料庫管理員應該經常檢查這個文件,並對出現的問題作出即使的反應。你可以通過以下SQL 找到他的路徑
select value from v$PARAMETER where name ='background_mp_dest';
VALUE
--------------------------------------------------------------------------------
C:\oracle\admin\orcl\bmp
�6�1後台或用戶跟蹤文件
系統進程或用戶進程出錯前寫入的信息,一般不可能讀懂,可以通過ORACLE的TKPROF工具轉化為可以讀懂的格式。對於系統進程產生的跟蹤文件與報警日誌文件的路徑一樣,用戶跟蹤文件的路徑,你可以通過以下SQL找到他的路徑
select value from v$PARAMETER where name ='user_mp_dest';
SQL> select value from v$PARAMETER where name ='user_mp_dest';VALUE
--------------------------------------------------------------------------------
C:\oracle\admin\orcl\ump3、邏輯結構
3.1、表空間(tablespace)
表空間是資料庫中的基本邏輯結構,一系列數據文件的集合。一個表空間可以包含多個數據文件,但是一個數據文件只能屬於一個表空間。3.2、 段(Segment)
段是對象在資料庫中佔用的空間,雖然段和資料庫對象是一一對應的,但段是從資料庫存儲的角度來看的。一個段只能屬於一個表空間,當然一個表空間可以有多個段。
表空間和數據文件是物理存儲上的一對多的關系,表空間和段是邏輯存儲上的一對多的關系,段不直接和數據文件發生關系。一個段可以屬於多個數據文件,關於段可以指定擴展到哪個數據文件上面。
段基本可以分為以下四種
�6�1數據段(Data Segment)
�6�1索引段(Index Segment)
�6�1回滾段(Rollback Segment)
�6�1臨時段(Temporary Segment)3.3、區間(Extent)
在一個段中可以存在多個區間,區間是為數據一次性預留的一個較大的存儲空間,直到那個區間被用滿,資料庫會繼續申請一個新的預留存儲空間,即新的區間,一直到段的最大區間數(Max Extent)或沒有可用的磁碟空間可以申請。
在ORACLE8i以上版本,理論上一個段可以無窮個區間,但是多個區間對ORACLE卻是有性能影響的,ORACLE建議把數據分布在盡量少的區間上,以減少ORACLE的管理與磁頭的移動,但是在某些特殊情況下,需要把一個段分布在多個數據文件或多個設備上,適當的加多區間數也是有很大好處的。3.4、Oracle數據塊(Block)
ORACLE最基本的存儲單位,他是OS數據塊的整數倍。ORACLE的操作都是以塊為基本單位,一個區間可以包含多個塊(如果區間大小不是塊大小的整數倍,ORACLE實際也擴展到塊的整數倍)。3.5、基本表空間介紹
3.5.1、系統輔助表空間(sysaux)
SYSAUX表空間在Oracle Database 10g中引入,作為SYSTEM表空間的輔助表空間.
以前一些使用獨立表空間或系統表空間的資料庫組件現在在SYSAUX表空間中創建.
通過分離這些組件和功能,SYSTEM表空間的負荷得以減輕.反復創建一些相關對象及組件引起SYSTEM表空間的碎片問題得以避免。
3.5.2、系統表空間(System)
該表空間包含的數據文件稱為系統數據文件。
該存放系統表和數據字典,一般不放用戶的數據,但是用戶腳本,如過程,函數,包等卻是保存在數據字典中的。
名詞解釋:數據字典
數據字典是一些系統表或視圖,他存放系統的信息,他包括資料庫版本,數據文件信息,表與索引等段信息,系統的運行狀態等各種和系統有關的信息和用戶腳本信息。資料庫管理員可以通過對數據字典的查詢,就可以了解到Oracle的運行狀態。
查看數據數據字典的SQL
select * from dict;
查看內部系統表的SQL
select * from v$fixed_view_definition;
大量的讀少量的寫是該表空間的一個顯著的特點。再次提醒:該表空間不能離線
3.5.3、 臨時表空間(Temporary)
該表空間包含的數據文件稱為臨時數據文件
主要存放用戶的排序等臨時數據,因為沒有辦法在一個永久表空間上開辟臨時段,所以就必須有一個臨時表空間,主要用於不能在內存上進行的排序操作。我們必須為用戶指定一個臨時表空間。
臨時段佔有的空間會在下次系統啟動的時候全部被釋放。
3.5.4、回滾段表空間(Rollback)
如果資料庫進行對數據的修改,那麼就必須使用回滾段,回滾段是用來臨時存放修改前的數據(UNDO)。回滾段通常都放在一個單獨的表空間上(回滾表空間),避免表空間碎片化,這個表空間包含的數據文件就是回滾數據文件。在Oracle9i中,提供了單獨的表空間用於保存回滾段,不再需要手工干預。
*1回滾段在系統中的作用
當資料庫進行更新插入刪除等操作的時候,新的數據被更新到原來的數據文件,而舊的數據(Before Image)就被放到回滾段中,如果數據需要回滾,那麼可以從回滾段將數據再復制到數據文件中。來完成數據的回滾。在系統恢復的時候, 回滾段可以用來回滾沒有被commit 的數據,解決系統的一直性讀。
回滾段在什麼情況下都是大量的寫,一般是少量讀,因此建議把回滾段單獨出來放在一個單獨的設備(如單獨的磁碟或RAID),以減少磁碟的IO爭用。
*2、回滾段的工作方式
�6�1一個回滾表空間可以被劃分成多個回滾段.
�6�1一個回滾段可以保存多個會話的數據.
�6�1回滾段是一個圓形的數據模型
3.5.5、用戶表空間(User)
其包含的數據文件稱為用戶數據文件
一般是由用戶建立,來存取用戶數據的表空間,一般有兩類常見的用戶型數據,數據和索引,一般來說,如果條件許可的話,可以考慮放在不同的磁碟上。
3.5.6 例子表空間(example):例子表空間,可以不管。,它是資料庫在操作系統中的存儲位置。常見的物理結構包括:控制文件、數據文件、重作日誌文件、歸檔日誌文件、初始化參數文件、還有其它文件(密碼文件、報警日誌文件和後台及用戶跟蹤文件)。

⑩ SQL資料庫打開的問題

能打開的,一種是安裝你的那種軟體,在就是直接在資料庫中就可以查看數據了。

閱讀全文

與回滾段爭用相關的資料

熱點內容
污水歸哪個部門 瀏覽:46
閥門除垢劑 瀏覽:88
液接電勢半透膜 瀏覽:939
燃氣壁掛爐地暖過濾器 瀏覽:320
沁園250左邊是什麼濾芯 瀏覽:40
污水井潛水用的什麼氧氣 瀏覽:549
飲水機壓力桶沒水是怎麼回事 瀏覽:45
真離子交換樹脂耐溫 瀏覽:107
廢離子交換樹脂主要危廢特性 瀏覽:243
農村建設污水處理設施 瀏覽:964
凈水器黃色顆粒是什麼 瀏覽:92
水處理樹脂的再生 瀏覽:143
凈水時活性炭可以用什麼代替 瀏覽:152
溴水分離為什麼要用蒸餾 瀏覽:580
污水集中處理站 瀏覽:232
城市污水處理公司年終總結 瀏覽:601
賓館的廢水排水量 瀏覽:237
污水池護欄安裝多少錢一米 瀏覽:943
雨水收集回用系統品牌 瀏覽:847
有機樹脂類廢物主要危害成分 瀏覽:795