作者:admin 日期:2023-10-14 瀏覽: 次
Oracle體系結構之數據庫啟停(一)
Startup 啟動 Shutdown 關閉Alert log file 日志文件 Parameter file 參數文件Background trace file 后臺跟蹤文件Mount 裝載Session 會話 Restrict 限制 PFILE 靜態參數文件 SPFILE 服務器端參數文件Trace File 跟蹤文件 Alert Log File 警告日志文件
如圖 P1-1 所示,Oracle 實例分為四種狀態,分別為:
關閉(SHUTDOWN)、非裝載(NOMOUNT 啟動)、裝載(MOUNT)、打開(OPEN)。
P 1-1:實例啟動與關閉示意
如果實例沒有打開,以普通用戶身份時,會報錯。
訪問 Oracle 數據庫首先要啟動數據庫,管理員連接到空閑實例,然后才能發出啟動例或數據庫的命令。
啟動 Oracle 服務器,每個階段會打開不同的文件并且會完成不同的管理任務。
數據庫的啟動命令是 STARTUP,在使用 STARTUP 命令啟動數據庫的時候首先需要使 用初始化參數,并可以將數據庫以不同的方式打開。
1.啟動數據庫(STARTUP)
執行命令 STARTUP,要求用戶必須具有 SYSDBA 或 SYSOPER 系統權限,另外,如 果要建立數據庫,則必須以 SYSDBA 身份登錄。該命令具體格式如下
STARTUP [ FORCE ] [ RESTRICT ] [ PFILE = filename ] [ OPEN [ RECOVER ] [ database ] | MOUNT | NOMOUNT ]
其中:OPEN:啟動實例,裝載并打開數據庫,為默認選項。MOUNT:啟動實例并裝載數據庫,但不打開數據庫。NOMOUNT:啟動實例,但不裝載數據庫。PFILE=:指定用于啟動實例的非默認初始化參數文件名。FORCE:強制終止實例,并重新啟動數據庫。RESTRICT:啟動后只允許具有 。RESTRICTED SESSION 權限的用戶訪問數據庫。RECOVER:在數據庫啟動時,進行介質恢復。
2.修改數據庫(ALTER)
要使數據庫由 NOMOUNT 進入 MOUNT 階段或由 MOUNT 進入 OPEN 階段,需要使用 ALTER DATABASE 命令:
ALTER DATABASE { MOUNT | OPEN }
要顯示數據庫的當前處于的啟動狀態,可以使用如下語句查詢:
SQL> SELECT status FROM v$instance;
STATUS 列顯示了 V$INSTANCE 視圖對數據庫狀態的描述:STARTED 數據庫處于啟動狀態(NOMOUNT)MOUNTED 數據庫處于裝載狀態(MOUNT)OPEN 數據庫出于正常打開狀態(OPEN)OPEN MIGRATE 數據庫以升級或降級模式打開(UPGRADE | DOWNGRADE)
用戶可以在數據庫關閉狀態下直接執行 STARTUP 或 STARTUP OPEN 打開數據庫。
Tips:當我們使用 SQLPLUS 連接進入數據庫時,將會看到提示。如果提示信息如下: [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.
表示連接到空閑實例,即數據庫處于關閉狀態。
1.只讀模式打開數據庫(READ ONLY)
在正常啟動狀態下,默認數據庫進入讀寫狀態(ReadWrite)。在必要時可以將數據庫 設置為只讀狀態(ReadOnly)。在只讀狀態下,用戶只能查詢數據庫,但不能以任何方式對 數據庫對象進行修改。
但要注意,在只讀狀態下,數據庫還可以進行數據庫的恢復或者一些維護操作操作,如:數據文件仍然可以聯機和脫機,已脫機的數據文件或表空間可以進行恢復。對其他文件 如控制文件、跟蹤文件、審計文件、警告文件等仍然可以繼續寫入。
使用如下命令,使數據庫進入只讀狀態或進入讀寫狀態。1) STARTUP OPEN [ READ WRITE | READ ONLY ]2) ALTER DATABASE OPEN [ READ WRITE | READ ONLY ]
其中:
READ WRITE:進入讀寫狀態
READ ONLY:進入只讀狀態
//以 READ ONLY 模式打開數據庫
SQL> startup open read only;
//嘗試創建表
SQL> create table t11 nologging as select * from scott.deptcreate table t11 nologging as select * from scott.dept
*
無錫數據恢復ERROR at line 1: ORA-00604: error occurred at recursive SQL level 1 ORA-16000: database open for read-only access
//嘗試對表數據進行查詢
SQL> select * from scott.dept;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 DBA BEIJING
30 SALES CHICAGO
40 OPERATIONS BOSTON
數據庫在 READ ONLY 模式下,對對象的 DDL(創建、修改、丟棄、截斷)、DML(插 入、更新、刪除)等操作都不被允許。可以對數據庫中對象進行查詢。
2.限制模式打開數據庫(RESTRICT)
數據庫管理員可以使用限制模式打開數據庫。限制模式只允許具有 RESTRICTED SESSION 權限的用戶進行連接,普通用戶則不能連接。
當數據庫管理員對數據庫進行特定的維護操作,比如導入導出數據、裝載數據、遷移數 據庫等等時,可以講數據庫置為限制模式。
1) STARTUP RESTRICT ;
啟動數據庫時,將數據庫置為限制模式。
2) ALTER SYSTEM ENABLE RESTRICTED SESSION ;
上海數據恢復數據庫啟動后,將數據庫改為限制模式。
3) ALTER SYSTEM DISABLE RESTRICTED SESSION ;
取消數據庫的限制模式。
寫在最后的話