Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1611154
  • 博文数量: 292
  • 博客积分: 10791
  • 博客等级: 上将
  • 技术积分: 2479
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-20 21:06
文章分类

全部博文(292)

文章存档

2011年(31)

2010年(261)

分类: Oracle

2011-02-17 23:21:49

一、QuickStart
Starting SQL*Plus Command-line:
TNS_ADMIN环境变量定义tnsnames.ora文件的位置

二、GettingStart
SQLPLUS用到的系统环境变量[UNIX]:
    TWO_TASK:UNIX环境下定义默认的链接串
    TWO_TASK=MYDB
    export TWO_TASK
    sqlplus hr
    is the same as:
    sqlplus hr@MYDB
    ORACLE_SID:Oracle实例名
    ORACLE_PATH:脚本搜索路径,如果未设置,则在当前路径下找
    ORACLE_HOME:OracleHome
    ORA_NLS10:指定NLS数据的存储路径,默认指向$ORACLE_HOME/nls/data
    NLS_LANG:SQLPLUS的字符集设置
    导入导出中NLS_LANG的作用:
    

SQLPLUS的启动配置:
$ORACLE_HOME/sqlplus/admin/glogin.sql
$ORACLE_HOME/sqlplus/admin/login.sql
区别:
    1、SQLPLUS先执行glogin.sql,后执行login.sql
    2、login.sql无法作用于iSQLPLUS
特点:
    1、在提示符显示之前调用
    2、执行顺序:glogin.sql->login.sql->命令行指定的脚本->提示符
    C:\Documents and Settings\dbconf>sqlplus "/as sysdba" @test.sql
    
    SQL*Plus: Release 11.1.0.6.0 - Production on 星期四 2月 17 08:53:01 2011
    
    Copyright (c) 1982, 2007, Oracle.  All rights reserved.
    
    
    连接到:
    Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    glogin.sql
    
    PL/SQL 过程已成功完成。
    
    login.sql
    
    PL/SQL 过程已成功完成。
    
    my script
    
    PL/SQL 过程已成功完成。
    
    SQL>

保存和恢复SQLPLUS配置[SHOW ALL命令显示的配置]:
    STORE SET file_name
恢复配置:
    START file_name----作用和@,@@等效

SQLPLUS修改数据库用户密码:
password [username]

SQLPLUS指定连接描述符:
    sqlplus sys/oracle@(DESCRIPTION=
            (ADDRESS=(PROTOCOL=tcp)(HOST=172.16.4.2)(PORT=1521))
            (CONNECT_DATA=
             (SERVICE_NAME=ora11))) as sysdba

