Oracle啟動三階段(二)

realkid4發表於2011-01-23

mount階段

 

mount階段是啟動的第二個階段。此處,我們說mount的是什麼?mount的是資料檔案和控制檔案,同時對應的日誌檔案資訊也已經獲取到。mount階段下,所有的系統引數已經載入完成,透過引數找到的控制檔案幫助例項定位載入了資料檔案。同時,針對上次關閉系統中的問題,比如未完成事務和恢復等,都要進行處理。

 

//進入mount狀態

SQL> alter database mount;

 

Database altered.

 

 

此時,監聽器狀態,從block變為了ready。

 

[oracle@oracle11g ~]$ lsnrctl status;

 

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 22-JAN-2011 15:59:22

 

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521)))

STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production

Start Date                22-JAN-2011 15:46:51

Uptime                    0 days 0 hr. 12 min. 31 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/oracle/network/admin/listener.ora

Listener Log File         /u01/diag/tnslsnr/oracle11g/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))

Services Summary...

Service "wilson" has 1 instance(s).

  Instance "wilson", status READY, has 1 handler(s) for this service...

The command completed successfully

 

 

此時的sqlplus命令提示符下,我們可以看到查詢專案。

 

 

SQL> select count(*) from v$datafile;

 

  COUNT(*)

----------

         7

 

SQL> select count(*) from v$controlfile;

 

  COUNT(*)

----------

         2

 

SQL> select count(*) from v$logfile;

 

  COUNT(*)

----------

         6

 

SQL> select count(*) from dba_objects;

select count(*) from dba_objects

                     *

ERROR at line 1:

ORA-01219: database not open: queries allowed on fixed tables/views only

 

SQL> select * from v$tablespace;

 

       TS# NAME                           INC BIG FLA ENC

---------- ------------------------------ --- --- --- ---

         0 SYSTEM                         YES NO  YES

         1 SYSAUX                         YES NO  YES

         2 UNDOTBS1                       YES NO  YES

         4 USERS                          YES NO  YES

         3 TEMP                           NO  NO  YES

         6 EXAMPLE                        YES NO  YES

         7 PERFSTAT                       YES NO  YES

         8 PERFSTATTEMP                   NO  NO  YES

         9 MYTEST                         YES NO  YES

 

9 rows selected.

 

SQL> archive log list;

Database log mode              No Archive Mode

Automatic archival             Disabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     78

Current log sequence           80

 

 

上面的結果,可以看出。在mount狀態下,一些基礎檢視已經可以查詢,比如從控制檔案中指定的物件資訊,如表空間、日誌等內容。但是涉及到物件資料型別的資料,還是不支援。說明,雖然將資料檔案mount上了,但是並沒有讀取資料檔案資訊的操作。

 

此時,筆者在實驗中發現了一個差異。在mount狀態下,如果使用sqlplus查詢引數,大部分引數是可以查詢到的。但是轉移到pl/sql developer開發工具上,大部分就會以報錯結束。如:

 

--sqlplus

SQL> show parameter tablespace;

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ----------

undo_tablespace                      string      UNDOTBS1

SQL>

 

--pl/sql developer

SQL> show parameter tablespace;

ORA-01219: 資料庫未開啟: 僅允許在固定表/檢視中查詢

 

 

 

筆者猜想:從一些開發工具的角度,可能對於這種維護模式下的查詢還是有限制的。

 

相對於nomount階段,mount階段是比較常用的。我們在這個階段可以在不受到干擾的情況下進行資料庫備份和還原工作。

 

 

開啟資料庫

 

該操作就是直接將資料檔案的讀取開啟了。

 

SQL> alter database open;

 

Database altered.

 

 

此時監聽器狀態:

 

[oracle@oracle11g ~]$ lsnrctl status;

 

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 22-JAN-2011 16:04:21

 

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

 

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle11g)(PORT=1521)))

STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production

Start Date                22-JAN-2011 15:46:51

Uptime                    0 days 0 hr. 17 min. 29 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /u01/oracle/network/admin/listener.ora

Listener Log File         /u01/diag/tnslsnr/oracle11g/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle11g)(PORT=1521)))

Services Summary...

Service "wilson" has 1 instance(s).

  Instance "wilson", status READY, has 1 handler(s) for this service...

Service "wilsonXDB" has 1 instance(s).

  Instance "wilson", status READY, has 1 handler(s) for this service...

The command completed successfully

 

注意:和剛才的監聽器程式相比,多出了一個XDB服務。這是Oracle提供的XMLDB服務的名稱。預設情況下,XDB服務一同啟動,一般都需要將他關閉掉。

 

說道XDB服務,有一個問題需要注意到。這個服務關聯的系統引數是

dispatchers='(PROTOCOL=TCP) (SERVICE=XDB)'

 

熟悉共享模式的朋友們就會意識到,dispatchers引數不是共享模式的設定嗎?沒錯,在全域性是專用模式支援連線的情況下,預設的XDB是使用共享模式的。我們在啟動的程式列表中,也可以看到對應的d00s00/s01程式。

 

 

[oracle@oracle11g ~]$ ps -ef | grep oracle

root      5529  5497  0 15:39 pts/0    00:00:00 su oracle

oracle    5530  5529  0 15:39 pts/0    00:00:00 bash

oracle    5559     1  0 15:46 ?        00:00:00 /u01/oracle/bin/tnslsnr LISTENER -inherit

oracle    5565  5530  0 15:49 pts/0    00:00:00 sqlplus      

(篇幅原因,略)

oracle    5645     1  0 15:50 ?        00:00:00 ora_mmnl_wilson

oracle    5647     1  0 15:50 ?        00:00:00 ora_d000_wilson  //1

oracle    5649     1  0 15:50 ?        00:00:00 ora_s000_wilson  //2

oracle    5651     1  0 15:50 ?        00:00:00 ora_s001_wilson  //3

oracle    5653  5565  0 15:50 ?        00:00:03 oraclewilson (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))                //4

root      5712  5680  0 15:53 pts/1    00:00:00 su oracle

(篇幅原因,略)

oracle    5796  5713  0 16:05 pts/1    00:00:00 grep oracle

 

 

其中,//4為對應的專用連線模式。//1、//2、//3為對應XDB的共享模式。也可以看出,在Oracle中,共享連線和專用連線在一定程度上是可以並存在一個例項下的。

 

此時,所有的資料資訊已經開始支援訪問。

 

 

SQL> select count(*) from dba_objects;

 

  COUNT(*)

----------

72516

 

同時,一些檢視的結構也發生變化,更多的資訊被載入。

 

 

SQL> select * from v$tablespace;

 

TS# NAME  INCLUDED_IN_DATABASE_BACKUP BIGFILE FLASHBACK_ON ENCRYPT_IN_BACKUP

---------- ------------------------------ --------------------------- -------

         0 SYSTEM                         YES                         NO YES  

         1 SYSAUX                         YES                         NO YES  

         2 UNDOTBS1                       YES                         NO  YES  

         4 USERS                          YES                         NO  YES 

         3 TEMP                           NO                          NO  YES 

         6 EXAMPLE                        YES                         NO  YES 

         7 PERFSTAT                       YES                         NO  YES 

         8 PERFSTATTEMP                   NO                          NO  YES 

         9 MYTEST                         YES                         NO  YES

 

9 rows selected

 

 

 

結論:Oracle的啟動階段每個階段都有相應的特點和功能。理解這些對於我們瞭解體系結構有很大幫助。同時,當我們啟動遇到故障的時候,是可以分階段啟動進行調整調錯。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-684504/,如需轉載,請註明出處,否則將追究法律責任。

相關文章