例項管理及資料庫的啟動關閉

孤竹星發表於2015-01-27

一、 例項和引數檔案

1、instance功能:用於管理和訪問database。

2、init parameter files:管理例項相關啟動引數。  位置:$ORACLE_HOME/dbs

3、pfile:(parameter file)靜態引數檔案
1)文字檔案,必須透過編輯器修改引數。 2)修改引數下次重啟例項才生效。3)pfile引數檔案可以不再database sever上。

命名方式:init+SID.ora

4、spfile:(system parameter file)動態引數檔案。  位置:show parameter spfile;
1)二進位制檔案,不可以透過編輯器修改。2)Linux下strings可以檢視 。3)必須在database server段的指定路徑下。

命名方式: spfile+SID.ora

在spfile讀到記憶體後,有一部分引數是可以直接在記憶體中修改,並對當前instance立即生效,這樣的引數叫動態引數。除了動態引數都是靜態引數。靜態引數修改spfile檔案。動態引數在instance關閉後失效,而靜態引數是下次instance啟動後才生效。

如何修改spfile引數

alter system set 引數=值 [scope=memory|spfile|both]
alter system reset 引數 [scope=memory|spfile|both] SID='*' //恢復預設值。

scope=memory 引數修改立刻生效,但不修改spfile檔案。
scope=spfile 修改了spfile檔案,重啟後生效。
scope=both 前兩種都要滿足。 預設

透過檢視V$parameter,可以確定引數修改方式,制定scope

SQL> desc v$parameter;

 issys_modifiable:對應alter system命令,及系統級修改

SQL> select distinct issys_modifiable from v$parameter;

ISSYS_MODIFIABLE
----------------
IMMEDIATE
FALSE
DEFERRED

IMMEDIATE     //對應scope=memory
FALSE            //只能scope=spfile,即修改spfile檔案,下次啟動才生效。
DEFERRED      //其他session有效

ISSES_MODIFIABLE:對應alter session命令,即session級修改

SQL> select distinct isses_modifiable from v$parameter;

ISSES_MODIFIABLE
----------------
TRUE //表示可以修改
FALSE //表示不能修改

SQL> select name,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter where name='sql_trace';


NAME                                                                             ISSES ISSYS_MOD
-------------------------------------------------------------------------------- ----- ---------
sql_trace                                                                        TRUE  IMMEDIATE

這個結果表示 sql_trace引數在session級別可以改,在system級也可以both修改(動態引數)。

5、startup時讀取初始化引數檔案(initialization parameter file)或伺服器引數檔案(server parameter file)如果沒有spfile可以從pfile啟動。

pfile和spfile可以相互生成:

SQL>create pfile from spfile
SQL>create spfile from pfile(使用spfile啟動後不能線上生成spfile,ORA-32002: 無法建立已由例項使用的 SPFILE)

可以透過當前記憶體引數生成pfile和spfile(11g新特性):

SQL>create pfile from memory;
SQL>create spfile from memory;

有了spfile,pfile一般留做備用,特殊情況也可以使用pfile啟動,命令如下:
SQL> startup pfile=D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.2112014103048

SQL> show parameter spfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SPFILEORCL.ORA

//如果value有值,說明資料庫啟動時讀的是spfile 

二 、資料庫啟動與關閉

1.啟動分為三個階段
   
1)nomount階段:讀取init parameter 
                           
SQL> select status from v$instance;   (這條命令很實用,看當前資料庫啟動的狀態,有三個 started,mounted,open)                                                                                          
STATUS
------------
STARTED


2)mount階段:  讀取控制檔案
SQL> select status from v$instance;                                                                                             
STATUS
------------
MOUNTED              
             
3)open階段:  1、檢查所有的datafile、redo log、 group 、password file。   
      2、檢查資料庫的一致性(controlfile、datafile、redo file的檢查點是否一致)

SQL> select file#,checkpoint_change# from v$datafile;   //從控制檔案中讀出

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            7877118
         2            7877118
         3            7877118
         4            7877118
         5            7877118
         6            7877118
         7            7877118
         8            7877118
         9            7877118
        10            7877118
        11            7877118
        12            7877118
        13            7877118


13 rows selected

SQL> select file#,checkpoint_change# from v$datafile_header;    從資料檔案頭中讀出

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            7877118
         2            7877118
         3            7877118
         4            7877118
         5            7877118
         6            7877118
         7            7877118
         8            7877118
         9            7877118
        10            7877118
        11            7877118
        12            7877118
        13            7877118


13 rows selected

SQL>  select status from v$instance;

STATUS
------------
OPEN

2. 啟動資料庫時的特殊選項

SQL> alter database open read only;
SQL> startup force
SQL> startup upgrade (只有sysdba能連線)
SQL> startup restrict (有restrict session許可權才可登入,sys不受限制)
SQL> alter system enable restricted session;  (open後再限制) 

3. 例項關閉
    shutdown normal: 拒絕新的連線,等待當前事務結束,等待當前會話結束,生成檢查點
    shutdown transactional :拒絕新的連線,等待當前事務結束,生成檢查點
    shutdown immediate:  拒絕新的連線,未提交的事務回滾,生成檢查點
    shutdown abort(startup force) :事務不回滾,不生成檢查點,下次啟動需要做instance  recovery 



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

相關文章