SQLPLUS快速远程连接方式:
    sqlplus username/passwd@[//]host[:port][/service_name] [as sysdba]
例:
    sqlplus megatrust/megatrust@//172.16.4.2:1521/ora11

SQLPLUS中命令使用帮助:
    help index--列出所有的topic
    help topic_name

SQLPLUS命令行语法:
SQLPLUS [ [Options] [Logon] [Start] ]
Options:
    -C[OMPATIBILITY] {x.y[.z]}
    设置客户端兼容性
    -H[ELP]
    帮助
    -V[ERSION]
    客户端版本
    -L[OGON]
    指定连接失败时不提示重新连接而直接推出
    -M[ARKUP] ""
        options:
        HTML ON/OFF:指定SQLPLUS产生HTML代码,sqlplus -M "HTML ON" "/as sysdba"
        HEAD text:指定之间的内容
        BODY text:指定BODY标签属性,text的内容附加在之间,指定样式、引用Javascript等
        TABLE text:指定TABLE标签属性,text的内容附加在之间,指定样式、引用Javascript等
        ENTMAP {ON|OFF}:是否转化>,<,&和"为HTML实体,默认为ON,关闭实体转化则如果输出中包含>,<,&和",
        浏览器会视图将其解析为标签而出错,ENTMAP OFF则允许用户使用自定义HTML标签
        SPOOL {ON|OFF}:指定是否在输出文件中使用和进行包裹
        PRE[FORMAT] {ON|OFF}:PRE标签将代替TABLE标签
Logon:
    连接串
Start:
    @script_name

三、Using SQL*Plus
指定n次DML操作后自动进行提交:
    set autocommit on/immediate n

排错:oerr

指定编辑器:DEFINE _EDITOR = vi

外部编辑器编辑脚本文件:
    ed[it] file_name:不指定file_name则编辑缓冲区

使用SQLPLUS编辑缓冲区脚本:
    (DEL,L[IST]/;):删除,显示缓冲区
    (DEL,L[IST]) n:删除,显示n行缓冲区
    (DEL,L[IST]) *:删除,显示当前行
    (DEL,L[IST]) n *:删除,显示从n行至当前行
    (DEL,L[IST]) * n:删除,显示从当前行至第n行
    (DEL,L[IST]) m n:删除,显示从m行至n行
    I[NPUT] text:向缓冲区附加
    CLEAR BUFFER/CL:删除缓冲区
    C[HANGE]/old/new:更改当前行old为new
    A[PPEND] text:向当前行后附加
    0 SQL:向缓冲区头部添加SQL
    n SQL:修改第n行为SQL
    n:指定当前行为第n行


SQL脚本中使用注释:
1.remark
2./* ..*/ 第一个注释符后需跟一个空格
3.--
注意:
    1、注释不能在最初的几个关键字之前,SQLPLUS会对/之前的文本解析为命令而提交
    CREATE OR REPLACE
    /* HELLO */
    PROCEDURE HELLO AS
    BEGIN
    DBMS_OUTPUT.PUT_LINE('HELLO');
    END;
    /
    Warning: Procedure created with compilation errors.
    修改为:
    CREATE OR REPLACE PROCEDURE
    /* HELLO */
    HELLO AS
    BEGIN
    DBMS_OUTPUT.PUT_LINE('HELLO');
    END;
    /
    Procedure created.

使用替代变量:
    define colname=MACHINE
    select &colname from v$session;

替代变量后附加字符串:
SELECT * FROM v$session where USERNAME='&username.TRUST';
SELECT * FROM v$session where STATUS='IN&state';--变量之前添加字符串则不需要.
分隔符由CONCAT变量定义:
    SQL> show concat
    concat "." (hex 2e)

&,&&:
&&避免多次输入同一个替代变量,&&输入的变量将被存储在define变量中,而define中定义的变量是可以被&、&&引用的
    SQL> select &col,&col,&col from v$session;
    输入 col 的值:  machine
    输入 col 的值:  machine
    输入 col 的值:  machine
    原值    1: select &col,&col,&col from v$session
    新值    1: select machine,machine,machine from v$session
    -----
    SQL> select &&col,&col,&col from v$session;
    输入 col 的值:  machine
    原值    1: select &&col,&col,&col from v$session
    新值    1: select machine,machine,machine from v$session
    SQL> define col
    DEFINE COL             = "machine" (CHAR)

替代变量无法在buffer编辑命令中使用:
APPEND, CHANGE, INPUT中视&,&&为纯文本
SQL> l
  1* select &&col,&col,&col from v$session
SQL> c/&&/&
  1* select &col,&col,&col from v$session


影响替代变量的SET选项:
禁止某用户在SQLPLUS中执行某个命令步骤:
1、创建PUP[PRODUCT_USER_PROFILE]表
    @?/sqlplus/admin/pupbld.sql
    SQL> desc  PRODUCT_USER_PROFILE
     名称                                      是否为空? 类型
     ----------------------------------------- -------- --------------------------
    
     PRODUCT                                   NOT NULL VARCHAR2(30)    
     USERID                                             VARCHAR2(30)
     ATTRIBUTE                                          VARCHAR2(240)
     SCOPE                                              VARCHAR2(240)
     NUMERIC_VALUE                                      NUMBER(15,2)
     CHAR_VALUE                                         VARCHAR2(240)
     DATE_VALUE                                         DATE
     LONG_VALUE                                         LONG
    
* PRODULE:要限制的命令类型,比如SQL*Plus表示不能SQL*Plus命令如spool,SQL则表示SQL命令如alert,PL/SQL表示PL/SQL命令如BEGIN。不能使用通配符或者NULL。
* USERID:要限制的用户名,可以使用通配符如DEV%
* ATTRIBUTE:要限制的命令,必须是完整的SQL*Plus、SQL或者PL/SQL命令,不能使用通配符。如果是禁用某个角色,则必须为ROLES
* SCOPE:未使用,设为NULL
* NUMERIC_VALUE:未使用,设为NULL
* CHAR_VALUE:如果禁用的是SQL*Plus、SQL或者PL/SQL命令,必须为DISABLED。如果是禁用某个角色,则为角色的名字
* DATE_VALUE:未使用,设为NULL
* LONG_VALUE:未使用,设为NULL
2、禁用
    SQL> INSERT INTO PRODUCT_USER_PROFILE VALUES ('SQL*Plus', 'MZH', 'SELECT', NULL, NULL, 'DISABLED', NULL, NULL);
    SQL> conn mzh/mzh
    SQL> select * from product_user_profile;
    SP2-0544: 在产品用户概要文件中禁用命令 "select"

四、SQLPLUS Reference
@
    @WKRPT.QRY
    @ VAL1 VAL2
    @FTP://machine_name.domain:port/YEAREND.SQL  VAL1 VAL2
    @ VAL1 VAL2
    VAL1,VAL2在脚本中使用&1和&2引用

@@
与@不同的是@@一般用于脚本中调用位于同一目录的其他脚本。

/(slash)
执行

ACCEPT  
ACC[EPT] variable [NUM[BER] | CHAR | DATE | BINARY_FLOAT | BINARY_DOUBLE] [FOR[MAT]
format] [DEF[AULT] default] [PROMPT text|NOPR[OMPT]] [HIDE]
读取一行输入作为变量variable的值,variable将被存储在define变量
1、输入数字:
    SQL> acc snap_id number format 999999 def 999999 prompt 'Please Enter the SNAP_ID:'
    SQL> acc snap_id number format 999999 def 999999 prompt 'Please Enter the SNAP_ID:'
    Please Enter the SNAP_ID:234234234234
    SP2-0598: "234234234234" 与输入格式 "999999" 不匹配
    Please Enter the SNAP_ID:sdfefaf
    SP2-0598: "sdfefaf" 与输入格式 "999999" 不匹配
    Please Enter the SNAP_ID:2323
    SQL> define snap_id
    DEFINE SNAP_ID         =       2323 (NUMBER)
2、输入字符:
    SQL> acc snap_id char format a5 def '999999999999999999' prompt 'Please Enter the SNAP_ID:'
    SP2-0598: "999999999999999999" 与输入格式 "a5" 不匹配
    SQL> acc snap_id char format a5 def '9999' prompt 'Please Enter the SNAP_ID:'
    Please Enter the SNAP_ID:23234234234
    SP2-0598: "23234234234" 与输入格式 "a5" 不匹配
    Please Enter the SNAP_ID:sfasdafasdfad
    SP2-0598: "sfasdafasdfad" 与输入格式 "a5" 不匹配
    Please Enter the SNAP_ID:12334
    SQL>
3、输入时间:
    SQL> acc snap_time date format 'yy-mm-dd' def '01-01-01' prompt 'Please Enter the SNAP_TIME:'
    Please Enter the SNAP_TIME:03-07-07
    SQL> define snap_time
    DEFINE SNAP_TIME       = "03-07-07" (CHAR)
4、输入浮点类型数据:
    SQL> acc snap_id BINARY_FLOAT format 9.9EEEE def 9.9E1 prompt 'Please Enter the SNAP_ID:'
    BINARY_FLOAT和BINARY_DOUBLE取值范围:
    ---------------------------------------------------------------------------------
    |Value                                                |            Binary-Float     |    Binary-Double
    |Maximum positive finite value  |         3.40282E+38F     |    1.79769313486231E+308
    |Minimum positive finite value  |       1.17549E-38F     |    2.22507485850720E-308

                                  
APPEND                            
添加文本至缓冲区当前行,不换行

ARCHIVE LOG {LIST | STOP} | {START | NEXT | ALL | integer } [TO destination]
LIST:     
SQL> archive log list
数据库日志模式             非存档模式
自动存档             禁用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     68
当前日志序列           70
自动归档在10g以前可以使用archive log stop|start关闭和开启,10g以后当归档开启之后即为自动归档且无法关闭

ATTRIBUTE
类似于COLUMN命令,作用对象为Object Type

BREAK
对输出结果进行分组显示,如隐藏重复列的值、组分页等,一般需要对重复列进行order by,因为break只会对输出列的上下值进行比较,而不会真正做分组操作
    SQL> select * from mzh;
    
            ID NAME
    ---------- --------------------
             1 mzh
             1 zhm
             2 dd
             2 ddd
             2 dddf
             3 dddf
    
    已选择6行。
    SQL> break on id;
    SQL> /
    
            ID NAME
    ---------- --------------------
             1 mzh
               zhm
             2 dd
               ddd
               dddf
             3 dddf
    
    已选择6行。
    
    每组间隔2行:
    SQL> break on id skip 2;
    SQL> /
    
            ID NAME
    ---------- --------------------
             1 mzh
               zhm
    
    
             2 dd
               ddd
               dddf
    
    
             3 dddf
    
    
    
    已选择6行。
    显示重复行:
    SQL> break on id dup;
    SQL> /
    
            ID NAME
    ---------- --------------------
             1 mzh
             1 zhm
             2 dd
             2 ddd
             2 dddf
             3 dddf
    
    已选择6行。
    每组进行分页:
    SQL> break on id skip page;
    SQL> /
            ID NAME
    ---------- --------------------
             1 mzh
               zhm
            ID NAME
    ---------- --------------------
             2 dd
               ddd
               dddf
            ID NAME
    ---------- --------------------
             3 dddf
    
    已选择6行。

BTITLE
语法:BTI[TLE] [printspec [text | variable] ...] | [ON | OFF]
printspec:
BOLD       --粗体,SQLPLUS中则重复输出三次
CE[NTER]   --底部标题居中
COL n      --底部标题前空开n列
FORMAT text--指定text的显示格式,text可以引用
LE[FT]     --左对齐底部标题
R[IGHT]    --右对齐底部标题
S[KIP] [n] --底部标题前空开n行  
TAB n      --底部标题前空开n列
    SQL> btitle left 'dbconf report' right '2-17-2011'
    SQL> run
      1* select * from mzh order by id
    
            ID NAME
    ---------- --------------------
           -34 hh
            .3 te
             1 zhm
               mzh
               zhm
               mzh
               zhm
               mzh
               zhm
               mzh
    dbconf report                                                          2-17-2011
    
    
            ID NAME
    ---------- --------------------
             1 zhm
               mzh
               zhm
               mzh
               zhm
               mzh
               zhm
               mzh
               zhm
               mzh
    dbconf report                                                          2-17-2011
    SQL> btitle  LEFT 'Monthly Analysis' CENTER '01 Jan 2003' -
    > RIGHT 'Page:' FORMAT 999 SQL.PNO SKIP CENTER -
    > 'Data in Thousands'
    SQL> run
      1* select * from mzh
    
            ID NAME
    ---------- --------------------
             1 mzh
             1 zhm
             2 dd
             2 ddd
             2 dddf
             3 dddf
             4 rtt
             1 mzh
             1 zhm
    Monthly Analysis                   01 Jan 2003                         Page:   1
    
                                    Data in Thousands


CHANGE
C[HANGE]/old/new  
更改缓冲区当前行中的old字符为new

CLEAR  
BRE[AKS]    --清除breaks
BUFF[ER]    --清除缓冲区
COL[UMNS]   --清除col定义
COMP[UTES]  --清除compute
SCR[EEN]    --清除屏幕
SQL                    --清除缓冲区
TIMI[NG]    --清除计时器

COLUMN
ALI[AS] alias    --定义别名,可以被BREAK, COMPUTE和其他COLUMN命令引用.
CLE[AR]          --清除定义
ENTMAP {ON | OFF}--设置列名HTML的实体
FOLD_A[FTER]     --此列之后将会换行
FOLD_B[EFORE]    --此列之前将会换行
FOR[MAT] format  --指定列的输出格式
    1、字符类型格式An,A代表alphabetic-字母
        SQL> col name format a3
        SQL> run
          1* select * from mzh
        
                ID NAM
        ---------- ---
                 1 mzh
                 1 zhm
                 2 dd
                 2 ddd
                 2 ddd
                   f
        
                 3 ddd
                   f
        
                 4 rtt
        
                ID NAM
        ---------- ---
                 1 mzh
                 1 zhm
    2、数值类型格式
        SQL> col id format $9
        SQL> run
          1* select * from mzh
        
         ID NAME
        --- --------------------
         $1 mzh
         $1 zhm
         $2 dd
         $2 ddd
        SQL> col id format 09
        SQL> run
          1* select * from mzh
        
         ID NAME
        --- --------------------
         01 mzh
         01 zhm
         02 dd
         02 ddd
         02 dddf
        SQL> col id format 9,9
        SQL> select * from mzh order by id desc;
        
          ID NAME
        ---- --------------------
         8,9 dfge
           4 rtt
           4 rtt
           4 rtt
           4 rtt
           4 rtt
        SQL> col id for 99.9
        SQL> run
          1* select * from mzh order by id desc
        
           ID NAME
        ----- --------------------
         89.0 dfge
          4.0 rtt
          4.0 rtt
          4.0 rtt
          4.0 rtt
          4.0 rtt
          4.0 rtt
          4.0 rtt
          4.0 rtt
          4.0 rtt
        SQL> col id format b999.999 [如果定点小数整数部分为0,忽略]
        SQL> select * from mzh order by id;
        
              ID NAME
        -------- --------------------
            .300 te
           1.000 mzh
           1.000 zhm
           1.000 mzh
        SQL> col id for c999.999
        SQL> run
          1* select * from mzh order by id
        
                     ID NAME
        --------------- --------------------
                CNY.300 te
               CNY1.000 mzh
               CNY1.000 zhm
               CNY1.000 mzh
               CNY1.000 zhm
               CNY1.000 mzh
               CNY1.000 zhm
               CNY1.000 mzh
        SQL> col id format 9.99EEEE [科学计数法,一定要包含4个E]
        SQL> run
          1* select * from mzh
        
                ID NAME
        ---------- --------------------
          1.00E+00 mzh
          1.00E+00 zhm
          2.00E+00 dd
          2.00E+00 ddd
        SQL> col id format L99   [本地货币符号]
        SQL> run
          1* select * from mzh
        
                   ID NAME
        ------------- --------------------
                  ¥1 mzh
                  ¥1 zhm
                  ¥2 dd
                  ¥2 ddd
                  ¥2 dddf
                  ¥3 dddf
HEA[DING] text
    SQL> col name heading name2
    SQL> run
      1* select * from mzh
    
       ID name2
    ----- --------------------
       1  mzh
       1  zhm
       2  dd   
JUS[TIFY] {L[EFT] | C[ENTER] | R[IGHT]}
设置列名的位置
    SQL> col name jus center
    SQL> run
      1* select * from mzh
    
            ID         NAME
    ---------- --------------------
             1 mzh
             1 zhm
             2 dd
             2 ddd
             2 dddf
             3 dddf
             4 rtt
             1 mzh
             1 zhm
             2 dd
LIKE {expr | alias}
拷贝列定义
    SQL> col id like name;--之后ID列也会像NAME列一样居中对齐
    SQL> run
      1* select * from mzh
    
        ID             NAME
    ---------- --------------------
             1 mzh
             1 zhm
             2 dd
             2 ddd
             2 dddf
             3 dddf
             4 rtt
             1 mzh
             1 zhm
             2 dd
             2 ddd
    
        ID             NAME
    ---------- --------------------
             2 dddf         
NEWL[INE]
NEW_V[ALUE] variable
NOPRI[NT] | PRI[NT]--隐藏列
    SQL> col id noprint
    SQL> run
      1* select * from mzh
    
    name2
    --------------------
    mzh
    zhm
    dd
    ddd
    dddf    
NUL[L] text
    SQL> col name null 0--替代查询为null的值
    SQL> run
      1* select * from mzh where name is null
    
        ID             NAME
    ---------- --------------------
            34 0
OLD_V[ALUE] variable ON | OFF
WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]
    SQL> col name wrap word
    SQL> run
      1* select * from mzh where name like 'wra%'
    
       ID    NAME
    -------- ----
    ######## wrap
             test
    
    SQL> col name wrap trun
    SQL> run
      1* select * from mzh where name like 'wra%'
    
       ID    NAME
    -------- ----
    ######## wrap
