官术网_书友最值得收藏!

1.6 啟動與關閉數據庫實例

視頻講解:光盤\TM\lx\1\啟動與關閉數據庫實例.mp4

1.6.1 啟動數據庫實例

Oracle數據庫實例的啟動過程分為3個步驟,分別是啟動實例、加載數據庫、打開數據庫。用戶可以根據實際情況的需要,以不同的模式啟動數據庫,啟動數據庫所使用的命令格式如下。

        STARTUP [nomount | mount | open | force] [restrict] [pfile=filename]

nomount:表示啟動實例不加載數據庫。

mount:表示啟動實例、加載數據庫并保持數據庫的關閉狀態。

open:表示啟動實例、加載并打開數據庫,這個是默認選項。

force:表示終止實例并重新啟動數據庫。

restrict:用于指定以受限制的會話方式啟動數據庫。

pfile:用于指定啟動實例時所使用的文本參數文件,filename就是文件名。

Oracle數據庫實例在啟動時必須讀取一個初始化參數文件,以便從中獲得有關實例啟動的參數配置信息。若在startup語句中沒有指定pfile參數,則Oracle首先讀取默認位置的服務器初始化參數文件spfile,若沒有找到默認的服務器初始化參數文件,則將讀取默認位置的文本初始化參數文件。下面將分別講解startup語法中列舉出的幾種啟動模式。

1.NOMOUNT模式

這種啟動模式只會創建實例(即創建Oracle實例的各種內存結構和服務進程),并不加載數據庫,也不會打開任何數據文件。下面的示例代碼顯示了如何使用NOMOUNT模式啟動數據庫實例。

【例1.1】 啟動數據庫實例到NOMOUNT模式下,代碼及運行結果如下(實例位置:光盤\TM\sl\1\1)。

        SQL> connect system/1qaz2wsx as sysdba;
        已連接。
        SQL> shutdown immediate
        數據庫已經關閉。
        已經卸載數據庫。
        ORACLE例程已經關閉。
        SQL> startup nomount
        ORACLE例程已經啟動。



        Total System Global Area  535662592 bytes
        Fixed Size                1375792 bytes
        Variable Size           226492880 bytes
        Database Buffers         301989888 bytes
        Redo Buffers              5804032 bytes

在上面的示例代碼中,首先用戶要以sysdba的身份登錄,才具有關閉和啟動數據實例的權限。在使用shutdown命令關閉數據庫實例之后,然后使用startup nomount命令啟動數據庫實例。

說明

通常在創建新數據庫或重建控制文件時,使用NOMOUNT模式啟動數據庫實例。

2.MOUNT模式

這種模式將啟動實例、加載數據庫并保持數據庫的關閉狀態,下面的示例代碼顯示了如何使用MOUNT模式啟動數據庫實例。

【例1.2】 啟動數據庫實例到MOUNT模式下,代碼及運行結果如下(實例位置:光盤\TM\sl\1\2)。

        SQL> shutdown immediate
        數據庫已經關閉。
        已經卸載數據庫。
        ORACLE例程已經關閉。
        SQL> startup mount
        ORACLE例程已經啟動。


        Total System Global Area  535662592 bytes
        Fixed Size                1375792 bytes
        Variable Size           226492880 bytes
        Database Buffers         301989888 bytes
        Redo Buffers              5804032 bytes
        數據庫裝載完畢。

上面的代碼中,首先使用shutdown命令關閉數據庫實例,然后再使用startup mount命令啟動數據庫實例。

說明

NOMOUNT模式通常在進行數據庫維護時使用。比如,執行數據庫完全恢復操作、更改數據庫的歸檔模式等。

3.OPEN模式

這種模式將啟動實例、加載并打開數據庫,這就是常規的啟動模式,用戶想要對數據庫進行多種操作,就必須使用OPEN模式啟動數據庫實例。下面的示例代碼顯示了如何使用OPEN模式啟動數據庫實例。

【例1.3】 啟動數據庫實例到OPEN模式下,代碼及運行結果如下。

        SQL> startup
        ORACLE例程已經啟動。


        Total System Global Area  535662592 bytes
        Fixed Size                1375792 bytes
        Variable Size           226492880 bytes
        Database Buffers         301989888 bytes
        Redo Buffers              5804032 bytes
        數據庫裝載完畢。
        數據庫已經打開。

在上面的代碼中,startup命令的后面不帶有任何參數,就表示以OPEN模式啟動數據庫實例。

4.FORCE模式

這種模式將終止實例并重新啟動數據庫,這種啟動模式具有一定的強制性。比如,在其他啟動模式失效時,可以嘗試使用這種啟動模式。下面的示例代碼顯示了如何使用FORCE模式啟動數據庫實例。

【例1.4】 啟動數據庫實例到FORCE模式下,代碼及運行結果如下。

        SQL> startup force
        ORACLE例程已經啟動。


        Total System Global Area  535662592 bytes
        Fixed Size                1375792 bytes
        Variable Size           226492880 bytes
        Database Buffers         301989888 bytes
        Redo Buffers              5804032 bytes
        數據庫裝載完畢。
        數據庫已經打開。

