Oracle10g的一些基本知識

db_wjw發表於2012-05-11

alert日誌
alert_.log儲存在background_dump_dest初始化引數指定的目錄中。
alert日誌是一個按時間先後儲存資訊和錯誤的日誌,包括以下資訊:
1、在啟動時用到的所有非預設的初始化引數。
2、所有的內部錯誤(ORA-600),塊訛誤錯誤(ORA-1578),和死鎖錯誤(ORA-60).
3、管理的操作,比如create,alter,drop database和tablespace的SQL語句,Enterprise Manager或SQL*Plus的startup,shutdown,archive log和recover語句。
4、一些與共享伺服器和排程器程式相關的資訊和錯誤。
5、在自動重新整理物化檢視過程中遇到的錯誤。

alert_.log有時會變得太大,難以掌控,可以定期備份該檔案並刪除當前的日誌檔案,oracle會自動建立新的日誌檔案。

database_block_structure
oracle資料庫塊包括以下結構:
1、塊(標)頭:塊表頭包含了段的型別(比如說是表還是索引),資料塊的地址,表的目錄,行的目錄,塊的表頭從塊的頂部往下增長。
2、行資料:這裡儲存行的真實資料,在塊的最底部,行資料的空間從塊的底部往上增長。
3、空閒空間:塊的中間是空閒資料,這使得塊頭和儲存資料區都可以按需要增長,當插入新行時或者更新已經存在的行的值為更大的值時,行資料會佔用空閒空間,最初,空閒空間是連續的,但刪除或者更新可能導致塊中的空閒空間出現碎片,當需要時oracle伺服器會合並資料塊中的空閒空間。


drop_database
命令列刪除資料庫的條件:

1、The database must be mounted and closed.
2、The database must be mounted exclusively—not in shared mode.
3、The database must be mounted as RESTRICTED.

An example of this statement is:
DROP DATABASE;

The DROP DATABASE statement has no effect on archived log files nor does it have any effect
on copies or backups of the database. It is best to use Recovery Manager (RMAN) to delete such
files. If the database is on raw disks, then the actual raw disk special files are not deleted.


dynamic_performance_views
利用動態效能試圖能訪問資料庫改變狀態和健康狀況的資訊

oracle維護一組關於資料庫例項的操作和效能的資料,叫做動態效能試圖,這些試圖基於資料庫伺服器中記憶體結構中建立的虛擬表,就是說,這些表不是依存於資料庫中約定俗成的表。這也是為什麼有些檢視可以在資料庫掛載或開啟之前就可以顯示資料的原因。


動態效能試圖包含以下資訊:
1、會話
2、檔案狀態
3、jobs和tasks的進展
4、鎖
5、備份狀態
6、記憶體的使用和分配
7、系統和會話的引數
8、SQL的執行
9、統計資訊和閥值
DICT和DICT_COLUMNS檢視也包含了這些動態效能試圖的名字。

動態效能試圖:
1、這些試圖被SYS使用者所擁有。
2、不同階段使用不同的試圖:
   --例項啟動後
   --掛載資料庫後
   --開啟資料庫後
3、可以查詢v$fixed_table來檢視所有的檢視名稱。
4、這些檢視也經常被稱為“v-dollar views”。
5、因為資料時動態的,所以不能確保這些檢視的讀一致性。

一些動態效能試圖包含的資料不一定適合所有的例項和資料庫狀態,例如:
可以在資料庫掛載之前利用v$bgprocess來檢視正在執行的後臺程式的列表,但v$datafile檢視還不能查詢。


動態效能試圖舉例:
1、找出cpu耗費時間超過200000微秒的語句和該語句的執行次數:
    SELECT sql_text, executions FROM v$sql WHERE cpu_time > 200000;
2、那些會話在前一天從EDRSR9P1機器上登入資料庫:
    SELECT * FROM v$session WHERE machine = 'EDRSR9P1' and logon_time > SYSDATE - 1;
3、找出當前持有鎖阻止其它會話的會話ID和它們已經持有鎖的時間:
    SELECT sid, ctime FROM v$lock WHERE block > 0;



local_managed_tablespace_storage
在本地管理的表空間中,區段的分配透過兩種方式:
1、自動(automatic):
   也叫自動分配,指定表空間中區段的大小由系統管理,你不能指定區段的大小,你也不能為一個臨時的表空間使用自動
