[Oracle]sqlplus 啟動參數說明
# su - oracle [grid]
用法 1: sqlplus -H | -V
-H[ELP]:
顯示 SQL*Plus 命令的語法和用法,然后返回控制到操作系統中。
-V[ERSION]:
顯示 SQL*Plus 的版本號,然后返回控制到操作系統中。
用法 2: sqlplus [ [<option>] [{logon | /nolog}] [<start>] ]
<option> is: [-C <version>] [-L] [-M "<options>"] [-R <level>] [-S]
-C <version> :
設置 SQL*Plus 命令兼容版本。<version> 的格式為“x.y[.z]”。例如, -C 10.2.0
-L[OGON]:
指定如果首次連接不成功則不要再次提示輸入用戶名和口令。這個選項可用於操作系統腳本中,可防止當數據庫服務器沒有運行時再次提示輸入連接信息。這個選項在 SQL*Plus 圖形用戶接口中不可用
-M[ARKUP] "<options>":
可使用本選項從查詢或腳本生成完全標准的獨立的 Web 頁面。
可使用 SQLPLUS -MARKUP HTML ON 或 SET MARKUP HTML ON SPOOL ON 生成標准的 Web 頁。SQL*Plus 將使用 <HTML> 和 <BODY> 標簽自動生成完整的 HTML 頁。在執行 SPOOL OFF 命令或退出 SQL*Plus 時,假脫機文件中的 HTML 標簽會被關閉。
在使用 -MARKUP 時,-SILENT 和 –RESTRICT 命令行選項也很有用。
可使用 SET MARKUP HTML ON SPOOL OFF 生成可嵌入到現有 Web 頁中的 HTML 輸出。通過這種方式生成的輸出中沒有 <HTML> 和 <BODY>標簽。
用 MARKUP HTML ON 可把 HTML 輸出生成到 <PRE> 標簽中或者 HTML 表格中。輸出到表格中時將自動使用標准的HTML <TABLE>、<TR> 和 <TD> 標簽來編碼查詢結果的行和列。當 HTML 選項被設為 ON時默認行為就是輸出到 HTML 表中。可通過設置 PREFORMAT ON 來使用 <PRE> 標簽生成輸出。
使用 SHOW MARKUP 命令可查看 MARKUP 選項的狀態。
SQLPLUS –MARKUP 命令和 SET MARKUP 命令具有相同的選項和功能。
注意:markup_option 子句可能需要用引號括起來。
HTML [ON|OFF]:
HTML 是必需有的 MARKUP 參數,它用於指定生成 HTML 類型的輸出。HTML 的可選參數 ON 和 OFF 用於指定是否生成 HTML 輸出。默認是OFF。
MARKUP HTML ON 使用指定的 MARKUP 選項生成 HTML 輸出,或者,在使用 SET MARKUP 的情況下則用當前會話中先前的 SET MARKUP HTML 命令設置的選項。
在會話期間,可根據需要把 HTML 設為 ON 或 OFF。默認是 OFF。
可使用 SQL*Plus 命令 SPOOL filename 把生成的輸出寫入到假脫機文件中。詳細信息請參考下面的SPOOL {ON|OFF}
HEAD text:
通過 HEAD text 選項可指定 <HEAD> 標簽中的內容。默認情況下,text是:
<TITLE>SQL*Plus Report</TITLE>
如果 text 中包括空格,則必須把它放到引號中。SQL*Plus 不會檢測 text 的 HTML 有效性,因此必須確保所輸入的文本對 <HEAD> 標簽是有效的。通過這個選項可為特定瀏覽器或者特殊需要定制輸出。
BODY text:
通過 BODY text 選項可為 <BODY> 標簽指定屬性。默認情況下沒有任何屬性。如果text 中包括空格,則必須把它放到引號中。SQL*Plus 不會檢測text 的 HTML 有效性,因此必須確保所輸入的文本對 <BODY> 標簽是有效的。通過這個選項可為特定瀏覽器或者特殊需要定制輸出。
TABLE text:
通過 TABLE text 選項可為 <TABLE> 標簽指定屬性。可使用 TABLE text 選項設置 <TABLE> 標簽的屬性,例如 BORDER、CELLPADDING、CELLSPACING 和 WIDTH。默認情況下 <TABLE> 的 WIDTH 屬性設置為 90%,而 BORDER 屬性設置為 1。
如果 text 中包括空格,則必須把它放到引號中。SQL*Plus 不會檢測 text 的 HTML 有效性,因此必須確保所輸入的文本對 <TABLE> 標簽是有效的。通過這個選項可為特定瀏覽器或者特殊需要定制輸出。
ENTMAP {ON|OFF}:
ENTMAP ON 或 OFF 指定了 SQL*Plus 是否用 HTML 實體 <、>、" 和 & 來分別替換特殊字符 <、>、" 和 &。默認情況下 ENTMAP 設為 ON。
在會話期間可根據需要把 ENTMAP 設為 ON 或 OFF。例如,設為 OFF時,SQL*Plus 屏幕輸出是:
SQL>SELECT DEPARTMENT_ID, CITY
1 FROM EMP_DETAILS_VIEW
2 WHERE SALARY = 12000;
而設為 ON 時,SQL*Plus 屏幕輸出是:
SQL> SELECT DEPARTMENT_ID, CITY
2 FROM EMP_DETAILS_VIEW
3 WHERE SALARY = 12000;
如果沒有映射實體,Web 瀏覽器可能會把數據看作無效的 HTML 並且隨后的輸出都不能正常顯示。使用 ENTMAP OFF 可以編寫自己的 HTML 標簽來定制輸出。
<HEAD> 和 <BODY> 標簽中的實體不會被映射,因此必須確保在MARKUP HEAD 和 BODY 選項中使用了有效的實體。
注意:只有在 HTML 選項或 SPOOL 選項設為 ON 時 ENTMAP 才起作用
SPOOL {ON|OFF}:
SPOOL ON 或 OFF 指定 SQL*Plus 是否把 <HTML>、<BODY> 和</BODY>、</HTML> 標簽分別寫入到 SPOOL filename 命令創建的每個文件的開始和結束處。默認是 OFF。
可在會話期根據需要把 SPOOL 設為 ON 或 OFF。
注意:
必須理解SET MARKUP HTML SPOOL 選項和 SQLPLUS SPOOL filename 命令的區別。
SET MARKUP HTML SPOOL ON 選項用於把 <HTML> 標簽寫入到假脫機文件中。而只有在使用了 SQLPLUS SPOOL filename 命令后才會創建假脫機文件。
當發布 SPOOL filename 命令時,SQL*Plus 會把幾個 HTML 標簽寫入到假脫機文件中。所寫入的標簽和它們的默認內容是:
<HTML>
<HEAD>
<TITLE>SQL*Plus Report</TITLE>
<META name="generator" content="SQL*Plus 9.0.1">
</HEAD>
<BODY>
當發布 EXIT、SPOOL OFF 或 SPOOL filename 命令時,SQL*Plus 把下面的標簽附加到文件中並關閉文件:
</BODY>
</HTML>
可使用 HEAD 和 BODY 選項指定 <HEAD> 標簽內容和 <BODY> 的屬性。
PRE[FORMAT] {ON|OFF}:
PREFORMAT ON 或 OFF 指定 SQL*Plus 把輸出寫入到 <PRE> 標簽中還是寫到 HTML 表格中。默認值是 OFF,因此默認情況下輸出被寫入到了HTML 表格中。在會話中可根據需要把 PREFORMAT 設為 ON 或 OFF。
注意:
要使用 <PRE> 標簽生成輸出報表必須設置 PREFORMAT ON。例如:
SQLPLUS -M "HTML ON PREFORMAT ON"
SET MARKUP HTML ON PREFORMAT ON
MARKUP 用法說明:
現存的沒有明確設置 PREFORMAT ON 的腳本將在 HTML 表格中生成輸出。如果要在<PRE> 標簽中生成輸出,則必須設置 PREFORMAT ON。
當在 HTML 表格中生成輸出時,一些 SQL*Plus 命令會具有不同的行為。那些用於格式化報表的命令對於 Web 表格式的報表可能具有不同意義。
PAGESIZE 是 HTML 表格的行數,而不是數據行數。HTML 表格的每一行可以包含多個數據行。TTITLE、BTITLE 和列標題每 PAGESIZE 行重復一次。
如果 WRAP 設為 ON,LINESIZE 會對比較長的數據產生影響。根據數據的長度,它們可能會被顯示成多行而 Web 瀏覽器可能會把換行符解釋為一個空格。
TTITLE 和 BTITLE 可被輸出到行中的三個位置:左、中和右,並且最大行寬被設置為瀏覽器窗口的 90%。由於這些元素在 Web 報表中被處理的方式不同,它們可能和報表中的主輸出數據不能夠對齊。TTITLE 和 BTITLE中的實體映射和 MARKUP 命令中指定的 ENTMAP 設置相同。
如果在輸出中使用標題,SQL*Plus 將在標題后使用一個新的 HTML 表格顯示數據。根據每列中數據寬度的不同,在瀏覽器中顯示的每張表格的列寬可能也不同。
在 HTML 報表中只有當 PREFORMAT 設置為 ON 時,SET COLSEP 和 RECSEP才生成輸出。
-R[ESTRICT] <level> :
允許用戶禁用幾個可以和操作系統交互的命令。這與使用 Product User Profile(PUP)表來禁用命令相類似。然而,若使用本選項禁用命令,則即使沒有連接到服務器這些命令也會被禁用並且一直保持到退出 SQL*Plus。
如果沒有使用 –R 選項,那么所有的命令都可使用,除非已在 PUP 表中被禁用。
最高限制級別為 -R 3,如果使用了 -R 3,那么 LOGIN.SQL 不會被讀取,而GLOGIN.SQL 會被讀取但是其中使用的被限制的命令將失敗。
各限制級別禁用的命令如下:
命令 Level 1 Level 2 Level 3
EDIT disabled disabled disabled
GET disabled
HOST disabled disabled disabled
SAVE disabled disabled
SPOOL disabled disabled
START,@,@@ disabled
STORE disabled disabled
-S[ILENT]:
設置靜默方式,禁止顯示所有的 SQL*Plus 信息和提示消息,包括命令提示符、命令的回顯和正常啟動 SQL*Plus 時顯示的歡迎信息。如果省略了用戶名或密碼 SQL*Plus 會提示輸入它們,但提示信息是不可見的。可在其它的程序中用靜默方式來調用 SQL*Plus。
在 CGI 腳本或操作系統腳本中用 SQLPLUS –M 命令創建 Web 格式的報表時靜默選項是一個很有用的模式。在使用靜默選項時 SQL*Plus 的歡迎和提示信息都不會在報表中出現。
<logon> is: {<username>[/<password>][@<connect_identifier>] | / }
[AS {SYSDBA | SYSOPER | SYSASM}] [EDITION=value]
指定數據庫帳戶用戶名, 口令和連接標識符。如果沒有連接標識符, SQL*Plus 將連接到默認數據庫
/ 表示使用操作系統驗證時的默認登錄。使用默認登錄時不能輸入 <connect_identifier>,SQL*Plus 會嘗試使用用戶名 OPS$name進行登錄,其中name 是操作系統用戶名。注意,前綴“OPS$”可以被設置為任何其它的字符串。例如,可以在 INIT.ORA 參數文件中把它改為LOGONname 或 USERIDname。
子句 AS SYSDBA, AS SYSOPER 和 AS SYSASM 選項指定以數據庫管理員特權進行連接。也可使用 / 和 /NOLOG 來進行特權連接。如果使用這個選項,在大多數操作系統中必須把命令參數放在引號中,例如:
sqlplus "/ as sysdba"
sqlplus "system/password as sysoper"
<connect_identifier> Oracle 連接標識符。其確切的語法依賴於 Oracle 安裝時所使用的網絡通訊協議。可以是 Oracle 網絡服務名或者簡單連接方式。
@[<net_service_name> | [//]Host[:Port]/<service_name>]
<net_service_name> Oracle 網絡服務名,如果不輸入,默認為環境變量 $ORACLE_SID 的值
Host 目標數據庫主機名或者IP地址
Port 目標數據庫監聽端口,如果不輸入,默認為1521
<service_name> 目標數據庫服務名
/NOLOG 選項僅啟動 SQL*Plus 不連接到數據庫。要執行任何 SQL 命令,必須首先執行 CONNECT 命令建立一個有效連接。當希望用 SQL*Plus 腳本來提示輸入用戶名、密碼或數據庫時,可使用 /NOLOG。這時腳本文件中的第一行不會被假定為包含一個登錄信息。
EDITION 指定會話版本的值。
<start> is: @<URL>|<filename>[.<ext>] [<parameter> ...]
指定要執行的腳本文件的名稱和參數。可調用位於本地文件系統或 Web 服務器中的腳本。
SQL*Plus 把參數傳遞給腳本,就像使用 SQL*Plus 的 START 命令執行文件一樣。如果沒有指定文件擴展名,將使用 SET SUFFIX 命令定義的后綴。默認值是 .sql
注意:
當 SQL*Plus 啟動並連接數據庫后,一些本地 SQL 文件可能會被執行例如“$ORACLE_HOME/sqlplus/admin/glogin.sql”文件和用戶工作目錄中的“login.sql”文件 。
范例:
僅啟動 SQL*Plus 不登錄到數據庫
$ sqlplus /nolog
以默認管理員登陸
$ sqlplus / as sysdba
以數據庫賬戶登錄
$ sqlplus
$ sqlplus username
$ sqlplus username@sid
$ sqlplus username@//host/sid
$ sqlplus username@//host:port/sid
$ sqlplus username/password
$ sqlplus username/password@sid
$ sqlplus username/password@//host/sid
$ sqlplus username/password@//host:port/sid
$ sqlplus username as sysdba
$ sqlplus username@sid as sysdba
$ sqlplus username@//host/sid as sysdba
$ sqlplus username@//host:port/sid as sysdba
$ sqlplus username/password as sysdba
$ sqlplus username/password@sid as sysdba
$ sqlplus username/password@//host/sid as sysdba
$ sqlplus username/password@//host:port/sid as sysdba
登錄數據庫並執行 SQL*Plus 腳本文件
$ sqlplus username/password@sid @/home/oracle/createdb
$ sqlplus username/password@sid @/home/oracle/createdb.sql
$ sqlplus username/password@sid @/home/oracle/createdb.sql 10 10 30 40