作者:admin 日期:2023-10-14 瀏覽: 次
Oracle體系結構之數(shù)據(jù)庫啟停(一)
Startup 啟動 Shutdown 關閉Alert log file 日志文件 Parameter file 參數(shù)文件Background trace file 后臺跟蹤文件Mount 裝載Session 會話 Restrict 限制 PFILE 靜態(tài)參數(shù)文件 SPFILE 服務器端參數(shù)文件Trace File 跟蹤文件 Alert Log File 警告日志文件
如圖 P1-1 所示,Oracle 實例分為四種狀態(tài),分別為:
關閉(SHUTDOWN)、非裝載(NOMOUNT 啟動)、裝載(MOUNT)、打開(OPEN)。
P 1-1:實例啟動與關閉示意
如果實例沒有打開,以普通用戶身份時,會報錯。
訪問 Oracle 數(shù)據(jù)庫首先要啟動數(shù)據(jù)庫,管理員連接到空閑實例,然后才能發(fā)出啟動例或數(shù)據(jù)庫的命令。
啟動 Oracle 服務器,每個階段會打開不同的文件并且會完成不同的管理任務。
數(shù)據(jù)庫的啟動命令是 STARTUP,在使用 STARTUP 命令啟動數(shù)據(jù)庫的時候首先需要使 用初始化參數(shù),并可以將數(shù)據(jù)庫以不同的方式打開。
1.啟動數(shù)據(jù)庫(STARTUP)
執(zhí)行命令 STARTUP,要求用戶必須具有 SYSDBA 或 SYSOPER 系統(tǒng)權限,另外,如 果要建立數(shù)據(jù)庫,則必須以 SYSDBA 身份登錄。該命令具體格式如下
STARTUP [ FORCE ] [ RESTRICT ] [ PFILE = filename ] [ OPEN [ RECOVER ] [ database ] | MOUNT | NOMOUNT ]
其中:OPEN:啟動實例,裝載并打開數(shù)據(jù)庫,為默認選項。MOUNT:啟動實例并裝載數(shù)據(jù)庫,但不打開數(shù)據(jù)庫。NOMOUNT:啟動實例,但不裝載數(shù)據(jù)庫。PFILE=:指定用于啟動實例的非默認初始化參數(shù)文件名。FORCE:強制終止實例,并重新啟動數(shù)據(jù)庫。RESTRICT:啟動后只允許具有 。RESTRICTED SESSION 權限的用戶訪問數(shù)據(jù)庫。RECOVER:在數(shù)據(jù)庫啟動時,進行介質恢復。
2.修改數(shù)據(jù)庫(ALTER)
要使數(shù)據(jù)庫由 NOMOUNT 進入 MOUNT 階段或由 MOUNT 進入 OPEN 階段,需要使用 ALTER DATABASE 命令:
ALTER DATABASE { MOUNT | OPEN }
要顯示數(shù)據(jù)庫的當前處于的啟動狀態(tài),可以使用如下語句查詢:
SQL> SELECT status FROM v$instance;
STATUS 列顯示了 V$INSTANCE 視圖對數(shù)據(jù)庫狀態(tài)的描述:STARTED 數(shù)據(jù)庫處于啟動狀態(tài)(NOMOUNT)MOUNTED 數(shù)據(jù)庫處于裝載狀態(tài)(MOUNT)OPEN 數(shù)據(jù)庫出于正常打開狀態(tài)(OPEN)OPEN MIGRATE 數(shù)據(jù)庫以升級或降級模式打開(UPGRADE | DOWNGRADE)
用戶可以在數(shù)據(jù)庫關閉狀態(tài)下直接執(zhí)行 STARTUP 或 STARTUP OPEN 打開數(shù)據(jù)庫。
Tips:當我們使用 SQLPLUS 連接進入數(shù)據(jù)庫時,將會看到提示。如果提示信息如下: [oracle@oracle ~ ]$ sqlplus / as sysdba S
QL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 1 15:01:06 2013 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to an idle instance.
表示連接到空閑實例,即數(shù)據(jù)庫處于關閉狀態(tài)。
1.只讀模式打開數(shù)據(jù)庫(READ ONLY)
在正常啟動狀態(tài)下,默認數(shù)據(jù)庫進入讀寫狀態(tài)(ReadWrite)。在必要時可以將數(shù)據(jù)庫 設置為只讀狀態(tài)(ReadOnly)。在只讀狀態(tài)下,用戶只能查詢數(shù)據(jù)庫,但不能以任何方式對 數(shù)據(jù)庫對象進行修改。
但要注意,在只讀狀態(tài)下,數(shù)據(jù)庫還可以進行數(shù)據(jù)庫的恢復或者一些維護操作操作,如:數(shù)據(jù)文件仍然可以聯(lián)機和脫機,已脫機的數(shù)據(jù)文件或表空間可以進行恢復。對其他文件 如控制文件、跟蹤文件、審計文件、警告文件等仍然可以繼續(xù)寫入。
使用如下命令,使數(shù)據(jù)庫進入只讀狀態(tài)或進入讀寫狀態(tài)。1) STARTUP OPEN [ READ WRITE | READ ONLY ]2) ALTER DATABASE OPEN [ READ WRITE | READ ONLY ]

其中:
READ WRITE:進入讀寫狀態(tài)
READ ONLY:進入只讀狀態(tài)
//以 READ ONLY 模式打開數(shù)據(jù)庫
SQL> startup open read only;
//嘗試創(chuàng)建表
SQL> create table t11 nologging as select * from scott.deptcreate table t11 nologging as select * from scott.dept
*
無錫數(shù)據(jù)恢復ERROR at line 1: ORA-00604: error occurred at recursive SQL level 1 ORA-16000: database open for read-only access
//嘗試對表數(shù)據(jù)進行查詢
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 DBA BEIJING
30 SALES CHICAGO
40 OPERATIONS BOSTON
數(shù)據(jù)庫在 READ ONLY 模式下,對對象的 DDL(創(chuàng)建、修改、丟棄、截斷)、DML(插 入、更新、刪除)等操作都不被允許??梢詫?shù)據(jù)庫中對象進行查詢。
2.限制模式打開數(shù)據(jù)庫(RESTRICT)
數(shù)據(jù)庫管理員可以使用限制模式打開數(shù)據(jù)庫。限制模式只允許具有 RESTRICTED SESSION 權限的用戶進行連接,普通用戶則不能連接。
當數(shù)據(jù)庫管理員對數(shù)據(jù)庫進行特定的維護操作,比如導入導出數(shù)據(jù)、裝載數(shù)據(jù)、遷移數(shù) 據(jù)庫等等時,可以講數(shù)據(jù)庫置為限制模式。
1) STARTUP RESTRICT ;
啟動數(shù)據(jù)庫時,將數(shù)據(jù)庫置為限制模式。
2) ALTER SYSTEM ENABLE RESTRICTED SESSION ;
上海數(shù)據(jù)恢復數(shù)據(jù)庫啟動后,將數(shù)據(jù)庫改為限制模式。
3) ALTER SYSTEM DISABLE RESTRICTED SESSION ;
取消數(shù)據(jù)庫的限制模式。
寫在最后的話