1. spool命令用法
SPOOL是SQLPLUS的命令,不是SQL語法裏面的東西。
spool常用的設置
set colsep ' ||'; //設置域輸出分隔符爲||,可換爲自己喜歡的分隔符
set echo off; //顯示start啓動的腳本中的每個sql命令,缺省爲on
set feedback off; //回顯本次sql命令處理的記錄條數,缺省爲on
set heading off; //輸出域標題,缺省爲on
set pagesize 0; //輸出每頁行數,缺省爲24,爲了避免分頁,可設定爲0。
set termout off; //顯示腳本中的命令的執行結果,缺省爲on
set trimout on; //去除標準輸出每行的拖尾空格,缺省爲off
set trimspool on; //去除重定向(spool)輸出每行的拖尾空格,缺省爲off
set linesize n; //設置數據行長度爲n
例如:sql> conn system/sys as sysdba;
sql> spool c:\param;
sql> show parameter;
sql> spool off
執行完將在c盤新建param.lst的文件,裏面內容就是數據庫參數設置
2. 啓動數據庫: startup命令啓動數據庫有4種模式:
startup [force] [restrict] [pfile=文件名]
[open [RECOVER] [database]
|unmount
|mount]
A.NoMount 模式(啓動實例不加載數據庫)
命令:startup nomount
講解:這種啓動模式只會創建實例,並不加載數據庫,Oracle僅爲實例創建各種內存結構和服務進程,打開報警文件和追蹤文件,不會打開任何數據文件。在NoMount模式下,只能訪問那些與SGA區相關的數據字典視圖,包括V$PARAMETER、V$SGA、V$PROCESS 和 V$SESSION等,這些視圖中的信息都是從SGA區中獲取的,與數據庫無關。
模式用途:
(1)創建新數據庫;
(2)重建控制文件。
B.Mount模式(加載數據庫但不打開數據庫)
命令:startup mount
講解:這種啓動模式將爲實例加載數據庫,但保持數據庫爲關閉狀態。因爲加載數據庫時需要打開數據庫控制文件,但數據文件和重做日誌文件都都無法進行讀寫,所以用戶還無法對數據庫進行操作。 在Mount模式下,只能訪問那些與控制文件相關的數據字典視圖,包括V$THREAD、V$CONTROLFILE、V$DATABASE、V$DATAFILE 和 V$LOGFILE等,這些視圖都是從控制文件中獲取的。
模式用途:
(1)重命名數據文件;
(2)添加、刪除或重命名重做日誌文件;
(3)執行數據庫完全恢復操作;
(4)改變數據庫的歸檔模式。
C.Open模式(正常打開數據庫)
命令:startup [open]
講解:正常按啓動實例-->加載數據庫-->打開數據庫3個步驟啓動數據庫。
模式用途:平時不對數據庫做什麼維護,像只做應用開發,用這個模式就好了。
D.強制啓動模式
命令:startup force
用途&講解:在某些情況下,使用前面的各種模式都無法成功啓動數據庫時,可以嘗試強制啓動模式。
E.限制模式
命令:startup restrict
使用Alter Database語句,還可以在各啓動模式間切換。並且,還可以對數據庫設置不同的狀態用於不同的操作,如受/非受限抽狀態、只讀。只讀狀態主要爲待機(standby)數據庫設計。
從NoMount模式切換到Mount模式(沒有從mount切換到nomount的): ALTER DATABASE MOUNT;
從Mount模式切換到Open模式: ALTER DATABASE OPEN;
當數據庫狀態爲關閉時,切換到Open模式: ALTER DATABASE OPEN;
在OPEN模式下將數據庫狀態置爲只讀: ALTER DATABASE OPEN READ ONLY;
從只讀狀態恢復讀寫狀態: ALTER DATABASE READ WRITE;
將運行數據庫置爲限制模式:ALTER SYSTEM ENABLE RESTRICTED SESSSION;
關閉數據庫與實例
與數據庫啓動一下,關閉數據庫與實例也分爲3步:關閉數據庫-->實例卸載數據庫--->終止實例。
a .Nomal(正常關閉方式)
命令:shutdown nomal
講解:正常方式關閉數據時,Oracle執行如下操作:
(1)阻止任何用戶建立新的連接。
(2)等待當前所有正在連接的用戶主動斷開連接(此方式下Oracle不會立即斷掉當前用戶的連接,這些用戶仍然操作相關的操作)
(3)一旦所有的用戶都斷開連接,則立即關閉、卸載數據庫,並終止實例。(所以,一般以正常方式關閉數據庫時,應該通知所有在線的用戶儘快斷開連接)
b.Immediate(立即關閉方式)
命令:shutdown immediate
講解:
(1)阻止任何用戶建立新的連接,同時阻止當前連接的用戶開始任何新的事務。
(2)Oracle不等待在線用戶主動斷開連接,強制終止用戶的當前事務,將任何未提交的事務回退。(如果存在太多未提交的事務,此方式將會耗費很長時間終止和回退事務)
(3)直接關閉、卸載數據庫,並終止實例。
c.Transactional(事務關閉方式)
命令:shutdown transactional
講解:這種方式介於正常關閉方式跟立即關閉方式之間,響應時間會比較快,處理也將比較得當。執行過程如下:
(1)阻止任何用戶建立新的連接,同時阻止當前連接的用戶開始任何新的事務。
(2)等待所有未提交的活動事務提交完畢,然後立即斷開用戶的連接。
(3)直接關閉、卸載數據庫,並終止實例。
d.Abort(終止關閉方式)
命令:shutdown abort
講解:這是比較粗暴的一種關閉方式,當前面3種方式都無法關閉時,可以嘗試使用終止方式來關閉數據庫。但是以這種方式關閉數據庫將會丟失一部份數據信息,當重新啓動實例並打開數據庫時,後臺進程SMON會執行實例恢復操作。一般情況下,應當儘量避免使用這種方式來關閉數據庫。執行過程如下:
(1)阻止任何用戶建立新的連接,同時阻止當前連接的用戶開始任何新的事務。
(2)立即終止當前正在執行的SQL語句。
(3)任何未提交的事務均不被退名。
(4)直接斷開所有用戶的連接,關閉、卸載數據庫,並終止實例。