2、統一(uniform):
   指定表空間的管理使用統一的區段大小,預設的大小為1兆,臨時表空間的所有區段都統一且為預設大小,不能對撤銷表空間指定統一



段空間的管理可以透過兩種方式:
1、自動(automatic):
   oracle資料庫使用點陣圖來管理段內的空閒空間,點陣圖反映了段空間內每個資料塊的狀態,當資料塊中的空間變的可用時,點陣圖將會反映最新的狀態,使用點陣圖,oracle資料庫可以自動管理空閒空間,這種空間管理的方式成為ASSM(Automatic Segment Space Management),oracle推薦這種管理方式
2、手動(manual):
   可以使用空閒列表來管理段內的空閒空間,空閒列表是一個維護的具有空閒空間的資料塊列表,這種段內的管理空間的方式被稱為手動段空間管理,因為需要為表空間內建立的模式物件設定和調整PCTUSED,FREELISTS,FREELIST GROUPS等儲存引數,這種方式只是為了保持向後相容



本地管理的表空間的優點:
1、本地管理避免了遞迴的空間管理操作,而在字典管理的表空間中,一次區段內的耗費和釋放空間會導致另一個撤銷段內或者資料字典表中耗費和釋放空間的操作
2、因為本地管理不把空閒空間記錄到資料字典表中,減少了這些資料字典表的競爭
3、區段的本地管理自動跟蹤臨近的空閒空間,消除了合併空閒空間的需要
4、本地管理的區段的大小有系統自動決定
5、區段點陣圖的更改不會產生撤銷資訊,因為不會更新資料字典中的表(特殊情況除外,比如表空間配額資訊)


當需要把字典管理的表空間轉換為本地管理的表空間時,可以使用DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL儲存過程來完成這項工作。

表空間物件的改變都會記入重做日誌,當日志記錄關閉時,一個物件在建立的時候沒有支援logging enabled,假如希望日後能夠恢復該物件,必須手動備份這個物件。





OMF
OMF(oracle managed files)
指定了檔案的操作是透過資料庫物件,而不是檔案的名稱。


初始化引數及說明:
DB_CREATE_FILE_DEST:為資料檔案和臨時檔案指定了預設的檔案系統儲存位置。
DB_CREATE_ONLINE_LOG_DEST_n:指定了聯機重做日誌檔案和控制檔案的位置。
DB_RECOVERY_FILE_DEST:定義了RMAN備份檔案的位置

eg:
alter system set DB_CREATE_FILE_DEST='/u01/oradata';
create tablespace tbs_1;

OMF使得你免除直接管理組成oracle資料庫的作業系統檔案,你可以透過資料庫物件而不是檔名稱來進行操作,資料庫內部使用標準檔案系統介面為以下資料庫結構根據需要來建立和刪除檔案:
1、表空間
2、重做日誌檔案
3、控制檔案
4、歸檔日誌
5、塊改變跟蹤檔案
6、閃回日誌
7、RMAN備份集

一個資料庫既可以擁有oracle管理的檔案,也可以擁有非oracle擁有的檔案,被初始化引數所指定的檔案系統目錄必須存在,資料庫不會建立它,而且該目錄必須擁有許可權使得資料庫可以在其中建立檔案。




parameters
當設定PGA_AGGREGATE_MEMORY初始化引數時:
從系統中可供給oracle instance的總記憶體中減去SGA的大小,剩下的記憶體就可以指定給PGA_AGGREGATE_MEMORY
格式:整數後面跟K,M,G,可指定的最小值為10M,最大值為400G,預設為沒有指定,意即不支援自動調整工作區。




shutdown_oracle
關閉資料庫有四種模式:
abort,immediate,transactional,normal


ABORT:在關閉資料庫時執行最少的工作量,這種關機方式會導致啟動時需要恢復,只有在其他關閉資料庫方式不起作用時,或者當啟動資料庫例項時遇到問題時,或者在特殊情況時需要緊急關機時(例如在幾秒鐘內就會掉電),此種方式的關閉速度最快。
IMMEDIATE:是最常用的關閉資料庫方式,沒有提交的事務將會回滾。
TRANSACTIONAL:這種關閉資料庫的方式會等待所有的事務都提交。
NORMAL:這種關閉資料庫的方式會等待所有的會話都斷開,此種方式的關閉速度最慢。

