導航:首頁 > 源碼編譯 > 如何編譯pmon

如何編譯pmon

發布時間:2023-02-01 16:30:07

⑴ 怎麼修復客戶端

WOW安裝位置文件夾內有修復工具,圖標是一把扳手,雙擊使用。

⑵ 如何啟動 oracle pmon的狀態

一:oracle裝好之後,各服務進程及作用。其中5個SMON,PMON,DBWR,CKPT,LGWR是必須的後台進程,不可關閉,否則資料庫將不能正常運行。二:.以下是轉載的:Serapymit操作觸發LGWR將日誌緩沖區數據寫入UNDO日誌),因此系統性能容易受到LGWR的影響。3.PMON進程監視進程PMON(theProcessMonitorProcess)進程負責監視資料庫的處理情況,並負責清除死掉的進程。PMON還負責重啟失敗的調度進程(dispatcherprocess)4.SMON系統監視進程SMON(theSystemMonitorProcess)進程負責在實例啟動時恢復實例,包括清除臨時段以及恢復因系統崩潰而中斷的事物。SMON還可以通過合並空閑分區的方式清除資料庫中的碎片5.CKPT檢查點進程CKPT(theCheckpointProcess)進程負責向DBWR進程發送信號,要求執行一次檢查點,並更新資料庫的所有數據和控制文件。CheckPoint(檢查點),是指有DBWR進程將所有修改過的數據緩沖區寫回數據文件。CKPT是可選的,如果沒有CKPT進程,則有LGWR代行這些任務。6.ARCHn歸檔進程ARCH(theArchiverProcess)負責將再現重做日誌復制到歸檔存儲器。進檔RDBMS運行在ARCHIVELOG模式時ARCH才有效,如果系統沒有運行在ARCHIVELOG模式,則系統失效後可能無法恢復。最後讓系統運行在ARCHIVELOG模式下,此時歸檔進程可能有多個。SQL>archiveloglist//查看是否為歸檔模式可以再資料庫Mount模式下開啟歸檔SQL>alterdatabasearchivelog;//開啟SQL>alterdatabasenoarchivelog;//關閉7.RECO恢復進程RECO(theRecoveryProcess)進程用於清除分布式資料庫中的未決(pending)事務,它負責分布式事務中本地部分的提交與回滾8.Dnnn調度進程如果選擇了MultithreadedServer選項,則對使用的每個通信協議至少有一個調度進程。調度進程(theDispatcherProcess,Dnnn)負責將用戶進程的請求轉發到一個可用的共享伺服器進程,並負責將用戶進程的請求轉發到一個可用的共享伺服器進程,並負責回送響應消息。9.Snnn共享伺服器進程當使用共享伺服器配置或MTS時,會用到共享伺服器進程(theSharedServersProcess,Snnn).這些進程如同專用伺服器進程(DedicatedServerProcess),但可以被多個用戶共享。10.LMSOracleRAC鎖管理服務使用RAC時,該服務用語管理集群中不同節點間的鎖.11.QMNn隊列管理進程使用高級隊列選項時(advancedqueueingoption),隊列管理進程(QueueManagerProcess)用於管理作業隊列,隊列數目可以達到10個,QMN0——QMN9三:有關JDBC的不是很懂,抱歉!!不過第一點說的5個進程是必須的,其餘的都可以考慮不要,

編譯grub2-mips啟動器,製作 MIPS 架構的 grubmips64el.efi

一. 實驗環境

二. grub 介紹

三. 在x86架構下,對grub1 與 grub2 引導階段剖析(再去結合龍芯PMON、昆侖固件、UEFI固件分析啟動過程,因為龍芯固件已包含 bootloader 功能,對比分析)

四. 分區類型選擇(X86情況下)

五. 製作 grubmips64el.efi

九. 參考資料

⑷ 編譯PMON出錯,該怎麼解決

必須要看到你具體的編譯器代碼我才能知道到底什麼問題。至少你要告訴我你編譯器的版本。 ====問題分析==== 最直接的一個肯定會報錯的地方就是cout

⑸ Oracle後台進程中哪些與CPU數量有關

Oracle實例的進程結構

