文章詳情頁
深刻理解 Oracle 數(shù)據(jù)庫的啟動和關閉
瀏覽:11日期:2023-11-12 19:25:46
Oracle數(shù)據(jù)庫提供了幾種不同的數(shù)據(jù)庫啟動和關閉方式,本文將具體介紹這些啟動和關閉方式之間的區(qū)別以及它們各自不同的功能。 ;一、啟動和關閉Oracle數(shù)據(jù)庫;對于大多數(shù)Oracle DBA來說,啟動和關閉Oracle數(shù)據(jù)庫最常用的方式就是在命令行方式下的Server Manager。從Oracle 8i以后,系統(tǒng)將Server Manager的所有功能都集中到了SQL*Plus中,也就是說從8i以后對于數(shù)據(jù)庫的啟動和關閉可以直接通過SQL*Plus來完成,而不再另外需要Server Manager,但系統(tǒng)為了保持向下兼容,依舊保留了Server Manager工具。另外也可通過圖形用戶工具(GUI)的Oracle Enterprise Manager來完成系統(tǒng)的啟動和關閉,圖形用戶界面Instance Manager非常簡單,這里不再詳述。;要啟動和關閉數(shù)據(jù)庫,必須要以具有Oracle 治理員權限的用戶登陸,通常也就是以具有SYSDBA權限的用戶登陸。一般我們常用INTERNAL用戶來啟動和關閉數(shù)據(jù)庫(INTERNAL用戶實際上是SYS用戶以SYSDBA連接的同義詞)。Oracle數(shù)據(jù)庫的新版本將逐步淘汰INTERNAL這個內部用戶,所以我們最好還是設置DBA用戶具有SYSDBA權限。;;; 二、數(shù)據(jù)庫的啟動(STARTUP);啟動一個數(shù)據(jù)庫需要三個步驟:;1、 創(chuàng)建一個Oracle實例(非安裝階段) 2、 由實例安裝數(shù)據(jù)庫(安裝階段) 3、 打開數(shù)據(jù)庫(打開階段);在Startup命令中,可以通過不同的選項來控制數(shù)據(jù)庫的不同啟動步驟。;1、STARTUP NOMOUNT;NONOUNT選項僅僅創(chuàng)建一個Oracle實例。讀取init.ora初始化參數(shù)文件、啟動后臺進程、初始化系統(tǒng)全局區(qū)(SGA)。Init.ora文件定義了實例的配置,包括內存結構的大小和啟動后臺進程的數(shù)量和類型等。實例名根據(jù)Oracle_SID設置,不一定要與打開的數(shù)據(jù)庫名稱相同。當實例打開后,系統(tǒng)將顯示一個SGA內存結構和大小的列表,如下所示:SQL> startup nomountORACLE 例程已經啟動。Total System Global Area 35431692 bytesFixed Size 70924 bytesVariable Size 18505728 bytesDatabase Buffers 16777216 bytesRedo Buffers 77824 bytes;2、STARTUP MOUNT;該命令創(chuàng)建實例并且安裝數(shù)據(jù)庫,但沒有打開數(shù)據(jù)庫。Oracle系統(tǒng)讀取控制文件中關于數(shù)據(jù)文件和重作日志文件的內容,但并不打開該文件。這種打開方式常在數(shù)據(jù)庫維護操作中使用,如對數(shù)據(jù)文件的更名、改變重作日志以及打開歸檔方式等。在這種打開方式下,除了可以看到SGA系統(tǒng)列表以外,系統(tǒng)還會給出'數(shù)據(jù)庫裝載完畢'的提示。;3、STARTUP;該命令完成創(chuàng)建實例、安裝實例和打開數(shù)據(jù)庫的所有三個步驟。此時數(shù)據(jù)庫使數(shù)據(jù)文件和重作日志文件在線,通常還會請求一個或者是多個回滾段。這時系統(tǒng)除了可以看到前面Startup Mount方式下的所有提示外,還會給出一個'數(shù)據(jù)庫已經打開'的提示。此時,數(shù)據(jù)庫系統(tǒng)處于正常工作狀態(tài),可以接受用戶請求。 假如采用STARTUP NOMOUNT或者是STARTUP MOUNT的數(shù)據(jù)庫打開命令方式,必須采用ALTER DATABASE命令來執(zhí)行打開數(shù)據(jù)庫的操作。例如,假如你以STARTUP NOMOUNT方式打開數(shù)據(jù)庫,也就是說實例已經創(chuàng)建,但是數(shù)據(jù)庫沒有安裝和打開。這是必須運行下面的兩條命令,數(shù)據(jù)庫才能正確啟動。ALTER DATABASE MOUNT;ALTER DATABASE OPEN; 而假如以STARTUP MOUNT方式啟動數(shù)據(jù)庫,只需要運行下面一條命令即可以打開數(shù)據(jù)庫:ALTER DATABASE OPEN; 4、其他打開方式 除了前面介紹的三種數(shù)據(jù)庫打開方式選項外,還有另外其他的一些選項。 (1) STARTUP RESTRICT 這種方式下,數(shù)據(jù)庫將被成功打開,但僅僅答應一些特權用戶(具有DBA角色的用戶)才可以使用數(shù)據(jù)庫。這種方式常用來對數(shù)據(jù)庫進行維護,如數(shù)據(jù)的導入/導出操作時不希望有其他用戶連接到數(shù)據(jù)庫操作數(shù)據(jù)。 (2) STARTUP FORCE 該命令其實是強行關閉數(shù)據(jù)庫(shutdown abort)和啟動數(shù)據(jù)庫(startup)兩條命令的一個綜合。該命令僅在關閉數(shù)據(jù)庫碰到問題不能關閉數(shù)據(jù)庫時采用。 (3) ALTER DATABASE OPEN READ ONLY 該命令在創(chuàng)建實例以及安裝數(shù)據(jù)庫后,以只讀方式打開數(shù)據(jù)庫。對于那些僅僅提供查詢功能的產品數(shù)據(jù)庫可以采用這種方式打開。 三、數(shù)據(jù)庫的關閉(SHUTDOWN) 對于數(shù)據(jù)庫的關閉,有四種不同的關閉選項,下面對其進行一一介紹。 1、SHUTDOWN NORMAL 這是數(shù)據(jù)庫關閉SHUTDOWN命令的確省選項。也就是說假如你發(fā)出SHUTDOWN這樣的命令,也即是SHUTDOWN NORNAL的意思。 發(fā)出該命令后,任何新的連接都將再不答應連接到數(shù)據(jù)庫。在數(shù)據(jù)庫關閉之前,Oracle將等待目前連接的所有用戶都從數(shù)據(jù)庫中退出后才開始關閉數(shù)據(jù)庫。采用這種方式關閉數(shù)據(jù)庫,在下一次啟動時不需要進行任何的實例恢復。但需要注重一點的是,采用這種方式,也許關閉一個數(shù)據(jù)庫需要幾天時間,也許更長。 2、SHUTDOWN IMMEDIATE 這是我們常用的一種關閉數(shù)據(jù)庫的方式,想很快地關閉數(shù)據(jù)庫,但又想讓數(shù)據(jù)庫干凈的關閉,常采用這種方式。 當前正在被Oracle處理的SQL語句立即中斷,系統(tǒng)中任何沒有提交的事務全部回滾。假如系統(tǒng)中存在一個很長的未提交的事務,采用這種方式關閉數(shù)據(jù)庫也需要一段時間(該事務回滾時間)。系統(tǒng)不等待連接到數(shù)據(jù)庫的所有用戶退出系統(tǒng),強行回滾當前所有的活動事務,然后斷開所有的連接用戶。 3、SHUTDOWN TRANSACTIONAL 該選項僅在Oracle 8i后才可以使用。該命令常用來計劃關閉數(shù)據(jù)庫,它使當前連接到系統(tǒng)且正在活動的事務執(zhí)行完畢,運行該命令后,任何新的連接和事務都是不答應的。在所有活動的事務完成后,數(shù)據(jù)庫將和SHUTDOWN IMMEDIATE同樣的方式關閉數(shù)據(jù)庫。 4、SHUTDOWN ABORT 這是關閉數(shù)據(jù)庫的最后一招,也是在沒有任何辦法關閉數(shù)據(jù)庫的情況下才不得不采用的方式,一般不要采用。假如下列情況出現(xiàn)時可以考慮采用這種方式關閉數(shù)據(jù)庫。 1、數(shù)據(jù)庫處于一種非正常工作狀態(tài),不能用shutdown normal或者shutdown immediate這樣的命令關閉數(shù)據(jù)庫; 2、需要立即關閉數(shù)據(jù)庫; 3、在啟動數(shù)據(jù)庫實例時碰到問題; 所有正在運行的SQL語句都將立即中止。所有未提交的事務將不回滾。Oracle也不等待目前連接到數(shù)據(jù)庫的用戶退出系統(tǒng)。下一次啟動數(shù)據(jù)庫時需要實例恢復,因此,下一次啟動可能比平時需要更多的時間。 表1可以清楚地看到上述四種不同關閉數(shù)據(jù)庫的區(qū)別和聯(lián)系。 表1 Shutdown數(shù)據(jù)庫不同方式對比表關閉方式A;I;T;N;答應新的連接××××等待直到當前會話中止×××√等待直到當前事務中止××√√強制CheckPoint,關閉所有文件×√√√ 其中:A-Abort I-Immediate T-Transaction
標簽:
Oracle
數(shù)據(jù)庫
排行榜
