一觅闽、oracle基礎(chǔ)
所有的關(guān)系型數(shù)據(jù)庫珊楼,都是在磁盤中的文件集合袜漩。
oracle實例和數(shù)據(jù)庫:數(shù)據(jù)庫啟動后分配的內(nèi)存和建立的后臺進程绪爸,數(shù)據(jù)庫關(guān)閉后,物理上的文件還存在宙攻,但實例不存在奠货。
實例就是一組進程和內(nèi)存,進程可操作數(shù)據(jù)庫座掘,任何時刻一個數(shù)據(jù)庫只有一個實例對其進行操作
递惋。
1.1 oracle四類文件
- 參數(shù)文件:設(shè)定數(shù)據(jù)庫的限制柔滔、用戶或者進程的限制、數(shù)據(jù)庫資源的限制萍虽、調(diào)整系統(tǒng)的性能睛廊。
- 控制文件:一個控制文件只能屬于一個數(shù)據(jù)庫。包含數(shù)據(jù)文件杉编、在線日志文件超全、歸檔文件的信息,這些信息用于數(shù)據(jù)庫open時的文件驗證邓馒;數(shù)據(jù)庫的架構(gòu)改變時嘶朱,比如增減,刪除文件時光酣,會更新控制文件疏遏。包含了數(shù)據(jù)庫恢復(fù)時候需要的一些信息,用于數(shù)據(jù)庫的恢復(fù)挂疆。
- 數(shù)據(jù)文件:存放實際的數(shù)據(jù)改览;損壞時:通過備份數(shù)據(jù)恢復(fù)或者用redo信息恢復(fù)。
- 日志文件:核心作用是保護數(shù)據(jù)的安全和恢復(fù)數(shù)據(jù)缤言。 附加作用:數(shù)據(jù)同步和分析宝当。
1.2 oracle目錄
- admin:Oracle實例的配置,運行日志等文件胆萧;每個實例一個目錄庆揩。SID:System IDentifier,是
數(shù)據(jù)庫實例
的唯一標(biāo)記跌穗;由于任何時刻一個數(shù)據(jù)庫只有一個實例對其進行操作
订晌,如果安裝多個數(shù)據(jù)庫,就會jianchadian有多個實例蚌吸,就需要通過SID來區(qū)分實例锈拨。通常也會使用SID(數(shù)據(jù)庫實例
的唯一標(biāo)記)作為庫的名字。 - cfgtoollog:存放運行dbca,emca,netca等圖形化配置程序的log羹唠。
- checkpoints:存放檢查點文件奕枢。
- diag:無論是asm、crs還是rdbms,所有組件需要被用來診斷的log都放在本目錄下佩微,是oracle 11g的先目錄缝彬。
- flash_recovery_area:閃回區(qū),分配一個特定的目錄哺眯,存放一些特定的恢復(fù)文件谷浅,用于集中和簡化管理數(shù)據(jù)庫恢復(fù)工作。閃回區(qū)可存儲完全的數(shù)據(jù)文件備份,增量備份一疯、數(shù)據(jù)文件副本撼玄、當(dāng)前的控制文件、備份的控制文件违施、spfile文件互纯、快照控制文件、聯(lián)機日志文件磕蒲、歸檔日志留潦、塊跟蹤文件、閃回日志辣往。
- product :軟件安裝目錄兔院。
- oradata:存放數(shù)據(jù)文件。
CONTROL01.CTL:數(shù)據(jù)庫的控制文件站削。
EXAMPLE01.DBF:數(shù)據(jù)庫的表空間文件坊萝。
REDO01.LOG:數(shù)據(jù)庫的重做日志文件。
SYSAUX01.DBF:11g新增的表空間许起,存儲數(shù)據(jù)字典外的其他數(shù)據(jù)對象十偶,有系統(tǒng)內(nèi)部自動維護。
SYSTEM01.DBF:存放系統(tǒng)內(nèi)部表和數(shù)據(jù)字典的數(shù)據(jù)园细。比如表名惦积、列名。
TEMP01.DBF:臨時表空間文件猛频。
UNDOTBS01.DBF:撤銷表空間文件狮崩,用來保存回滾數(shù)據(jù)。
USERS01.DBF:用戶表空間鹿寻。
1.3 表空間和數(shù)據(jù)文件
管理表空間的任務(wù)一般是由DBA來管理睦柴。
Oracle數(shù)據(jù)庫的數(shù)據(jù)存放在表空間中,表空間是一個邏輯的概念毡熏,它是由數(shù)據(jù)文件組成坦敌,表空間大小由數(shù)據(jù)文件的數(shù)量和大小決定。
表空間有三種:Permanent Tablespaces(永久表空間)痢法、Temporary Tablespaces(臨時表空間)恬试、Undo Tablespaces(回滾表空間),Oracle在創(chuàng)建數(shù)據(jù)庫實例的時候疯暑,默認(rèn)會創(chuàng)建三個永久表空間(SYSTEM、SYSAUX哑舒、USERS)妇拯,一個臨時表空間(TEMP),一個回滾表空間(UNDOTBS1)。
#1越锈、SYSTEM表空間
SYSTEM表空間主要用于存放Oracle數(shù)據(jù)庫內(nèi)部的數(shù)據(jù)字典仗嗦,它是Oracle數(shù)據(jù)庫最重要的表空間,在創(chuàng)建數(shù)據(jù)庫實例時被最先創(chuàng)建甘凭,包含了數(shù)據(jù)庫的元數(shù)據(jù)稀拐,對于數(shù)據(jù)庫來說生死攸關(guān)。
#2丹弱、SYSAUX表空間
SYSAUX表空間是SYSTEM表空間的輔助表空間德撬,主要用于存儲數(shù)據(jù)字典以外的其他數(shù)據(jù)對象,它在一定程度上降低了SYSTEM表空間的負荷躲胳。
#3蜓洪、UNDOTBS1表空間
UNDO是回滾表空間,主要有四方面的用途坯苹,分別是:事物回滾隆檀、數(shù)據(jù)庫恢復(fù)、讀一致性粹湃、閃回查詢恐仑。
1)事物回滾:當(dāng)事物執(zhí)行失敗或用戶執(zhí)行回滾操作(rollback)時,Oracle會利用保存在回退段中的信息將數(shù)據(jù)恢復(fù)到原來的值为鳄。
2)數(shù)據(jù)庫恢復(fù):當(dāng)數(shù)據(jù)庫實例出現(xiàn)了意外裳仆,在重啟恢復(fù)時,Oracle先利用重做日志文件的信息對數(shù)據(jù)庫進行恢復(fù)济赎,再利用回滾段中的信息回滾未提交的事務(wù)鉴逞。
3)讀一致性:當(dāng)一個用戶對數(shù)據(jù)進行修改時,會預(yù)先將其原始值保存到回退段中司训,這時构捡,如果有其它用戶訪問該數(shù)據(jù),則訪問回退段中的信息壳猜,使當(dāng)前用戶未提交的修改其他用戶無法看到勾徽,保證了數(shù)據(jù)的一致性。
4)閃回查詢:通過保留在回退段中的信息统扳,用戶可以查詢某個數(shù)據(jù)在過去某個時刻的狀態(tài)喘帚。
#4、TEMP表空間
臨時表空間用來管理數(shù)據(jù)庫排序以及用于存儲臨時表和索引咒钟、中間結(jié)果等臨時對象吹由。當(dāng)Oracle的內(nèi)存不夠時,會把數(shù)據(jù)放在臨時表空間中朱嘴,當(dāng)操作完成后倾鲫,系統(tǒng)會自動清理臨時表空間中的臨時對象粗合,自動釋放空間。這里的釋放只是標(biāo)記為空閑乌昔、可以重用隙疚,占用的磁盤空間并沒有真正釋放。這也是臨時表空間有時會不斷增大卻不見減少的原因磕道。
#5供屉、USERS表空間
USERS表空間用于存放普通用戶的表和索引,一般情況下溺蕉,它是用戶的缺省表空間伶丐。
#6、查看表空間
用DBA登錄數(shù)據(jù)庫焙贷,執(zhí)行以下SQL可以查看數(shù)據(jù)庫全部的表空間撵割。
select * from v$tablespace;
表空間的查詢:
1.查看當(dāng)前用戶的缺省表空間
select username,default_tablespace from user_users;
2.查看數(shù)據(jù)文件
數(shù)據(jù)文件存放在數(shù)據(jù)字典DBA_DATA_FILES中,用DBA權(quán)限執(zhí)行以下SQL查詢辙芍。
select file_name,file_id,tablespace_name,bytes,status,autoextensible,maxbytes,user_bytes,online_status
from DBA_DATA_FILES order by tablespace_name,file_name;
3.查看表空間使用情況;從數(shù)據(jù)字典DBA_FREE_SPACE和DBA_DATA_FILES中可以查詢表空間使用情況
select a.tablespace_name "表空間名",total "表空間大小",
(total - free) "已使用大小",free "表空間剩余大小",
round(total/(1024*1024)) "表空間大小(M)",
round((total-free)/(1024*1024)) "已使用大小(M)",
round(free/(1024*1024)) "表空間剩余大小(M)",
round((total-free)/total,4)*100 "使用率%"
from
(select tablespace_name,sum(bytes) free from DBA_FREE_SPACE group by tablespace_name) a,
(select tablespace_name,sum(bytes) total from DBA_DATA_FILES group by tablespace_name) b
where a.tablespace_name = b.tablespace_name;
1.4 oracle系統(tǒng)用戶
sysdba啡彬、sysoper和normal是對數(shù)據(jù)庫實例連結(jié)的校驗與數(shù)據(jù)庫無關(guān)。數(shù)據(jù)庫實例連接上數(shù)據(jù)庫后故硅,數(shù)據(jù)庫權(quán)限connect庶灿、resource和dba的才生效!
- sys:超級管理賬戶吃衅,完成數(shù)據(jù)所有的管理任務(wù)往踢。登錄數(shù)據(jù)庫只能以
sysdba、sysoper
登錄徘层。 - system:通常用來創(chuàng)建一些用戶查看管理信息的表和視圖峻呕;不建議使用system用戶來創(chuàng)建與管理無關(guān)的表和視圖。登錄數(shù)據(jù)庫可以直接登陸
normal
趣效。 - scott:實例用戶瘦癌,提供一些學(xué)習(xí)數(shù)據(jù)庫操作的示例表。
1.5 配置鏈接信息
我們知道數(shù)據(jù)庫的connect角色最基本的用戶權(quán)限跷敬,擁有connect權(quán)限的用戶只可以登錄Oracle讯私。進一步來看,Oracle將自己的一些鏈接信息保存到它的配置文件當(dāng)中西傀,以便于客戶端鏈接Oracle時斤寇,可以從配置文件當(dāng)中獲取信息,從而建立與Oracle的連接拥褂。
其文件位置在
Oracle根目錄\product\11.2.0\dbhome_1\NETWORK\ADMIN
鏈接信息保存在:
- sqlnet.ora:通過這個文件來查找客戶端與數(shù)據(jù)庫連接的標(biāo)識解析娘锁。
- tnsnames.ora:用于Oracle客戶端,用戶配置服務(wù)器別名參數(shù)饺鹃,就像系統(tǒng)中的hosts文件一樣莫秆。
- listener.ora:用于Oracle server端(服務(wù)器端)碎税,配置Oracle的監(jiān)聽端口。
1.6 常見服務(wù)
oracle服務(wù)按產(chǎn)品分類主要有七大塊馏锡,這七個服務(wù)的含義分別為:
- Oracle ORCL VSS Writer Service:Oracle卷映射拷貝寫入服務(wù),VSS(Volume Shadow Copy Service)能夠讓存儲基礎(chǔ)設(shè)備(比如磁盤伟端,陣列等)創(chuàng)建高保真的時間點映像杯道,即映射拷貝(shadow copy)。它可以在多卷或者單個卷上創(chuàng)建映射拷貝责蝠,同時不會影響到系統(tǒng)的系統(tǒng)能党巾。(非必須啟動)
- OracleDBConsoleorcl:Oracle數(shù)據(jù)庫控制臺服務(wù),orcl是Oracle的實例標(biāo)識霜医,默認(rèn)的實例為orcl齿拂。(非必須啟動)
在運行Enterprise Manager(企業(yè)管理器OEM)的時候,需要啟動這個服務(wù)肴敛。(非必須啟動) - OracleJobSchedulerORCL:Oracle作業(yè)調(diào)度(定時器)服務(wù)署海,ORCL是Oracle實例標(biāo)識。(非必須啟動)
- OracleMTSRecoveryService:服務(wù)端控制服務(wù)医男。
該服務(wù)允許數(shù)據(jù)庫充當(dāng)一個微軟事務(wù)服務(wù)器MTS砸狞、COM/COM+對象和分布式環(huán)境下的事務(wù)的資源管理器。(非必須啟動) - OracleOraDb11g_home1ClrAgent:Oracle數(shù)據(jù)庫.NET擴展服務(wù)的一部分镀梭。 (非必須啟動)
- OracleOraDb11g_home1TNSListener:監(jiān)聽器服務(wù)刀森,服務(wù)只有在數(shù)據(jù)庫需要遠程訪問的時候才需要。
- OracleServiceORCL:數(shù)據(jù)庫服務(wù)(數(shù)據(jù)庫實例)报账,是Oracle核心服務(wù)該服務(wù)研底,是數(shù)據(jù)庫啟動的基礎(chǔ), 只有該服務(wù)啟動透罢,Oracle數(shù)據(jù)庫才能正常啟動榜晦。(必須啟動)
二、oracle的體系結(jié)構(gòu)
Oracle的體系結(jié)構(gòu)是數(shù)據(jù)庫的組成琐凭、工作過程芽隆,以及數(shù)據(jù)庫中數(shù)據(jù)的組織和管理機制,包含一系列組件(軟件)统屈、用戶進程(User process)胚吁、服務(wù)進程(Server process、PGA)愁憔、SGA(共享池腕扶、數(shù)據(jù)緩存、日志緩沖區(qū))吨掌、后臺進程(SMON半抱、DBWn脓恕、PMON、CKPT窿侈、LGWR炼幔、其它進程)、參數(shù)文件(Parameter file)史简、密碼文件(Password)乃秀、數(shù)據(jù)文件(Data files)、控制文件(Control files)圆兵、在線重做日志文件(Redo log files)跺讯、歸檔日志文件(Archived log files)。
2.1 用戶進程和服務(wù)進程
用戶進程(User process)殉农,是指用戶通過客戶端刀脏,比如SQL Plus、PL/SQL Developer超凳、SQL Load愈污、應(yīng)用程序等工具連接上Oracle數(shù)據(jù)庫而產(chǎn)生的進程。用戶進程處理用戶輸入并與服務(wù)器進程通信聪建。用戶進程還負責(zé)表現(xiàn)用戶請求的信息钙畔,必要時可以將信息處置成更可用的形式。
服務(wù)進程(Server Process)金麸,當(dāng)客戶端發(fā)起連接時擎析,Oracle創(chuàng)建一個用戶進程來處理這個連接。
用戶進程啟動后挥下,Oracle還會創(chuàng)建一個服務(wù)進程來處理連接到實例的用戶進程提交的請求揍魂。用戶進程連接到數(shù)據(jù)庫并創(chuàng)建一個會話時,Oracle服務(wù)器進程會分配專門用于當(dāng)前用戶會話的內(nèi)存區(qū)棚瘟,即PGA區(qū)现斋,該區(qū)域是私有的,當(dāng)進程創(chuàng)建時分配偎蘸,進程結(jié)束后被釋放庄蹋,只能被一個服務(wù)進程使用。
2.2 系統(tǒng)全局區(qū)SGA
系統(tǒng)全局區(qū)SGA(System Global Area)迷雪,是Oracle實例的重要組成部分限书,在實例啟動時分配,是一組包含Oracle數(shù)據(jù)和控制信息的共享內(nèi)存章咧。一個SGA只屬于一個實例倦西,也就是說,當(dāng)一個服務(wù)器上有多個實例運行時赁严,每個實例都有一個自己的SGA扰柠,實例之間不能相互訪問粉铐。SGA包括共享池(Share pool)、數(shù)據(jù)緩存(Data buffer cache)和重做日志緩沖區(qū)(Redo log buffer)卤档,其中共享池又包括Library cache(庫緩存)和Data dict cache(數(shù)據(jù)字典緩存)蝙泼。
2.3 后臺進程
Oracle后臺進程是一組運行于Oracle服務(wù)器端的后臺程序,也是Oracle實例的重要組成部分劝枣。這些后臺進程分別完成不同的功能踱承。其中SMON、PMON哨免、DBWR、LGWR和CKPT這5個后臺進程必須正常啟動昙沦,否則數(shù)據(jù)庫實例無法工作琢唾。此外,還有很多輔助進程盾饮,用于實現(xiàn)輔助的功能采桃,如果這些輔助進程發(fā)生問題,只會使某些功能受到影響丘损,數(shù)據(jù)庫實例仍是可用的普办。
- 數(shù)據(jù)寫入進程(DBWR):數(shù)據(jù)寫入進程的主要任務(wù)是負責(zé)將內(nèi)存中的“臟”數(shù)據(jù)塊回寫到數(shù)據(jù)文件中∨窃浚“臟”數(shù)據(jù)塊是指高速數(shù)據(jù)緩沖區(qū)中的被修改過的數(shù)據(jù)塊衔蹲,這些數(shù)據(jù)塊的內(nèi)容與數(shù)據(jù)文件的數(shù)據(jù)塊內(nèi)容不一致。但DBWR并不是隨時將所有的“臟”數(shù)據(jù)塊都寫入數(shù)據(jù)文件呈础,只有滿足一定的條件時舆驶,DBWR進程才開始成批量的將“臟”數(shù)據(jù)塊寫入數(shù)據(jù)文件Oracle這樣做的目的是為了盡量減少I/O操作,提高Oracle服務(wù)器性能而钞。
- 檢查點進程(CKPT):檢查點進程可以看作一個事件沙廉,當(dāng)檢查點事件發(fā)生時,CKPT會要求DBWR將某些“臟”數(shù)據(jù)塊回寫到數(shù)據(jù)文件臼节。當(dāng)用戶進程發(fā)出數(shù)據(jù)請求時撬陵,Oracle系統(tǒng)從數(shù)據(jù)文件中讀取需要的數(shù)據(jù)并存放到高速數(shù)據(jù)緩沖區(qū)中,用戶對數(shù)據(jù)的操作時在緩沖區(qū)中進行的网缝。當(dāng)用戶操作數(shù)據(jù)時巨税,就會產(chǎn)生大量的日志信息并存儲在重做日志緩沖區(qū),當(dāng)Oracle系統(tǒng)滿足一定條件時途凫,日志寫入進程(LGWR)會將日志信息寫入到重做日志文件組中垢夹,當(dāng)發(fā)生日志切換時(寫入操作正要從一個日志文件組切換到另一組時),就會啟動檢查點進程维费。
另外果元,DBA還可以通過修改初始化參數(shù)文件SPFILE中的CHECKPOINT_PROCESS參數(shù)為TRUE來啟動檢查點進程促王。 - 日志寫入進程(LGWR):日志寫入進程用于將重做日志緩沖區(qū)中的數(shù)據(jù)寫入重做日志文件。Oracle系統(tǒng)將用戶所做的修改日志信息寫入日志文件而晒,然后將修改結(jié)果寫入數(shù)據(jù)文件蝇狼。
Oracle實例在運行中會產(chǎn)生大量日志信息,這些日志信息首先被記錄在SGA的重做日志緩沖區(qū)中倡怎,當(dāng)發(fā)生提交命令迅耘、或者重做日志緩沖區(qū)的信息滿1/3、或者日志信息存放超過3秒鐘時监署,LGWR進程就將日志信息從重做日志緩沖區(qū)中讀出并寫入日志文件組中序號較小的文件中颤专,一個日志組寫滿后接著寫另外一組。當(dāng)LGWR進程將所有钠乏?日志文件都寫過一遍后栖秕,它將再次轉(zhuǎn)向第一個日志文件組重新覆蓋。 - 歸檔進程(ARCH):歸檔進程是一個可選擇的進程晓避,只有當(dāng)Oracle數(shù)據(jù)庫處于歸檔模式時簇捍,該進程才可能起到作用。若Oracle數(shù)據(jù)庫處于歸檔模式俏拱,當(dāng)各個日志文件組都被寫滿即將被覆蓋之前暑塑,先由歸檔進程(ARCH)把即將覆蓋的日志文件中的日志信息讀出,然后再把這些“讀出的日志信息”寫入到歸檔日志文件中锅必。
當(dāng)系統(tǒng)比較繁忙而導(dǎo)致LGWR進程處于等待ARCH進程時事格,可通過修改LOG_ARCHIVE_MAX_PROCESSES參數(shù)啟動多個歸檔進程,從而提高歸檔寫磁盤的速度搞隐。 - 系統(tǒng)監(jiān)控進程(SMON):系統(tǒng)監(jiān)控進程是在數(shù)據(jù)庫啟動時執(zhí)行恢復(fù)工作的強制性進程分蓖。比如,在并行服務(wù)器模式下尔许,SMON可以恢復(fù)另一個處于失敗的數(shù)據(jù)庫么鹤,使系統(tǒng)切換到另外一臺正常的服務(wù)器上。
- 進程監(jiān)控進程(PMON):進程監(jiān)控進程用于監(jiān)控其他進程的狀態(tài)味廊,當(dāng)有進程啟動失敗時蒸甜,PMON會清除失敗的用戶進程,用于數(shù)據(jù)不一致時進行恢復(fù)工作余佛。
- 鎖定進程(LCKN):這是一個可選進程柠新,并行服務(wù)器模式下可以出現(xiàn)多個鎖定進程以利于數(shù)據(jù)庫通信。
- 恢復(fù)進程(RECO):這是在分布式數(shù)據(jù)庫模式下使用的一個可選進程辉巡,用于數(shù)據(jù)不一致時進行恢復(fù)工作恨憎。
- 調(diào)度進程(DNNN): 這是一個可選進程,在共享服務(wù)器模式下使用,可以啟動多個調(diào)度進程憔恳。
- 快照進程(SNPN):快照進程用于處理數(shù)據(jù)庫快照的自動刷新瓤荔,并通過DBMS_JOB包運行預(yù)定的數(shù)據(jù)庫存儲過程。
2.4 存儲結(jié)構(gòu)
Oracle分為邏輯存儲結(jié)構(gòu)和物理存儲結(jié)構(gòu)钥组,邏輯存儲結(jié)構(gòu)用來描述Oracle內(nèi)部組織和管理數(shù)據(jù)的方式输硝,是一種層次結(jié)構(gòu),是面向用戶的程梦;物理存儲結(jié)構(gòu)是實際的數(shù)據(jù)存儲單元点把,就是數(shù)據(jù)庫存放在操作系統(tǒng)上的文件。
三屿附、oracle應(yīng)用
3.1 數(shù)據(jù)字典
Oracle通過數(shù)據(jù)字典來管理和展現(xiàn)數(shù)據(jù)庫信息郎逃,數(shù)據(jù)字典儲存數(shù)據(jù)庫的元數(shù)據(jù),是數(shù)據(jù)庫的“數(shù)據(jù)庫”挺份。
數(shù)據(jù)字典由4部分組成:內(nèi)部RDBMS(X$)
表衣厘、數(shù)據(jù)字典表、動態(tài)性能視圖(V$)
和(靜態(tài))數(shù)據(jù)字典視圖压恒。
- 內(nèi)部RDBMS
(X$)
表
X$
(表示Oracle數(shù)據(jù)庫的核心部分,這些表用于跟蹤數(shù)據(jù)庫內(nèi)部信息错邦,維持?jǐn)?shù)據(jù)庫的正常運行探赫。X$
表是加密命名的,而且Oracle不做文檔說明撬呢,也不允許sysdba以外的用戶直接訪問伦吠,顯示授權(quán)不被允許。X$
表是Oracle數(shù)據(jù)庫的運行基礎(chǔ)魂拦,在數(shù)據(jù)庫啟動時由Oracle應(yīng)用程序動態(tài)創(chuàng)建毛仪。 - 動態(tài)性能視圖
動態(tài)性能視圖記錄了數(shù)據(jù)庫運行時信息和統(tǒng)計數(shù)據(jù)痢艺,大部分動態(tài)性能視圖被實時更新以及反映數(shù)據(jù)庫當(dāng)前狀態(tài)脐嫂。在數(shù)據(jù)庫啟動時蹋订,Oracle動態(tài)創(chuàng)建X$
表是趴,在此基礎(chǔ)上陵吸,Oracle創(chuàng)建了GV$
和V$
視圖额获,GV$
即Global V$
颇象,除了一些特例外儡遮,每個V$
都對應(yīng)一個GV$
安疗。GV$
產(chǎn)生是為了OPS/RAC環(huán)境的需要抛杨,每個V$
都是基于GV$
的,只是GV$
多了INST_ID列來顯示實例ID荐类。
v$database數(shù)據(jù)庫信息
v$datafile數(shù)據(jù)文件信息
v$controlfile控制文件信息
v$logfile重做日志信息
v$instance數(shù)據(jù)庫實例信息
v$log日志組信息
v$loghist日志歷史信息
v$sga數(shù)據(jù)庫SGA信息
v$parameter初始化參數(shù)信息
v$process數(shù)據(jù)庫服務(wù)器進程信息
v$bgprocess數(shù)據(jù)庫后臺進程信息
v$controlfile_record_section控制文件記載的各部分信
v$thread線程信息
v$datafile_header數(shù)據(jù)文件頭所記載的信息
v$archived_log歸檔日志信
v$archive_dest歸檔日志的設(shè)置信息
v$logmnr_contents歸檔日志分析的DMLDDL結(jié)果信息
v$logmnr_dictionary日志分析的字典文件信息
v$logmnr_logs日志分析的日志列表信息
v$tablespace表空間信息
v$tempfile臨時文件信息
v$filestat數(shù)據(jù)文件的I/O統(tǒng)計信息
v$undostatUndo數(shù)據(jù)信息
v$rollname在線回滾段信息
v$session會話信息
v$transaction事務(wù)信息
v$rollstat回滾段統(tǒng)計信息
v$pwfile_users特權(quán)用戶信息
v$sqlarea當(dāng)前查詢過的sql語句訪問過的資源及相關(guān)的信息
v$sql與v$sqlarea基本相同的相關(guān)信息
v$sysstat數(shù)據(jù)庫系統(tǒng)狀態(tài)信息
- 數(shù)據(jù)字典表(Data dictionary table)
用以存儲表怖现、索引、約束以及其它數(shù)據(jù)庫結(jié)構(gòu)的信息玉罐,這些對象通常以“$”
結(jié)尾(例如:TAB$
屈嗤、OBJ$
潘拨、TS$
等),在創(chuàng)建數(shù)據(jù)庫的時候通過運行$ORACLE_HOME/rdbms/admin/sql.bsq
腳本來創(chuàng)建恢共。 - 靜態(tài)數(shù)據(jù)字典視圖
由于X$
表和數(shù)據(jù)字典表通常不能直接被用戶訪問战秋,Oracle創(chuàng)建了靜態(tài)數(shù)據(jù)字典視圖來提供用戶對于數(shù)據(jù)字典信息的訪問,由于這些信息通常相對穩(wěn)定讨韭,不能直接修改脂信,所以又被稱為靜態(tài)數(shù)據(jù)字典視圖。靜態(tài)數(shù)據(jù)字典視圖在創(chuàng)建數(shù)據(jù)庫時由$ORACLE_HOME/rdbms/admin/catagory.sql
腳本創(chuàng)建透硝。靜態(tài)數(shù)據(jù)字典視圖按照前綴的不同通常分成三類狰闪,在本質(zhì)上是為了實現(xiàn)權(quán)限控制。在Oracle數(shù)據(jù)庫中濒生,每個用戶與方案(Schema)是對應(yīng)的埋泵,Schema是用戶所擁有的對象的集合!數(shù)據(jù)庫通過Schema將不同用戶的對象隔離開來,用戶可以自由的訪問自己的對象罪治,但是要訪問其他Schema對象就需要相關(guān)的授權(quán)丽声。
1、USER_*(用戶所擁有的相關(guān)對象信息)
user_objects用戶對象信息
user_source數(shù)據(jù)庫用戶的所有資源對象信息
user_segments用戶的表段信息
user_tables用戶的表對象信息
user_tab_columns用戶的表列信息
user_constraints用戶的對象約束信息
user_sys_privs當(dāng)前用戶的系統(tǒng)權(quán)限信息
user_tab_privs當(dāng)前用戶的對象權(quán)限信息
user_col_privs當(dāng)前用戶的表列權(quán)限信息
user_role_privs當(dāng)前用戶的角色權(quán)限信息
user_indexes用戶的索引信息
user_ind_columns用戶的索引對應(yīng)的表列信息
user_cons_columns用戶的約束對應(yīng)的表列信息
user_clusters用戶的所有簇信息
user_clu_columns用戶的簇所包含的內(nèi)容信息
user_cluster_hash_expressions散列簇的信息
2觉义、ALL_*(用于有權(quán)限訪問的所有對象的信息)
all_users數(shù)據(jù)庫所有用戶的信息
all_objects數(shù)據(jù)庫所有的對象的信息
all_def_audit_opts所有默認(rèn)的審計設(shè)置信息
all_tables所有的表對象信息
all_indexes所有的數(shù)據(jù)庫對象索引的信息
3雁社、DBA_(數(shù)據(jù)庫所有相關(guān)對象的信息)
dba_users數(shù)據(jù)庫用戶信息
dba_segments表段信息
dba_extents數(shù)據(jù)區(qū)信息
dba_objects數(shù)據(jù)庫對象信息
dba_tablespaces數(shù)據(jù)庫表空間信息
dba_data_files數(shù)據(jù)文件設(shè)置信息
dba_temp_files臨時數(shù)據(jù)文件信息
dba_rollback_segs回滾段信息
dba_ts_quotas用戶表空間配額信息
dba_free_space數(shù)據(jù)庫空閑空間信息
dba_profiles數(shù)據(jù)庫用戶資源限制信息
dba_sys_privs用戶的系統(tǒng)權(quán)限信息
dba_tab_privs用戶具有的對象權(quán)限信息
dba_col_privs用戶具有的列對象權(quán)限信息
dba_role_privs用戶具有的角色信息
dba_audit_trail審計跟蹤記錄信息
dba_stmt_audit_opts審計設(shè)置信息
dba_audit_object對象審計結(jié)果信息
dba_audit_session會話審計結(jié)果信息
dba_indexes用戶模式的索引信息
3.2 用戶與權(quán)限
Oracle中沒有其他數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)庫的概念,對象都是創(chuàng)建在用戶下晒骇。
3.2.1 用戶管理
用戶權(quán)限:使用角色管理霉撵,權(quán)限分為:系統(tǒng)權(quán)限和對象權(quán)限(Schema是用戶所擁有的對象的集合)。
# 1.創(chuàng)建用戶
create user 用戶名 identified by 密碼
[default tablespace 表空間名]
[temporary tablespace 表空間名]
[quota 大小 on 表空間名]
[profile 用戶配置文件];
#創(chuàng)建用戶時洪囤,如果不指定default tablespace/ temporary tablespace選項徒坡,則使用系統(tǒng)缺省的永久/臨時表空間, 用以下SQL可以查看系統(tǒng)缺省的永久/臨時表空間瘤缩。
select property_value from DATABASE_PROPERTIES where property_name in ('DEFAULT_PERMANENT_TABLESPACE','DEFAULT_TEMP_TABLESPACE');
#2.修改密碼 普通用戶只能修改自已的密碼喇完,DBA可以修改其它用戶的密碼。
alter user 用戶名 identified by 新密碼;
#3.鎖定/解鎖用戶 鎖定/解鎖用戶需要DBA權(quán)限剥啤。
alter user 用戶名 account lock;
alter user 用戶名 account unlock;
#4.修改用戶表空間配額 修改用戶表空間配額需要DBA權(quán)限何暮。
alter user 用戶名 quota 大小 on 表空間;
#5.刪除用戶 刪除用戶需要DBA權(quán)限。
#drop user 只有在用戶下沒有任何數(shù)據(jù)庫對象的時候才能刪除用戶铐殃,否則會提示錯誤海洼。
#采用cascade選項刪除用戶以及用戶下全部的數(shù)據(jù)庫對象,包括表富腊、視圖坏逢、函數(shù)、同義詞、過程等是整。
drop user 用戶名 [cascade];
3.2.2 權(quán)限管理
#######1肖揣、系統(tǒng)權(quán)限
系統(tǒng)權(quán)限針對的是系統(tǒng)安全性,執(zhí)行數(shù)據(jù)庫操作浮入,如登錄龙优、創(chuàng)建表、創(chuàng)建函數(shù)等事秀,通過查詢SYSTEM_PRIVILEGE_MAP數(shù)據(jù)字典可以看到Oracle的兩百多種系統(tǒng)權(quán)限彤断。
select * from SYSTEM_PRIVILEGE_MAP;
以下是幾種常用的系統(tǒng)權(quán)限:
create session 創(chuàng)建會話。
create/drop user 創(chuàng)建/刪除用戶易迹。
create/drop sequence 創(chuàng)建/刪除序列宰衙。
create/drop synonym 創(chuàng)建/刪除同名對象。
create/drop table 創(chuàng)建/刪除表睹欲。
create/drop view 創(chuàng)建/刪除視圖供炼。
#######2、對象權(quán)限
對象權(quán)限針對的是數(shù)據(jù)安全性窘疮,對某一特定對象(如表袋哼,視圖、序列闸衫、存儲過程等)執(zhí)行的特定操作涛贯,對象的權(quán)限分類如下:。
1)select權(quán)限 對表而言楚堤,允許對表執(zhí)行select語句;對序列而言含懊,允許對序列獲取下一個值(nextval)和當(dāng)前值(currnvl)身冬。
2)insert權(quán)限 允許向表和視圖中插入記錄。
3)update權(quán)限 允許在表或視圖中執(zhí)行update語句岔乔,update權(quán)限必須隨同select權(quán)限授予酥筝,否則被授權(quán)用戶不能夠選擇行。
4)delete權(quán)限 允許在表或視圖中執(zhí)行delete語句雏门,delete權(quán)限必須隨同select權(quán)限授予嘿歌,否則被授權(quán)用戶不能夠選擇行。
5)alter權(quán)限 對表而言茁影,允許對表執(zhí)行alter table語句宙帝;對序列而言,允許對序列alter sequence語句募闲。
6)execute權(quán)限 執(zhí)行存儲過程步脓、函數(shù)和包的權(quán)限。
7)index權(quán)限 允許在表上創(chuàng)建索引。
8)reference權(quán)限允許在表上創(chuàng)建完整性約束靴患,如外鍵仍侥。
9)all 對象的全部權(quán)限(上面列出的全部權(quán)限)。
####### 3鸳君、角色
由于Oracle提供的權(quán)限非常之多农渊,日常操作時我們不可能將所需權(quán)限一一賦予用戶,此時引進角色概念或颊。角色是一組相關(guān)權(quán)限的命名集合砸紊,使用角色最主要的目的是簡化權(quán)限管理。將一組權(quán)限打包到角色中饭宾,將角色賦予用戶就是把角色下得全部權(quán)限都賦給了用戶批糟,簡化了賦權(quán)操作。
Oracle提供三種標(biāo)準(zhǔn)的三種角色:
1)connect角色 connect是最基本的用戶權(quán)限看铆,擁有connect權(quán)限的用戶只可以登錄Oracle(僅具有創(chuàng)建SESSION的權(quán)限)徽鼎,不可以創(chuàng)建實體,不可以創(chuàng)建數(shù)據(jù)庫結(jié)構(gòu)弹惦。
2)resource角色 擁有resource權(quán)限的用戶可以創(chuàng)建數(shù)據(jù)庫對象否淤,和對本用戶的數(shù)據(jù)庫對象擁有全部的操作權(quán)限。
3)DBA角色 DBA角色棠隐,擁有全部特權(quán)石抡,是系統(tǒng)最高權(quán)限。
####### 4助泽、授于/收回權(quán)限
Oracle采用grant命令授于權(quán)限啰扛,revoke命令收回權(quán)限。
### 1)將對象權(quán)限授于用戶和角色嗡贺,revoke收回隐解。
grant 對象權(quán)限列表 on 對象名 to { public | 角色名 | 用戶名 },……;
revoke 對象權(quán)限列表 on 對象名 from { public | 角色名 | 用戶名 },……;
### 2)將系統(tǒng)權(quán)限和角色權(quán)限授于用戶,revoke收回诫睬。
grant { 系統(tǒng)權(quán)限 | 角色 }, …… to { public | 角色名 | 用戶名 },……;
revoke { 系統(tǒng)權(quán)限 | 角色 }, …… from { public | 角色名 | 用戶名 },……;
#######5煞茫、查詢權(quán)限
從數(shù)據(jù)字典中可以查詢當(dāng)前用戶擁有的權(quán)限和角色。
1)查詢當(dāng)前用戶擁有的角色:
select * from USER_ROLE_PRIVS;
2)查詢當(dāng)前用戶擁有的系統(tǒng)權(quán)限:
select * from USER_SYS_PRIVS;
3)查詢當(dāng)前用戶擁有的對象權(quán)限:
select * from USER_TAB_PRIVS;
3.3 數(shù)據(jù)庫對象
- 用戶:數(shù)據(jù)庫的用戶也是數(shù)據(jù)庫對象摄凡。
- 表(Table):表可以分為關(guān)系表和對象表续徽。關(guān)系表包含堆表、索引組織表亲澡、外部表钦扭。我們常用的為堆表。Oracle官方推薦床绪,表所占的存儲空間超過2GB時土全,可以考慮對表進行分區(qū)捎琐。一般來說盡量避免分區(qū),需要分區(qū)一定要有充分的理由裹匙。
- 索引(Index):索引可以提高表數(shù)據(jù)的訪問查詢效率瑞凑,對性能優(yōu)化有著非常大的作用。索引也是和一個或者多個段相關(guān)聯(lián)概页,索引最終存儲的位置也是段籽御。不同類型的索引有不同的存儲邏輯結(jié)構(gòu),如B樹惰匙,Bitmap(位圖)等技掏。
唯一索引:當(dāng)某列任意兩行的值都不。
組合索引:兩個或多個列經(jīng)常一起出現(xiàn)在where條件中時项鬼,則在這些列上同時創(chuàng)建組合索引哑梳。
位圖索引:列中有非常多的重復(fù)的值時候。例如某列保存了 “性別”信息绘盟。Where 條件中包含了很多OR操作符鸠真。較少的update操作,因為要相應(yīng)的跟新所有的bitmap龄毡。
基于函數(shù)的索引:在WHERE條件語句中包含函數(shù)或者表達式時吠卷。
反向鍵索引:多個用戶對集中在少數(shù)塊上的索引行進行修改,容易引起資源的爭用沦零,比如對數(shù)據(jù)塊的等待祭隔。此時建立反向索 引。
鍵壓縮索引:組合索引的前綴部分具 有非選擇性時路操,考慮使用壓縮疾渴。減少I/O,增加性能
索引組織表(IOT):將表中的數(shù)據(jù)按照索 引的結(jié)構(gòu)存儲在索引中,提高查詢速度屯仗。犧牲插入更新的性能搞坝,換取查詢 性能。通常用于數(shù)據(jù)倉庫祭钉,提供大量的查詢瞄沙,極少的插入修改工作己沛。必須指定主鍵慌核。插入數(shù)據(jù)時,會根據(jù)主鍵列進行B樹索引排序申尼,寫入磁盤垮卓。
分區(qū)索引:A cluster is a group of tables that share the same data blocks because they share common columns and are often used together. - 簇(Cluster):簇是一個包含一個或多個表數(shù)據(jù)的數(shù)據(jù)庫對象,其中被包含的表中都會具有共同的一列或者多列师幕,這些列稱為簇鍵列粟按。
- 視圖:視圖是一種虛定義的邏輯對象诬滩,主要用來簡化業(yè)務(wù)邏輯、方便開發(fā)維護灭将,視圖并不包含任何數(shù)據(jù)疼鸟,其數(shù)據(jù)基于視圖對應(yīng)的其他對象。視圖可以提供一些增刪改查的操作庙曙,同時有一定的安全性空镜,可以屏蔽一些列,使用起來也比較靈活捌朴。但對于性能會有一些影響吴攒。物化視圖,相對于視圖而言砂蔽,物化視圖可以實際存儲數(shù)據(jù)洼怔,和表一樣對應(yīng)相關(guān)的段。物化視圖可以用來匯總左驾,計算等業(yè)務(wù)镣隶。同時也可以在一定條件下進行增刪改查,并且也可以建立索引等什荣。
- 同義詞(Synonym):同義詞也是虛的一個邏輯對象矾缓,不會存儲任何數(shù)據(jù)。本質(zhì)上算是其他數(shù)據(jù)對象的一個別名稻爬。同時可以將同義詞的權(quán)限分配給不同的用戶嗜闻,作為安全管理的一種方式。
- 序列(Sequence):序列不存儲任何數(shù)據(jù)桅锄,用戶可以通過序列獲取一系列有序的數(shù)值琉雳。定義序列的時候可以定義序列名,升降序友瘤,步長等翠肘。如果負載并發(fā)很高的情況下,序列的增長會影響整體的性能辫秧。
- 過程(Procedure) & 函數(shù)(Function):過程和函數(shù)都是虛邏輯對象束倍,不存儲數(shù)據(jù)。主要功能就是使用數(shù)據(jù)庫編碼的調(diào)用來執(zhí)行一系列任務(wù)盟戏。
- 觸發(fā)器(Trigger):觸發(fā)器也是數(shù)據(jù)庫的一個邏輯對象绪妹,不存儲數(shù)據(jù)。主要是通過數(shù)據(jù)庫編碼柿究,在事件自動觸發(fā)的時候執(zhí)行一組命令邮旷。
- 約束(Constraint):約束是數(shù)據(jù)庫中的邏輯對象,其功能是通過一些內(nèi)部或者自動逸邏輯來實現(xiàn)對數(shù)據(jù)的檢查和限制蝇摸,使其符合某種規(guī)則或者標(biāo)準(zhǔn)婶肩。從而實現(xiàn)數(shù)據(jù)的規(guī)則化办陷,標(biāo)準(zhǔn)化。
3.4 數(shù)據(jù)類型
3.5 數(shù)據(jù)導(dǎo)入導(dǎo)出
使用cmd命令行導(dǎo)入導(dǎo)出數(shù)據(jù)律歼,也可使用第三方工具民镜。
整庫導(dǎo)出
整庫導(dǎo)出:exp 管理員賬號/密碼 full=y;//參數(shù)full表示整庫導(dǎo)出。導(dǎo)出后會在當(dāng)前目錄下生成一個EXPDAT.DMP的文件险毁,此文件為備份文件殃恒。如果想導(dǎo)出數(shù)據(jù)到指定位置,并且取個名字辱揭,需要添加file參數(shù)离唐。例如:exp system/123456 file= C:\person.dmp full=y。
整庫導(dǎo)入
整庫導(dǎo)入:imp 管理員賬號/密碼 full=y file=C:\person.dmp问窃。
按用戶導(dǎo)出導(dǎo)入
1.3.1 按用戶導(dǎo)出:exp 管理員賬號/密碼 owner=用戶名 file=C:\person.dmp亥鬓。
1.3.2 按用戶導(dǎo)入:imp 管理員賬號/密碼 file=C:\person.dmp fromuser=用戶名。
按表導(dǎo)出導(dǎo)入
1.4.1按表導(dǎo)出:exp 管理員賬號/密碼 file=person.dmp tables=t_person,t_student域庇。
1.4.2按表導(dǎo)入:imp 管理員賬號/密碼 file =person.dmp tables=t_person,t_student嵌戈。
四、備份和恢復(fù)
4.1 日志
Oracle以SQL腳本的形式實時記錄了數(shù)據(jù)變化的詳細日志听皿,這些日志保存在重做日志文件中熟呛。根據(jù)重做日志文件,可以對數(shù)據(jù)庫進行備份和恢復(fù)尉姨。
可以簡單的認(rèn)為庵朝,數(shù)據(jù)庫每次在commit之前,會把操作數(shù)據(jù)的SQL腳本寫入日志文件又厉。
日志文件有兩種:在線日志和歸檔日志九府。
創(chuàng)建Oracle數(shù)據(jù)庫實例的時候,缺省建立三組在線日志覆致,每組一個日志文件侄旬。三組日志中只有一組處于活動狀態(tài),這組活動的日志也稱為當(dāng)前日志煌妈,數(shù)據(jù)庫不斷的往當(dāng)前日志里寫入SQL腳本儡羔,當(dāng)前日志寫滿后,Oracle會切換到下一組日志璧诵,繼續(xù)寫入汰蜘,就這樣循環(huán)切換。日志組在切換時腮猖,如果數(shù)據(jù)庫是歸檔模式鉴扫,則將當(dāng)前日志文件的內(nèi)容轉(zhuǎn)存為操作系統(tǒng)文件赞枕,成為歸檔日志澈缺;若當(dāng)前數(shù)據(jù)庫是非歸檔模式坪创,則不進行歸檔操作,當(dāng)前日志文件中的內(nèi)容會被下一次覆蓋姐赡。
如果數(shù)據(jù)庫運行在歸檔模式下莱预,當(dāng)數(shù)據(jù)庫出現(xiàn)介質(zhì)失敗時,使用備份文件项滑、歸檔日志和在線日志可以完全恢復(fù)數(shù)據(jù)庫依沮。
4.2 備份和恢復(fù)
備份的方法
- 物理備份
對數(shù)據(jù)庫操作系統(tǒng)的物理文件(數(shù)據(jù)文件,控制文件和日志文件)的備份枪狂。物理備份又可以分為脫機備份(冷備份)和聯(lián)機備份(熱備份)危喉,前者是在關(guān)閉數(shù)據(jù)庫的時候進行的,后者是以歸檔日志的方式對運行的數(shù)據(jù)庫進行備份州疾」枷蓿可以使用oracle的恢復(fù)管理器(rman)或操作系統(tǒng)命令進行數(shù)據(jù)庫的物理備份。 - 邏輯備份
對數(shù)據(jù)庫邏輯組件(如表和存儲過程等數(shù)據(jù)庫對象)的備份严蓖。邏輯備份的手段很多薄嫡,如傳統(tǒng)的exp,數(shù)據(jù)泵(expdp)颗胡,數(shù)據(jù)庫閃回技術(shù)等第三方工具毫深,都可以進行數(shù)據(jù)庫的邏輯備份。
備份的策略
- 完全備份:每次對數(shù)據(jù)庫進行完整備份毒姨,當(dāng)發(fā)生數(shù)據(jù)丟失的災(zāi)難時哑蔫,完全備份無需依賴其他信息即可實現(xiàn)100%的數(shù)據(jù)恢復(fù),其恢復(fù)時間最短且操作最方便弧呐。
- 增量備份:只有那些在上次完全備份或增量備份后被修改的文件才會被備份鸳址。優(yōu)點是備份數(shù)據(jù)量小,需要的時間短泉懦,缺點是恢復(fù)的時候需要依賴以前備份記錄稿黍,出問題的風(fēng)險較大。
- 差異備份:備份那些自從上次完全備份之后被修改過的文件崩哩。從差異備份中恢復(fù)數(shù)據(jù)的時間較短巡球,只需要最后一次完整備份和最后一次差異備份的數(shù)據(jù),缺點是每次備份需要的時間較長邓嘹。
恢復(fù)分類
- 實例恢復(fù):當(dāng)oracle實例出現(xiàn)失敗后酣栈,oracle自動進行的恢復(fù)。
- 介質(zhì)恢復(fù):當(dāng)存放數(shù)據(jù)庫的介質(zhì)出現(xiàn)故障時所作的恢復(fù)汹押,介質(zhì)恢復(fù)又分為完全恢復(fù)和不完全恢復(fù)矿筝。
- 完全恢復(fù):將數(shù)據(jù)庫恢復(fù)到數(shù)據(jù)庫失敗時的狀態(tài)。這種恢復(fù)是通過裝載數(shù)據(jù)庫備份并應(yīng)用全部的重做日志做到的棚贾。
- 不完全恢復(fù):將數(shù)據(jù)庫恢復(fù)到數(shù)據(jù)庫失敗前的某一時刻的狀態(tài)窖维。這種恢復(fù)是通過裝載數(shù)據(jù)庫備份并應(yīng)用部分的重做日志做到的榆综。
五、啟動和關(guān)閉
啟動
Oracle數(shù)據(jù)庫實例的啟動要經(jīng)歷三個階段铸史。
- 1.nomount:啟動實例(Start an instance)鼻疮。
startup nomount;
- 2.mount:裝載數(shù)據(jù)庫(Mount the database)。
alter database mount;
- 3.open:打開數(shù)據(jù)庫(Open the database)琳轿。
alter database open;
- 直接啟動數(shù)據(jù)庫 :執(zhí)行startup open命令直接啟動數(shù)據(jù)庫判沟,相當(dāng)于以上三個步驟,open可以省略不寫崭篡。
startup open;
關(guān)閉
Oracle的關(guān)閉也要經(jīng)歷關(guān)閉數(shù)據(jù)庫挪哄、卸載數(shù)據(jù)庫和關(guān)閉實例三個階段。
- 1.關(guān)閉數(shù)據(jù)庫(Close the database):Oracle首先把SGA中的數(shù)據(jù)寫到數(shù)據(jù)文件和日志文件中琉闪,然后再關(guān)閉數(shù)據(jù)文件和聯(lián)機日志文件中燥。
- 2.卸載數(shù)據(jù)庫(Dismount the database):數(shù)據(jù)庫關(guān)閉完成之后,Oracle將分離數(shù)據(jù)庫和實例之間的聯(lián)系塘偎,這個階段叫做“卸載數(shù)據(jù)庫”或者叫“Dismount數(shù)據(jù)庫”疗涉。
- 3.關(guān)閉實例(Shut down the instance):這個階段Oracle將從釋放SGA占用的內(nèi)存,終止全部的后臺服務(wù)進程吟秩。
關(guān)閉方式
shutdown immediate
使用immediate方式關(guān)閉數(shù)據(jù)庫時:
1)新的用戶不能登錄數(shù)據(jù)庫咱扣;
2)未提交的事務(wù)將會被回滾;
3)Oracle不會等待所有的用戶(連接)退出數(shù)據(jù)庫涵防。
特點:
1)這種關(guān)閉方式可能會造成數(shù)據(jù)丟失闹伪;
2)數(shù)據(jù)庫重啟時不需要實例恢復(fù)。
推薦使用immediate方式關(guān)閉數(shù)據(jù)庫壮池。
shutdown transactional
以transactional方式關(guān)閉數(shù)據(jù)庫時:
1)不允許新的用戶登錄數(shù)據(jù)庫偏瓤;
2)不允許建立新的事務(wù);
3)所有的事務(wù)完成以后才關(guān)閉數(shù)據(jù)庫椰憋;
4)一個用戶(會話)執(zhí)行完當(dāng)前的事務(wù)后將被強行斷開與數(shù)據(jù)庫的連接厅克。
特點:
1)這種關(guān)閉方式不會造成數(shù)據(jù)丟失;
2)數(shù)據(jù)庫重啟時不需要實例恢復(fù)橙依;
3)這是最安全的關(guān)閉方式证舟。
shutdown abort
以abort方式關(guān)閉數(shù)據(jù)庫時:
1)不允許建立新的連接和新的事務(wù);
2)客戶端的SQL語句立刻終止窗骑;
3)未提交的事務(wù)不被回滾女责;
4)Oracle立刻終止所有連接(會話)。
特點:
1)只有數(shù)據(jù)庫出現(xiàn)問題時候创译,才使用這種方式關(guān)閉數(shù)據(jù)庫抵知;
2)這是一種最不安全的關(guān)閉方式,數(shù)據(jù)庫重啟時需要實例恢復(fù)。
shutdown normal
使用normal方式關(guān)閉數(shù)據(jù)庫時:
1)允許新的用戶注登錄數(shù)據(jù)庫刷喜;
2)要等所有的用戶自動退出Oracle以后残制,Oracle才關(guān)閉數(shù)據(jù)庫。如果有未退出的用戶吱肌,那么Oracle就一直等待,直到這個用戶退出才關(guān)閉數(shù)據(jù)庫仰禽。
normal是最慢的數(shù)據(jù)庫關(guān)閉方式氮墨,不推薦。
Reset
#重啟數(shù)據(jù)庫(Reset) --> 相當(dāng)于shutdown abort和startup吐葵。
startup force
本文主要摘抄:http://www.freecplus.net/