里程這里說的是一個Unix系統的過程中,在Windows中,甲骨文是一個操作系統服務。

Oracle實例的內存區域和後台進程組成。

到一個單一的流程實例(進程執行所有的Oracle碼,只允許進入單用戶)和多進程實例Oracle實例(甲骨文代碼被執行多個進程在不同部位,為每個連接的用戶有一個過程,它允許多個用戶同時使用)。

在多進程架構,除了伺服器進程(請注意,這個「伺服器進程」並不是指所有流程實例,請參見下面的說明),還有其他後台進程,包括:採用dnnn,DBWR,LGWR,ARCH,PMON,SMON,CKPT,RECO等。在資料庫啟動之後,這些進程駐留的操作系統。甲骨文中的所有進程和量不能超過設定值參數過程:

SQL>顯示參數過程

當Oracle客戶端應用程序和Oracle實例連接時,Oracle會產生一個伺服器進程為這些客戶,這個過程widnows下的線程性能。這個過程的主要作用是:來解析,編譯,執行用戶的SQL語句的用戶發出的SQL語句,數據塊是沒有的情況下,當數據緩沖區,從磁碟數據文件中的數據讀取到的SGA的共享數據緩沖區在執行SQL語句返回的結果集的應用程序。使用下面的語句在資料庫中查詢用戶的會話信息。

SQL>選擇SUBSTR(1,3 s.sid)SID,SUBSTR(s.serial#,1,5)SER,SPID,SUBSTR(SCHEMANAME,1,10)架構,SUBSTR(型,1,3)典型,SUBSTR(解碼((consistent_gets「+ block_gets」),0,'無',(100 *(consistent_gets + block_gets physical_reads)/ consistent_gets + block_gets))),1,4)「%命中」 ,價值的cpu,SUBSTR(block_changes 1,5)bchng的V $進程p,V $ SESSTAT噸,V $ sess_io I,V $會話s i.sid = s.sid p.addr = PADDR(+ )和s.sid = t.sid t.statistic#= 12;

結果:

SID表示會話ID號中

SER表示會話串列#

SPID表示操作系統的系統進程ID號,序列號和相結合來表示單個會話的SID,

架構

典型代表資料庫的用戶名,工藝類型,用戶使用過程,BAC %的命中表示作為後台進程的數據緩沖區的命中率,

CPU,CPU使用時間,

bchng表示的數據塊數。 />下面描述了不同的後台進程。

1。 DBWR進程

DBWR(資料庫作家)過程緩沖區中的數據寫入數據文件的數據緩沖區管理。

當數據緩沖區中的數據被,被標記為「臟」,DBWR進程是負責「臟」數據被寫入到磁碟。 /> DBWR採用LRU演算法,以取代在數據緩沖區中的數據。

DBWR的作用包括:

1)管理數據緩沖區,以便伺服器進程總能找到空閑緩沖區

2)所有過的緩沖區數據寫入到資料庫文件 3)使用LRU演算法最近使用過的塊保留在內存

4)通過延遲寫來優化磁碟I / O。

在下列情況下DBWR臟數據寫入到磁碟數據文件:

1)當一個伺服器進程將緩沖數據塊「臟表」,的臟表面表達,在一定程度上轉移。 (臨界長度由參數DB_BLOCK_WRITE_BATCH的確定)

2)當一個伺服器進程在LRU表中查找緩沖DB_BLOCK_MAX_SCAN_CNT,沒有找到空閑緩沖區

3)超時

4)檢查點發生 BR p>在一個Oracle實例,允許啟動多個DBWR進程,DBWR進程號指定的參數DB_WRITE_PROCESSES的上限為20,其次是進程名會自動命名為:DBW0,DBW1 DBW2 ... DBW19。

SQL>顯示參數進程

2。 LGWR進程

日誌寫入(LGWR)進程將日誌數據從日誌緩沖區寫入磁碟的日誌文件。

LGWR進程的工作時序可以看到我寫的第一章,「交易過程。」

LGWR寫入光碟條件:

1)發生提交,提交;

2)日誌緩沖區的總數達到1/3;

3)加班;