1.6.2 關閉數據庫實例

與啟動數據庫實例相同,關閉數據庫實例也分為3個步驟,分別是關閉數據庫、卸載數據庫、關閉Oracle實例。在SQL*Plus中,可以使用shutdown語句關閉數據庫,其具體語法格式如下:

        SHUTDOWN [normal | transactional | immediate | abort]

normal:表示以正常方式關閉數據庫。

transactional:表示在當前所有的活動事務被提交完畢之后,關閉數據庫。

immediate:表示在盡可能短的時間內立即關閉數據庫。

abort:表示以終止方式來關閉數據庫。

下面將分別講解在shutdown語法中列舉出的4種關閉數據庫實例的方式。

1.NORMAL方式

這種方式稱作正常關閉方式,如果對關閉數據庫的時間沒有限制,通常會使用這種方式來關閉數據庫。下面的代碼顯示了如何使用NORMAL方式關閉數據庫。

【例1.5】 使用NORMAL方式關閉數據庫,代碼及運行結果如下。

        SQL> shutdown normal
        數據庫已經關閉。
        已經卸載數據庫。
        ORACLE例程已經關閉。

從上面的代碼可以看出,Oracle在執行shutdown命令后,所返回的響應信息就是關閉數據庫實例的過程。當以正常方式關閉數據庫時,Oracle將執行如下操作。

阻止任何用戶建立新的連接。

等待當前所有正在連接的用戶主動斷開連接。

當所有的用戶都斷開連接后,將立即關閉數據庫。

2.TRANSACTIONAL方式

這種方式稱作事務關閉方式,它的首要任務是能夠保證當前所有的活動事務都可以被提交,并在盡可能短的時間內關閉數據庫。下面的代碼顯示了如何使用TRANSACTIONAL方式關閉數據庫。

【例1.6】 使用TRANSACTIONAL方式關閉數據庫,代碼及運行結果如下。

        SQL> shutdown transactional
        數據庫已經關閉。
        已經卸載數據庫。
        ORACLE例程已經關閉。

以事務方式關閉數據庫時,Oracle將執行如下操作。

阻止用戶建立新連接和開始新事務。

等待所有活動事務提交后,再斷開用戶連接。

當所有的活動事務提交完畢、所有的用戶都斷開連接后,將關閉數據庫。

3.IMMEDIATE方式

就跟IMMEDIATE單詞的含義一樣,這種方式稱作立即關閉方式,這種方式能夠在盡可能短的時間內關閉數據庫。下面的代碼顯示了如何使用IMMEDIATE方式關閉數據庫。

【例1.7】 使用IMMEDIATE方式關閉數據庫,代碼及運行結果如下。

        SQL> shutdown immediate
        數據庫已經關閉。
        已經卸載數據庫。
        ORACLE例程已經關閉。

在這種關閉方式下,Oracle不但會立即中斷當前用戶的連接,而且會強行終止用戶的當前活動事務,將未完成的事務回退。以立即關閉方式關閉數據庫時,Oracle將執行如下操作。

阻止用戶建立新連接和開始新事務。

將未提交的活動事務回退。

關閉數據庫。

4.ABORT方式

這種方式稱作終止關閉方式,終止關閉方式具有一定的強制性和破壞性。使用這種方式會強制中斷任何數據庫操作,這樣可能會丟失一部分數據信息,影響數據庫的完整性。除了由于使用其他3種方式無法關閉數據庫而使用它之外,應該盡量避免使用這種方式。下面的代碼顯示了如何使用ABORT方式關閉數據庫。

【例1.8】 使用ABORT方式關閉數據庫,代碼及運行結果如下。

        SQL> shutdown abort
        ORACLE例程已經關閉。

以立即關閉方式關閉數據庫時,Oracle將執行如下操作。

阻止用戶建立新連接和開始新事務。

取消未提交的活動事務,而不是回退。

立即終止正在執行的任何SQL語句。

立即關閉數據庫。

互動練習:在scott模式下,使用DISTINCT關鍵字顯示emp表中不重復記錄。

主站蜘蛛池模板: 贵溪市| 峨眉山市| 宿迁市| 扶余县| 略阳县| 新津县| 旌德县| 息烽县| 翁牛特旗| 晋州市| 开江县| 铜陵市| 万宁市| 易门县| 邯郸市| 吉林市| 隆昌县| 岐山县| 神木县| 香格里拉县| 临西县| 陵水| 阿瓦提县| 平山县| 滦南县| 鄂托克旗| 蓝山县| 广宗县| 固安县| 宣汉县| 南京市| 马尔康县| 汕尾市| 吉水县| 陈巴尔虎旗| 平度市| 紫云| 大新县| 迁安市| 南漳县| 衢州市|