隨筆-314  評論-209  文章-0  trackbacks-0
           

          Oracle中不同啟動和關(guān)閉方式的區(qū)別

          Oracle數(shù)據(jù)庫提供了幾種不同的數(shù)據(jù)庫啟動和關(guān)閉方式,本文將周詳介紹這些啟動和關(guān)閉方式之間的區(qū)別連同他們各自不同的功能。

          一、啟動和關(guān)閉Oracle數(shù)據(jù)庫

          對于大多數(shù)Oracle DBA來說,啟動和關(guān)閉Oracle數(shù)據(jù)庫最常用的方式就是在命令行方式下的Server Manager。從Oracle 8i以后,系統(tǒng)將Server Manager的任何功能都集中到了SQL*Plus中,也就是說從8i以后對于數(shù)據(jù)庫的啟動和關(guān)閉能夠直接通過SQL*Plus來完成,而不再另外需要Server Manager,但系統(tǒng)為了保持向下兼容,依舊保留了Server Manager工具。另外也可通過圖像用戶工具(GUI)的Oracle Enterprise Manager來完成系統(tǒng)的啟動和關(guān)閉,圖像用戶界面Instance Manager很簡單,這里不再詳述。

          要啟動和關(guān)閉數(shù)據(jù)庫,必須要以具備Oracle 管理員權(quán)限的用戶登陸,通常也就是以具備SYSDBA權(quán)限的用戶登陸。一般我們常用INTERNAL用戶來啟動和關(guān)閉數(shù)據(jù)庫(INTERNAL用戶實(shí)際上是SYS用戶以SYSDBA連接的同義詞)。Oracle數(shù)據(jù)庫的新版本將逐步淘汰INTERNAL這個內(nèi)部用戶,所以我們最好還是配置DBA用戶具備SYSDBA權(quán)限。

          二、數(shù)據(jù)庫的啟動(STARTUP)

          啟動一個數(shù)據(jù)庫需要三個步驟:

          1、 創(chuàng)建一個Oracle實(shí)例(非安裝階段)

          2、 由實(shí)例安裝數(shù)據(jù)庫(安裝階段)

          3、 打開數(shù)據(jù)庫(打開階段)

          在Startup命令中,能夠通過不同的選項(xiàng)來控制數(shù)據(jù)庫的不同啟動步驟。

          1、STARTUP NOMOUNT

          NOMOUNT選項(xiàng)僅僅創(chuàng)建一個Oracle實(shí)例。讀取init.ora初始化參數(shù)文檔、啟動后臺進(jìn)程、初始化系統(tǒng)全局區(qū)(SGA)。Init.ora文檔定義了實(shí)例的配置,包括內(nèi)存結(jié)構(gòu)的大小和啟動后臺進(jìn)程的數(shù)量和類型等。實(shí)例名根據(jù)Oracle_SID配置,不一定要和打開的數(shù)據(jù)庫名稱相同。當(dāng)實(shí)例打開后,系統(tǒng)將顯示一個SGA內(nèi)存結(jié)構(gòu)和大小的列表,如下所示:

          SQL> startup nomount

          ORACLE 例程已啟動。

          Total System Global Area 35431692 bytes

          Fixed Size 70924 bytes

          Variable Size 18505728 bytes

          Database Buffers 16777216 bytes

          Redo Buffers 77824 bytes

          2、STARTUP MOUNT

          該命令創(chuàng)建實(shí)例并且安裝數(shù)據(jù)庫,但沒有打開數(shù)據(jù)庫。Oracle系統(tǒng)讀取控制文檔中關(guān)于數(shù)據(jù)文檔和重作日志文檔的內(nèi)容,但并不打開該文檔。這種打開方式常在數(shù)據(jù)庫維護(hù)操作中使用,如對數(shù)據(jù)文檔的更名、改變重作日志連同打開歸檔方式等。在這種打開方式下,除了能夠看到SGA系統(tǒng)列表以外,系統(tǒng)還會給出"數(shù)據(jù)庫裝載完畢"的提示。

          3、STARTUP

          該命令完成創(chuàng)建實(shí)例、安裝實(shí)例和打開數(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ù)庫,也就是說實(shí)例已創(chuàng)建,但是數(shù)據(jù)庫沒有安裝和打開。這是必須運(yùn)行下面的兩條命令,數(shù)據(jù)庫才能正確啟動。

          ALTER DATABASE MOUNT;

          ALTER DATABASE OPEN;

          而假如以STARTUP MOUNT方式啟動數(shù)據(jù)庫,只需要運(yùn)行下面一條命令即能夠打開數(shù)據(jù)庫:

          ALTER DATABASE OPEN.

          4、其他打開方式

          除了前面介紹的三種數(shù)據(jù)庫打開方式選項(xiàng)外,更有另外其他的一些選項(xiàng)。

          (1) STARTUP RESTRICT

          這種方式下,數(shù)據(jù)庫將被成功打開,但僅僅允許一些特權(quán)用戶(具備DBA角色的用戶)才能夠使用數(shù)據(jù)庫。這種方式常用來對數(shù)據(jù)庫進(jìn)行維護(hù),如數(shù)據(jù)的導(dǎo)入/導(dǎo)出操作時不希望有其他用戶連接到數(shù)據(jù)庫操作數(shù)據(jù)。

          (2) STARTUP FORCE

          該命令其實(shí)是強(qiáng)行關(guān)閉數(shù)據(jù)庫(shutdown abort)和啟動數(shù)據(jù)庫(startup)兩條命令的一個綜合。該命令僅在關(guān)閉數(shù)據(jù)庫碰到問題不能關(guān)閉數(shù)據(jù)庫時采用。

          (3) ALTER DATABASE OPEN READ ONLY;

          該命令在創(chuàng)建實(shí)例連同安裝數(shù)據(jù)庫后,以只讀方式打開數(shù)據(jù)庫。對于那些僅僅提供查詢功能的產(chǎn)品數(shù)據(jù)庫能夠采用這種方式打開。

          三、數(shù)據(jù)庫的關(guān)閉(SHUTDOWN)

          對于數(shù)據(jù)庫的關(guān)閉,有四種不同的關(guān)閉選項(xiàng),下面對其進(jìn)行一一介紹。

          1、SHUTDOWN NORMAL

          這是數(shù)據(jù)庫關(guān)閉SHUTDOWN命令的確省選項(xiàng)。也就是說假如您發(fā)出SHUTDOWN這樣的命令,也即是SHUTDOWN NORNAL的意思。

          發(fā)出該命令后,任何新的連接都將再不允許連接到數(shù)據(jù)庫。在數(shù)據(jù)庫關(guān)閉之前,Oracle將等待現(xiàn)在連接的任何用戶都從數(shù)據(jù)庫中退出后才開始關(guān)閉數(shù)據(jù)庫。采用這種方式關(guān)閉數(shù)據(jù)庫,在下一次啟動時無需進(jìn)行任何的實(shí)例恢復(fù)。但需要注意一點(diǎn)的是,采用這種方式,也許關(guān)閉一個數(shù)據(jù)庫需要幾天時間,也許更長。

          2、SHUTDOWN IMMEDIATE

          這是我們常用的一種關(guān)閉數(shù)據(jù)庫的方式,想很快地關(guān)閉數(shù)據(jù)庫,但又想讓數(shù)據(jù)庫干凈的關(guān)閉,常采用這種方式。

          當(dāng)前正在被Oracle處理的SQL語句立即中斷,系統(tǒng)中任何沒有提交的事務(wù)全部回滾。假如系統(tǒng)中存在一個很長的未提交的事務(wù),采用這種方式關(guān)閉數(shù)據(jù)庫也需要一段時間(該事務(wù)回滾時間)。系統(tǒng)不等待連接到數(shù)據(jù)庫的任何用戶退出系統(tǒng),強(qiáng)行回滾當(dāng)前任何的活動事務(wù),然后斷開任何的連接用戶。

          3、SHUTDOWN TRANSACTIONAL

          該選項(xiàng)僅在Oracle 8i后才能夠使用。該命令常用來計劃關(guān)閉數(shù)據(jù)庫,他使當(dāng)前連接到系統(tǒng)且正在活動的事務(wù)執(zhí)行完畢,運(yùn)行該命令后,任何新的連接和事務(wù)都是不允許的。在任何活動的事務(wù)完成后,數(shù)據(jù)庫將和SHUTDOWN IMMEDIATE同樣的方式關(guān)閉數(shù)據(jù)庫。

          4、SHUTDOWN ABORT

          這是關(guān)閉數(shù)據(jù)庫的最后一招,也是在沒有任何辦法關(guān)閉數(shù)據(jù)庫的情況下才不得不采用的方式,一般不要采用。假如下列情況出現(xiàn)時能夠考慮采用這種方式關(guān)閉數(shù)據(jù)庫。

          1、 數(shù)據(jù)庫處于一種非正常工作狀態(tài),不能用shutdown normal或shutdown immediate這樣的命令關(guān)閉數(shù)據(jù)庫;

          2、 需要立即關(guān)閉數(shù)據(jù)庫;

          3、 在啟動數(shù)據(jù)庫實(shí)例時碰到問題;

          任何正在運(yùn)行的SQL語句都將立即中止。任何未提交的事務(wù)將不回滾。Oracle也不等待現(xiàn)在連接到數(shù)據(jù)庫的用戶退出系統(tǒng)。下一次啟動數(shù)據(jù)庫時需要實(shí)例恢復(fù),因此,下一次啟動可能比平時需要更多的時間。

          表1能夠清楚地看到上述四種不同關(guān)閉數(shù)據(jù)庫的區(qū)別和聯(lián)系。

                   關(guān)閉方式 A I T N

          允許新的連接 × × × ×

          等待直到當(dāng)前會話中止 × × × √

          等待直到當(dāng)前事務(wù)中止 × × √ √

          強(qiáng)制CheckPoint,關(guān)閉任何文檔 × √ √ √

          其中:A-Abort I-Immediate T-Transaction N-Nornal

          pl/sql developer的Commander Windows下執(zhí)行shutdown命令報“ORA-00900: 無效 SQL 語句”,

          但在服務(wù)器本地sqlplus下卻可以執(zhí)行關(guān)閉數(shù)據(jù)庫命令,PL/SQL DEVELOPER只支持部分的sql*plus命令?

          另外在數(shù)據(jù)庫unmount(instance 已經(jīng)啟動)的情況下,PL/SQL DEVELOPER無法連接上,

          報“ORA-12528: TNS:監(jiān)聽程序:所有適用例程都無法建立新連接”。

          在instance已經(jīng)啟動但數(shù)據(jù)庫還沒mount的情況下PL/SQL DEVELOPER等客戶端都無法連接到實(shí)例上

          如何查看Oracle當(dāng)前數(shù)據(jù)庫實(shí)例名

          數(shù)據(jù)庫實(shí)例名在編程的很多地方都需要用到,配置數(shù)據(jù)庫的jdbc:oracle:thin:@192.168.2.1:1521:WW ,還有sqlPlus的連接字符串中也需要用到 conn sys/password@WW as sysdba; 如何查看當(dāng)前數(shù)據(jù)庫實(shí)例名呢?方式有三:

            ·使用SQL語句:select instance_name from v$instance;

            ·使用show命令:show parameter instance

            ·查看參數(shù)文件:查看init.ora文件

          posted on 2011-01-04 10:32 xzc 閱讀(2458) 評論(0)  編輯  收藏 所屬分類: Oracle
          主站蜘蛛池模板: 张家界市| 内江市| 新乡市| 丹巴县| 五莲县| 图们市| 新闻| 方城县| 航空| 南安市| 扎囊县| 莱阳市| 丹江口市| 泸定县| 姚安县| 大厂| 西和县| 湛江市| 英德市| 兰考县| 凌源市| 昔阳县| 科技| 义马市| 通辽市| 宝兴县| 修武县| 临漳县| 慈利县| 河津市| 梅州市| 宜兰市| 汝州市| 石屏县| 手机| 丽水市| 泰州市| 德安县| 三亚市| 靖西县| 绵阳市|