COMPUTE
    SQL> break on id;  
    SQL> compute num label total of name on id;
    SQL> select * from mzh order by id;
    
       ID    NAME
    -------- ----
         -34 hh
    ******** ----
    total       1
           0 te
    ******** ----
    total       1
           1 zhm
             mzh
             zhm
             mzh
             zhm
    
       ID    NAME
    -------- ----
           1 mzh
             zhm
             mzh
    
CONNECT  
连接数据库

COPY  
拷贝查询结果至一个表或其他数据库,不支持8i之后的一些数据类型和特性,以后的版本中将会被废弃

DEFINE
显示/设置替代变量  
    SQL> define
    DEFINE _DATE           = "13-2月 -11" (CHAR)
    DEFINE _CONNECT_IDENTIFIER = "orcl11g" (CHAR)
    DEFINE _USER           = "SYS" (CHAR)
    DEFINE _PRIVILEGE      = "AS SYSDBA" (CHAR)
    DEFINE _SQLPLUS_RELEASE = "1101000600" (CHAR)
    DEFINE _EDITOR         = "Notepad" (CHAR)
    DEFINE _O_VERSION      = "Oracle Database 11g Enterprise Editio
    6.0 - Production
    With the Partitioning, OLAP, Data Mining and Real Application T
    CHAR)
    DEFINE _O_RELEASE      = "1101000600" (CHAR)
    DEFINE _RC             = "0" (CHAR)
    
    
    SQL> select '&&_editor' from dual;
    原值    1: select '&&_editor' from dual
    新值    1: select 'Notepad' from dual
    'NOTEPA
    -------
    Notepad
    
    SQL> define test=test
    SQL> define
    DEFINE _DATE           = "13-2月 -11" (CHAR)
    DEFINE _CONNECT_IDENTIFIER = "orcl11g" (CHAR)
    DEFINE _USER           = "SYS" (CHAR)
    DEFINE _PRIVILEGE      = "AS SYSDBA" (CHAR)
    DEFINE _SQLPLUS_RELEASE = "1101000600" (CHAR)
    DEFINE _EDITOR         = "Notepad" (CHAR)
    DEFINE _O_VERSION      = "Oracle Database 11g E
    6.0 - Production
    With the Partitioning, OLAP, Data Mining and Re
    CHAR)
    DEFINE _O_RELEASE      = "1101000600" (CHAR)
    DEFINE _RC             = "0" (CHAR)
    DEFINE TEST            = "test" (CHAR)
    SQL> select '&&test' from dual;
    原值    1: select '&&test' from dual
    新值    1: select 'test' from dual
    'TES
    ----
    test


