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

1.4 啟動與關閉數據庫實例

1.4.1 啟動數據庫實例

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

     STARTUP [NOMOUNT | MOUNT | OPEN | FORCE] [RESTRICT] [PFILE=filename]

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

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

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

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

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

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

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

1.NOMOUNT模式

NOMOUNT啟動模式只會創建實例(即創建Oracle實例的各種內存結構和服務進程),并不加載數據庫,也不會打開任何數據文件。

【例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命令啟動數據庫實例。

說明

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

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.4.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方式

ABORT方式稱作終止關閉方式,具有一定的強制性和破壞性。使用這種方式會強制中斷數據庫的操作,這樣可能會丟失一部分數據信息,影響數據庫的完整性。除非使用其他3種方式無法關閉數據庫,否則應該盡量避免使用這種方式。

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

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

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

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

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

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

 立即關閉數據庫。

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

主站蜘蛛池模板: 牙克石市| 宁海县| 抚宁县| 涟水县| 兴隆县| 巴南区| 铜陵市| 泽普县| 瑞安市| 启东市| 威海市| 洛川县| 都江堰市| 礼泉县| 东乡| 舒城县| 贵州省| 尉氏县| 涪陵区| 邹平县| 五莲县| 洪泽县| 积石山| 沧州市| 安西县| 金川县| 镇平县| 桐柏县| 安岳县| 剑河县| 琼海市| 白玉县| 绥化市| 盐池县| 吴川市| 正镶白旗| 绿春县| 云安县| 凤阳县| 东城区| 随州市|