4)DBWR檢查點進程需要清除緩沖區。

每個Oracle實例只有一個LGWR進程。

LGWR進程同步的日誌信息寫入日誌文件組的多個日誌成員,該組的成員之一,如果該文件被刪除或不可用,LGWR將日誌信息寫入,繼續組的其他文件,不影響操作的資料庫。

3。 SMON進程

SMON(系統監控器),系統監控的過程中,在實例啟動時執行實例恢復,並負責清理不再使用的臨時段。

4。 PMON進程

PMON(進程監視器),過程監控行駛里程,伺服器進程無法恢復執行過程中,負責清理內存,內存和釋放過程中所使用的資源。

5。 ARCH進程

(歸檔進程ARCH歸檔進程),當日誌寫入到磁碟或磁帶介質故障恢復完整的日誌信息。

日誌信息首先產生於日誌緩沖區,然後將日誌寫入器進程LGWR日誌數據寫入到日誌文件組,日誌切換,將被寫入歸檔進程ARCH日誌的數據從日誌文件歸檔日誌組。

在一個資料庫實例中,歸檔進程可以開始至10日,隨後通過進程名稱自動命名為ARC0 ARC1,ARC2的... ARC9,設置方法是:在參數文件中添加參數LOG_ARCHIVE_MAX_PROCESSES。關於如何啟用自動歸檔資料庫中,前面的「物理結構」這里所說的一些相關參數:

1)LOG_ARCHIVE_DEST:用於設置歸檔日誌文件的存放目錄

2) LOG_ARCHIVE_DUBLEX_DEST:用於設置歸檔日誌文件的鏡像存儲目錄,此參數在Oracle 8.0及以上版本支持

3)的LOG_ARCHIVE_DEST_n:用於設置多個鏡像目錄,其中1 <= N <= 10,此參數有以下三個選項:

(1)強制性的:你必須完成這個目錄指存檔,它可以切換。

(2)重新開放:歸檔目錄或介質故障,需要等待很長時間重新寫日誌,默認時間為300秒。

(3)可選:無論是否在歸檔完成,無論是交換機,該交換機的默認模式

舉例如下:

LOG_ARCHIVE_DEST_1 ='位置= / U01 / ORACLE /歸檔/

強制性的

REOPEN = 500'

LOG_ARCHIVE_DEST_2 ='位置= / u02/oracle/archive的/

可選'

的LOG_ARCHIVE_DEST_n只適用於甲骨文8i及以上的版本。

4)LOG_ARCHIVE_DEST_STATE_n:歸檔日誌目錄無效或效果,該參數對應的LOG_ARCHIVE_DEST_n 11。如:

LOG_ARCHIVE_DEST_STATE_1 =推遲

LOG_ARCHIVE_DEST_STATE_2 = ENABLE

該參數可以設置在線:

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = DEFER;

參數只適用於Oracle 10g及以上。

6。 CKPT進程

CKPT(檢查點,檢查點)的過程發生時,系統的所有資料庫文件和控制文件頭同步數字進行,以確保資料庫的同步。

以下兩個參數是CKPT有影響的:

LOG_CHECKPOINT_TIMEOUT:決定產生一個檢查點的時間間隔,單位秋季,默認為1800;

LOG_CHECKPOINT_INTERVAL:執行檢查點需要填寫日誌文件的塊數,默認是0,這意味著不工作。

變化信息資料庫系統與系統改變數表示SCN,SCN檢查點編號也稱為在日誌使用CHECKPOINT_CHANGE#這是數據文件,日誌文件,控制文件同步同步基礎,同時存儲在這三個,在系統中的變化,檢查點的數目也將發生變化。

主要原因CKPT產生定時:

1)日誌開關

2)達到LOG_CHECKPOINT_TIMEOUT指定的時間間隔

3)達到指定的日誌的塊LOG_CHECKPOINT_INTERVAL

4)資料庫關閉上下

5)DBA強制一個

6)離線表空間時,

7。 RECO進程

恢復,恢復(RECO)分布式資料庫系統的過程中,RECO進程自動解決分布式資料庫中的交易失敗。

8。 LCKn過程