DEL  
删除缓冲区的一行或者多行

DESCRIBE  
DESC[RIBE] {[schema.]object[@db_link]}

DISCONNECT        
提交更改并从数据库中断开,但不退出sqlplus

EDIT  
使用编辑器编辑缓冲区或指定的文件

EXECUTE
执行单句PLSQL,一般用于在SQLPLUS中调用存储过程
exec dbms_output.put_line('test');

EXIT  
退出

GET
获取文件值缓冲区
    SQL> get test.sql
      1  set serveroutput on
      2* exec dbms_output.put_line('test')
    SQL> get test.sql nolist

HELP  
help ex --将会同时显示exit和execute的帮助
help index

HOST
SQLPLUS中调用操作系统命令[平台通用]
平台相关的:
windows $
unix !

INPUT  
在缓冲区当前行之后添加一行或多行

LIST  
显示缓冲区内容

PASSWORD [username]   
    SQL> password mzh
    更改 mzh 的口令
    新口令:
    重新键入新口令:
    口令已更改


PAUSE
暂停脚本执行
    test.sql
    PAUSE 显示当前SGA状态;
    SELECT * FROM V$SGA;
    PAUSE 显示当前会话状态;
    SELECT * FROM V$SESSION;
    SQL>@test.sql

PRINT
输出绑定变量  
SQL> VARIABLE n NUMBER
SQL> BEGIN
  2  :n := 1;
  3  END;
  4  /

