[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 实体 &lt;、&gt;、&quot; 和 &amp; 来分别替换特殊字符 <、>、" 和 &。默认情况下 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&gt; 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