LCKn(鎖進程)Oracle並行伺服器環境的多個實例的封鎖,這個過程可以啟動到10。

9。採用dnnn過程

dnnn格式(調度員,調度)過程。對於多線程伺服器體系結構。下一個「Oracle連接配置結構」

10。 SNP進程

的SNP作業過程主要用於分布式資料庫,資料庫快照的自動刷新之間,同時通達DBMS_JOB包計劃運行的自動存儲過程,SQL,PL / SQL程序。有兩個參數用於控制操作流程計劃:

1)JOB_QUEUE_PROCESS:用於設置的職位數目

2)JOB_QUEUE_INTERVAL:用於設置工作流程的過程是周期性的喚醒間隔
>

後台進程的跟蹤信息,所有的命令來資料庫的結構會自動將後台進程跟蹤記錄,Oracle後台進程跟蹤信息自動存儲,跟蹤文件名稱alter_SID。此文件的存儲位置由參數背景)DUMP_DEST規定。

TKPROF工具命令可用於跟蹤文件的格式,如:

$有TKPROF oralogfile1.log

除了跟蹤後台進程,您還可以啟用參數SQL_TRACE跟蹤用戶的聲明。參數文件:

TIMED_STATISTICS = TRUE

USER_DUMP_DEST =目錄名

MAX_DUMP_FILE_SIZE = 5M

SQL_TRACE = TRUE



SQL> ALTER SESSION SET SQL_TRACE = TRUE SQL跟蹤當前會話。

鎖等待問題與KILL SESSION

為了保證數據的一致性,系統提供了鎖定機制。可參數化的概念,上了鎖,「資料庫系統概論」一書。要了解當前用戶正在等待鎖資源:

SQL語句select a.username,a.sid,序列號,b.id1從V $ SESSION,V $ LOCK,其中a.lockwait = B。 KADDR

鎖定其他用戶,了解用戶的流程:
SQL>選擇A.USERNAME的,A.SID,A,串列#B.ID1,從V $ SESSION,V $ LOCK B,其中B。 ID1(SELECT DISTINCT E.ID1的V $ SESSION D,V $ LOCKê,WHERE D.LOCKWAIT = E.KADDR)及A.SID = B.SID與B.REQUEST = 0;

⑹ 如何查看當前系統下,有多少個資料庫實例,實例名是什麼

可以看一下系統中是否有多個pmon進程,如果有幾個pmon進程,就說明有幾個實例。命令如下:
ps -ef|grep ora_pmon

解釋:pmon進程,進程監視器(Process Monitor)oracle中用於恢復失敗的資料庫用戶的強制性進程,它先獲取失敗用戶的標識,釋放該用戶佔有的所有資料庫資源。一般一個oracle實例只能有一個pmon進程,可能通過查看pmon進程的多少來判斷有幾個實例。

⑺ 創建一個序列,第一次從5循環到10,以後再從0開始循環。如果數據的控制文件損壞了,需要如何解決故障。

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中
另外,站長團上有產品團購,便宜有保證

閱讀全文

與如何編譯pmon相關的資料

熱點內容
進程序員公司能穿涼鞋嗎 瀏覽:245
PDF框大小 瀏覽:84
單片機產生鋸齒波 瀏覽:225
如何修改ie代理伺服器 瀏覽:417
折紙手工解壓玩具不用a4紙 瀏覽:485
怎麼雙向傳輸伺服器 瀏覽:286
電腦如何實現跨網段訪問伺服器 瀏覽:549
模塊化網頁源碼位元組跳動 瀏覽:485
梯度下降演算法中遇到的問題 瀏覽:605
伺服器連接電視怎麼接 瀏覽:323
phploop語句 瀏覽:502
交叉編譯工具鏈里的庫在哪 瀏覽:781
安卓手q換號怎麼改綁 瀏覽:399
nba球星加密貨幣 瀏覽:789
命令看網速 瀏覽:124
java堆分配 瀏覽:161
linuxbuiltin 瀏覽:560
cstpdf 瀏覽:941
texstudio編譯在哪 瀏覽:353
國家反詐中心app注冊登記表怎麼注冊 瀏覽:972