PL/SQL 过程已成功完成。

SQL> print n;

         N
----------
         1

PROMPT
显示文本

RECOVER
Performs media recovery on one or more tablespaces, one or
more datafiles, or the entire database.

REMARK  
注释

REPFOOTER   
设置报表结束符

REPHEADER  
设置报表头

RUN
显示缓冲区SQL并执行

SAVE  
保存缓冲区内容至文件
save test.sql
save test.sql [create]--如果文件已存在,提示文件已存在
save test.sql replace --如果文件已存在,则覆盖原文件
save test.sql append  --如果文件已存在,则追加至原文件

SET  
SET APPINFO{ON | OFF | text}
设置v$session中显示的module名
    SQL> set appinfo 'from sqlplus'
    SQL> run
      1* select module from v$session
    
    MODULE
    ------------------------------------------------
    from sqlplus


SET ARRAYSIZE {15 | n}
设置SQLPLUS每次从数据库取得的数据行数,不会影响查询结果,增加这个值可以提高SQLPLUS查询数据的效率,
但会增加运行SQLPLUS的内存开销

SET AUTOCOMMIT{ON | OFF | IMMEDIATE | n}  
设置n次DML操作之后自动提交

SET AUTOPRINT {ON | OFF}
设置自动显示PLSQL块和EXECUTE中的绑定变量
    SQL> variable n number
    SQL> begin
      2  :n:=1;
      3  end;
      4  /
    
    PL/SQL 过程已成功完成。
    
    
             N
    ----------
             1