用normal,transactional,immediate三種方式關閉資料庫後,資料庫是乾淨的,且再次啟動資料庫時不需要例項恢復。

shutdown normal
normal是預設的資料庫關閉方式,伴隨以下情況:
1、不能建立新的連線。
2、oracle伺服器等待所有的使用者斷開連線時才執行關閉。
3、資料庫和重做緩衝都寫到磁碟。
4、終結後臺程式並釋放記憶體中的SGA。
5、oracle伺服器會在關閉例項前關閉並解除安裝資料庫。
6、下次資料庫啟動時不需要例項恢復。


shutdown transactional
transactional關閉防止客戶端丟失資料,包括當前會話的結果。伴隨以下情況:
1、所有的客戶端都不能建立新的事務到該例項。
2、當客戶端結束了事務後就會被斷開。
3、當所有的事務都結束後,關閉動作會立即執行。
4、下一次啟動不需要執行例項恢復。

shutdown immediate
伴隨以下情況:
1、當前正在被oracle資料庫執行的SQL語句將不會完成。
2、oracle不會等待當前正在連線的使用者主動斷開。
3、oracle伺服器回滾活動的事務並斷開所有的使用者連線。
4、oracle伺服器在關閉例項前先關閉並解除安裝資料庫。
5、下一次啟動不需要執行例項恢復。


shutdown abort
當normal和immediate關閉方式不起作用時,可以abort當前的資料庫例項,abort資料庫時伴隨以下情況:
1、立即結束當前正在被oracle伺服器執行的SQL語句。
2、oracle不會等待當前正在連線的使用者主動斷開。
3、資料庫和重做緩衝不會寫到磁碟。
4、未提交的事務也不會被回滾。
5、例項關閉時不會關閉檔案。
6、資料庫不會被關閉和解除安裝。
7、下一次資料庫啟動時需要執行例項恢復,該例項恢復時自動的,不需要人工干預。


在shutdown abort,instance failure,startup force三種情況時:
1、被修改的緩衝區資料將不會寫入資料檔案。
2、沒有提交的更改將會回滾。
3、聯機重做日誌檔案被用來進行更改。
4、撤銷段被用來回滾未提交的更改。
5、釋放資源。



sqlplus_start_shutdown_database
當用sqlplus執行啟動,關閉和改變資料庫的狀態時:必須以sysdba或者sysoper登入。
命令如下:
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]
STARTUP [FORCE] [RESTRICT] [MOUNT | OPEN | NOMOUNT]




start_oracle
oracle啟動過程包括shutdown到nomount到mount到open

shutdown到nomount(啟動例項):
1、在oracle_home/database下尋找引數檔案,該引數檔案的順序為spfile.ora,spfile.ora,init.ora
   當啟動時在startup命令後跟pfile引數時會覆蓋預設的行為。
2、分配SGA。
3、啟動後臺程式。
4、開啟alert.log檔案和跟蹤檔案。

一般來說,只有在建立資料庫,重新建立控制檔案,執行特定的備份和恢復時才會使用nomount模式。

nomount到mount(為例項開啟控制檔案):
1、關聯資料庫到先前啟動的例項
2、定位初始化引數檔案中指定的控制檔案並開啟控制檔案。
3、讀取控制檔案來獲取資料檔案和聯機重做日誌檔案的名稱和狀態(此處狀態可能翻譯有誤),但是,在這時還不檢查資料檔案和聯機重做日誌檔案是否真正存在。
在執行以下任務時經常需要掛在資料庫,但不開啟資料庫:
1、重新命名資料檔案(離線(offline)表空間的資料檔案可以在資料庫開啟的時候重新命名)。
2、當聯機重做日誌檔案有歸檔模式轉為非歸檔模式,或者由非歸檔模式轉為歸檔模式時需要mount狀態。
3、執行完整資料庫的恢復時。

當發出開啟資料庫的命令時,資料庫依然有可能留在mount狀態,這是可能是因為資料庫需要某種方式的恢復。


mount到open(控制檔案描述的所有檔案都被開啟):
1、開啟聯機資料檔案。
2、開啟聯機重做日誌檔案。