SET AUTORECOVERY [ON | OFF]
设置使用RECOVER命令时是否采用交互模式
ON则使用默认的redo log文件,文件路径和文件名由LOG_ARCHIVE_DEST and LOG_ARCHIVE_FORMAT决定
OFF则采用交互模式


SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]
设置每次执行自动显示执行计划
EXPLAIN:执行计划
STATISTICS:统计信息
 

SET BLOCKTERMINATOR {. | c | ON | OFF}
设置PLSQL块终止符

SET CMDSEP {; | c | ON | OFF}
设置多个SQLPLUS命令(不影响SQL)写在一行的分隔符
    SQL> set cmdsep +;
    SQL> show cmdsep
    cmdsep "+" (hex 2b)
    SQL> select * from dual;+ select * from dual;
    
    D
    -
    X
    
    SQL> show cmdsep+show cmdsep
    cmdsep "+" (hex 2b)
    cmdsep "+" (hex 2b)

SET COLSEP {  | text}  on
设置列间的分隔符
    SQL> set colsep '|'
    SQL> select * from mzh;
    
            ID|NAME
    ----------|--------------------
             1|mzh
             1|zhm
             2|dd
             2|ddd
             2|dddf
             3|dddf
             4|rtt

已选择7行。

SET CONCAT [. | c | ON | OFF}
设置替代变量和字符串连接符号
    SQL> show concat
    concat "." (hex 2e)
    SQL> set concat ,
    SQL> show concat
    concat "," (hex 2c)
    SQL> select '&test,dd' from dual;
    输入 test 的值:  df
    原值    1: select '&test,dd' from dual
    新值    1: select 'dfdd' from dual
    
    'DFD
    ----
    dfdd



SET DEFINE {& | c | ON | OFF}
设置替代变量的指示符号
    SQL> set define >
    SQL> select '>test' from dual;
    输入 test 的值:  sdf
    原值    1: select '>test' from dual
    新值    1: select 'sdf' from dual
    
    'SD
    ---
    sdf

SET DESCRIBE [DEPTH {1 | n | ALL}] [LINENUM {ON | OFF}] [INDENT {ON | OFF}]
设置描述的显示层数[如包含自定义类型的表格]
    1、创建一个Object Type
        CREATE TYPE ADDRESS AS OBJECT
          ( STREET  VARCHAR2(20),
            CITY    VARCHAR2(20)
          );
        /
    2、创建引用这个对象类型的表
        CREATE TABLE EMPLOYEE
          (LAST_NAME VARCHAR2(30),
           EMPADDR ADDRESS,
           JOB_ID VARCHAR2(20),
           SALARY NUMBER(7,2)
          );
        /
    3、显示描述
        SET DESCRIBE DEPTH 2 LINENUM ON INDENT ON
        DESC EMPLOYEE
        SQL> DESC EMPLOYEE
               名称                            是否为空? 类型
               ------------------------------- -------- ------------------------
      
        1      LAST_NAME                                VARCHAR2(30)
        2      EMPADDR                                  ADDRESS
        3    2   STREET                                 VARCHAR2(20)
        4    2   CITY                                   VARCHAR2(20)
        5      JOB_ID                                   VARCHAR2(20)
        6      SALARY                                   NUMBER(7,2)
      

SET ECHO {ON | OFF}  on
设置@, @@或者START之后是否显示执行的脚本内容

SET EDITFILE file_name[ .ext]
设置edit命令默认编辑的文件
    SQL> show editfile
    editfile "afiedt.buf"
    SQL> set editfile sqlbuffer.buf
    SQL> ed


SET EMBEDDED {ON | OFF}
 

SET ESCAPE {\ | c | ON | OFF}  
设置转义字符
    SQL> set escape $
    SQL> ACCEPT v1 PROMPT 'Enter $&1:'
    Enter &1:fewer
    SQL> define v1
    DEFINE V1              = "fewer" (CHAR)

SET FEEDBACK {6 | n | ON | OFF}  
设置返回结果大于多少行时显示'已选择多少行'
    SQL> select count(*) from mzh;
    
      COUNT(*)
    ----------
           118
    
    SQL> set feedback 1
    SQL> run
      1* select count(*) from mzh
    
      COUNT(*)
    ----------
           118
    
    已选择 1 行。
关闭回显
    SQL> set feedback off
    SQL> run
      1* select count(*) from mzh
    
      COUNT(*)
    ----------
           118


SET FLAGGER {OFF | ENTRY | INTERMEDIATE | FULL}
设置SQL是否需要遵从ANSI/ISO SQL92标准
ANSI/ISO SQL92 standard.

SET FLUSH {ON | OFF}
ON设置关闭输出缓冲
OFF打开输出缓冲,可以提高性能

SET HEADING {ON | OFF}
设置是否显示列头
    16:43:49 SQL> set heading off
    16:52:46 SQL> select * from mzh;
    
             1 wq
             1 dq
             1 fq
             1 rq
             2 qd
             2 wd
             2 sd
             2 ad
    
    已选择8行。

SET HEADSEP { |  | c | ON | OFF}
只有在SET MARKUP HTML PREFORMAT模式下的iSQLPLUS下才能使用,用于指定列头的换行符

SET INSTANCE [instance_path | LOCAL]
设置连接的实例,必须首先断开连接才能设置


SET LINESIZE {80 | n}
设置SQLPLUS输出一行显示的列数

SET LOBOFFSET {n | 1}
设置CLOB和NLOB字符的截断位置,输出至截断位置

SET LOGSOURCE [pathname]
设置redo log的存放位置
SET LOGSOURCE "/usr/oracle10/dbs/arch"
RECOVER DATABASE

SET LONG {80 | n}  
设置LONG, CLOB, NCLOB和XMLType 类型数据的显示字节数

SET LONGCHUNKSIZE {80 | n}
设置SQL*Plus获取LONG, CLOB, NCLOB 或者 XMLType 类型数据时的步长.

SET MARK[UP] HTML [ON | OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP
{ON | OFF}] [SPOOL {ON | OFF}] [PRE[FORMAT] {ON | OFF}]
用法同命令行参数-M

SET NEWPAGE {1 | n | NONE}  
设置每页前显示多少行

SET NULL text  on
替换查询结果中结果为空的值为text

SET NUMFORMAT format
设置数值类型默认显示格式
    SQL> set numformat 99.99
    SQL> run
      1* select * from mzh
    
        ID NAME
    ------ --------------------
      1.00 mzh
      1.00 zhm
      2.00 dd
      2.00 ddd

SET NUMWIDTH {10 | n}
    SQL> set numwidth 2
    SQL> select * from mzh;
    
    ID NAME
    -- --------------------
     1 mzh
     1 zhm
     2 dd
     2 ddd
     2 dddf
     3 dddf
     4 rtt
     1 mzh

SET PAGESIZE {14 | n}  on
设置每页显示的行数,0则关闭输出列头

SET PAUSE {ON | OFF | text}
ON:在每个PAGE输出时暂停并显示text文本
    SQL> set pause 'loading'
    SQL> set pause on;
    SQL> select * from mzh;
    loading
    
            ID NAME
    ---------- --------------------
             1 mzh
             1 zhm
             2 dd
             2 ddd
             2 dddf
             3 dddf
             4 rtt
             1 mzh
             1 zhm
             2 dd
             2 ddd
    loading

SET RECSEP {WRAPPED | EACH | OFF}
设置哪里输出记录分隔符
    SQL> set recsep each  
    SQL> run
      1* select * from mzh where rownum<4
    
            ID NAME
    ---------- --------------------
             1 mzh
    
             1 zhm
    
             2 dd
    
SET RECSEPCHAR {  | c}
设置指定记录分隔符
    SQL> set recsep each
    SQL> set recsepchar *
    SQL> select * from mzh where rownum<4;
    
            ID NAME
    ---------- --------------------
             1 mzh
    ********************************************************************************
    
             1 zhm
    ********************************************************************************
    
             2 dd
    ********************************************************************************

SET SERVEROUT[PUT] {ON | OFF} [SIZE {n | UNL[IMITED]}] [FOR[MAT] {WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]}]
设置DBMS_OUTPUT PUT_LINE是否可以输出
SIZE指定输出结果缓冲在数据库中的缓冲大小

SET SHIFTINOUT {VISIBLE | INVISIBLE}  
设置是否显示shift字符

SET SHOWMODE {ON | OFF}  
如果设置为ON,则使用SET命令改变SQLPLUS配置变量的时候将同时显示新值和旧值