在資料庫開啟階段,oracle伺服器確保所有的資料檔案和聯機重做日誌檔案都可以找到,並且可以開啟,當找不到資料檔案或聯機重做日誌檔案時,資料庫伺服器會返回錯誤。在這一階段還要檢查資料庫的完整性,在需要時,system monitor(SMON)後臺程式會執行例項恢復。

當資料庫啟動在restricted mode時,資料庫只對具有管理許可權的使用者可用。





table_storage
當一個表被建立的同時,一個段同時被建立用來儲存表中的資料。
表中的一行最終以行塊(row piece)的形式儲存在資料庫塊中。之所以叫行塊是因為在一些情況下,一整行有可能不是儲存在同一個地方,當插入一條太大的記錄時,單獨的資料塊裝不下時,或者是更新一條已經存在的記錄時超過了可用的空間大小時,都會發生這種情況。





tablespace_datafile
oracle資料庫把資料邏輯儲存在表空間中,物理地儲存在資料檔案中。
tablespaces:
1、只能屬於一個資料庫
2、包含一個或者多個資料檔案
3、被進一步劃分為邏輯單元
data files:
1、只能屬於一個表空間和一個資料庫
2、是一個供模式物件儲存的倉庫



資料庫,表空間和資料檔案的區別:
1、一個資料庫由一個或者多個稱為表空間的邏輯儲存單元,表空間共同儲存資料庫的所有資料。
2、資料庫中的每個表空間有一個或者多個資料檔案組成,資料檔案就是執行oracle資料庫的作業系統的物理結構,即檔案。
3、資料庫中的資料共同儲存在組成資料庫中表空間的資料檔案中,例如:最簡單的oracle資料庫至少包含system表空間和sysaux表空間,這兩個表空間都包含一個資料檔案,每一個資料庫可以最多擁有65534個資料檔案。




tablespace_management
oracle透過區段來分配空間
建立資料庫時可以使用兩種方法來跟蹤使用過的和未被使用的空間,分別為本地管理的表空間和字典管理的表空間:

本地管理的表空間:
1、表空間透過空閒區段來管理
2、使用點陣圖來記錄空閒區段
3、每一個位對應於一個塊或者塊組,oracle改變點陣圖的值來顯示塊的最新狀態
4、位的值代表了該塊是空閒的還是使用過的
5、推薦使用本地管理的表空間

字典管理的表空間:
1、空閒區段使用資料字典來管理
2、當區段被分配或者撤銷分配時,更新對應的資料字典表
3、oracle保留該特性只是為了向後相容




tablespaces_of_preconfigured_database
oracle10g預先定義的表空間有SYSTEM,SYSAUX,TMMP,UNDOTBS1,USERS,EXAMPLE

SYSTEM:
oracle資料庫使用SYSTEM表空間來管理資料庫,SYSTEM表空間包含了資料字典以及資料庫的一些管理資訊,這些都包含在SYS模式中,只能由SYS使用者或者其他具有合適許可權的管理使用者

SYSAUX:
這是個SYSTEM表空間的輔助表空間,以前版本中儲存在SYSTEM表空間或者它們專有的表空間的元件和產品使用SYSAUX表空間,10g及以後版本中必須包含SYSAUX表空間

TEMP
當一個SQL語句的執行需要建立臨時段時,需要使用TEMP表空間(例如:一個大的排序或者一個把索引的建立),最好的辦法是為資料庫指定一個預設的臨時表空間,預設情況下,TEMP表空間被指定為預設的臨時表空間,這就是說,在建立使用者時如果沒有指定臨時表空間,oracle資料庫就會把TEMP表空間作為使用者的臨時表空間

UNDOTBS1
該表空間被oracle資料庫用來儲存撤銷資訊,假如資料庫使用自動撤銷管理(automatic undo management),在任何給定的時間都必須有一個活動的撤銷表空間,該表空間在資料庫建立時建立

USERS
這個表空間用來儲存資料庫中永久的使用者物件和資料,在預先配置的資料庫中,USERS表空間是非系統使用者建立的所有物件的預設表空間,對於SYS和SYSTEM使用者來說,預設的永久表空間依然為SYSTEM表空間

EXAMPLE
該表空間包含示例模式,可以在建立資料庫時建立,oracle文件和課件中的示例基於該表空間

為了簡化管理,通常建立單獨的表空間儲存索引。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26194851/viewspace-723320/,如需轉載,請註明出處,否則將追究法律責任。