SET SQLBLANKLINES {ON | OFF}  
设置是否允许输入空行
ON:运行
OFF:不允许

SET SQLCASE {MIXED | LOWER | UPPER}
设置在执行SQL时将SQL文本转化为大写、小写还是不转化

SET SQLCONTINUE {>  | text}
设置使用-换行之后显示的提示符

SET SQLNUMBER {ON | OFF}
ON在SQL分行显示的时候显示行号
OFF则显示提示符

SET SQLPLUSCOMPATIBILITY {x.y[.z]}
设置绑定变量输出格式兼容版本

SET SQLPREFIX {# | c}
指定在输入SQL和PLSQL时立即执行命令的前缀


SET SQLPROMPT {SQL> | text}  
设置提示符

SET SQLTERMINATOR {; | c | ON | OFF}
设置SQL结束符,默认为;

SET SUFFIX {SQL | text}  
设置默认的文件扩展名

SET TAB {ON | OFF}  
将多个空格输出为单个空格

SET TERMOUT {ON | OFF}
设置@,@@,start执行脚本之后是否输出结果至屏幕

SET TIME {ON | OFF}
设置提示符前显示当前时间

SET TIMING {ON | OFF}
设置显示每天SQL语句的执行时间


SET TRIMOUT {ON | OFF}
设置是否输出行尾的空格,可以减少获取的数据量,提高效率

SET TRIMSPOOL {ON | OFF}  
设置spool输出的每行结尾是否包含空格

SET UNDERLINE {- | c | ON | OFF}
只有在SET MARKUP HTML PREFORMAT模式下的iSQLPLUS中才能使用,用于设置列头的下划线符号

SET VERIFY {ON | OFF}  on
控制是否回显经过替代变量替换之前和之后的SQL语句

SET WRAP {ON | OFF}
控制列超出是否截断。


SHOW  
system_variable
ALL         --显示SQLPLUS的所有配置变量
BTI[TLE]    --显示BTITLE
ERR[ORS] [ { FUNCTION | PROCEDURE | PACKAGE | PACKAGE BODY | TRIGGER
                  | VIEW | TYPE | TYPE BODY | DIMENSION | JAVA CLASS } [schema.]name]
            --显示编译错误
LNO         --显示当前页的当前行
PARAMETERS [parameter_name]
PNO         --当前页数
RECYC[LEBIN] [original_name]--显示当前用户的回收站信息
REL[EASE]   --显示当前连接的数据库版本
REPF[OOTER]
REPH[EADER]
SGA         --显示当前SGA情况
SPOO[L]     --显示SPOOL状态
SQLCODE     --显示最近的SQL操作的返回码
    SQL> select * from fad;
    select * from fad
                  *
    第 1 行出现错误:
    ORA-00942: 表或视图不存在
    
    
    SQL> show sqlcode
    sqlcode 942
    
    SQL> select * from dual;
    
    D
    -
    X
    
    SQL> show sqlcode
    sqlcode 0
TTI[TLE]--显示TTITLE配置
USER    --显示当前登入用户
XQUERY  --显示XQUERY配置


SHUTDOWN      
关闭当前数据库
    
SPOOL
指定显示结果保存至文件
spool test.sql
spool out/off

START
运行脚本


STARTUP  
启动数据库

STORE  
SQL> store set env.sql
store set env.sql create
store set env.sql replace
store set env.sql append
保存当前set设置


TIMING  
SQL> timing start sqld
SQL> timing show
计时: sqld
已用时间:  00: 00: 04.59
SQL> timing
1 计时元素正在使用
SQL> timing show
计时: sqld
已用时间:  00: 00: 15.26
SQL> timing stop
计时: sqld
已用时间:  00: 00: 24.75

TTITLE  
定义页眉,使用方式同BTITLE

UNDEFINE  
取消替代变量
SQL> define test=d
SQL> define test2=e
SQL> undefine test test2

VARIABLE  
声明一个PLSQL中可以引用的变量
可使用的变量类型:
NUMBER
CHAR
CHAR (n [CHAR | BYTE])
NCHAR
NCHAR (n)
VARCHAR2 (n [CHAR | BYTE])
NVARCHAR2 (n)
CLOB
NCLOB
REFCURSOR
BINARY_FLOAT
BINARY_DOUBLE

WHENEVER OSERROR
指定发生操作系统错误时的退出码,是否提交,回滚等
WHENEVER OSERROR {EXIT [SUCCESS | FAILURE | n | variable | :BindVariable]
[COMMIT | ROLLBACK] | CONTINUE [COMMIT | ROLLBACK | NONE]}

WHENEVER SQLERROR
指定发生SQL错误时的退出码,是否提交,回滚等
WHENEVER SQLERROR {EXIT [SUCCESS | FAILURE | WARNING | n | variable
| :BindVariable] [COMMIT | ROLLBACK] | CONTINUE [COMMIT | ROLLBACK | NONE]}

XQUERY  
运行一个XQUERY查询.



阅读(16526) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

chinaunix网友2011-03-06 17:13:50

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com