show和set是两条用于维护SQl*plus系统变量的命令:
SQL>show all 查看系统变量;
SQL>show user 查看当前用户的连接;
SQL>show error 查看错误信息;
SQL>show XXX 显示XX参数信息;
SQL>set timing on 默认耗时,用来测试sql执行时间,测试效率,一般为off,写在sql 语句之前;
SQL>set heading off 禁止输出列标题,默认为on;
SQL>set feedback off 禁止显示最后一行的计数反馈信息,默认值为"对6个或更多的记录,会送为on"
SQL>set sqlprompt"SQL>" 设置默认提示符;
SQL>set linesize 1000 设置屏幕显示行宽,默认为100;
SQL>set autocommit on 设置是否自动提交,默认为off;
SQL>set pause on 默认为off 设置暂停,会使屏幕显示停止,等待按下enter键,在显示下一页。
SQL>set arraysize 1 默认为15
SQL>set long 1000 默认为80,设置1000是为了显示很多数据字典视图中用到了long数据类型
SQL>define a=“xxxxx” 定义局部变量,如果想用一个类似在各种显示中所包括的回车那样的常量,可以用define来设置
sql*plus中缓冲区命令列表
命令 缩写 作用
change/旧文本/新闻本 C/旧文本/新闻本 在当前行用新文本替换旧文本
change/文本 C/文本 从当前行删除文本
del 删除当前行
del n 删除第n行
del n * 删除第n行到当前行
del n m 删除第n行到m行
del n last 删除第n行道最后一行
del * 删除当前行
del * n 删除当前行道第n行
del * last 删除当前行道最后一行
del last 删除最后一行
input I 在当前行之后添加多行,input会提示输入每一行
input 文本 I 文本 在当前行之后添加一行
list L 显示缓冲区中所有的行
list n L n 显示缓冲区中第n行
list n m L n m 显示缓冲区第n到第m行
list n last L n last 显示缓冲区第n行道最后一行
list * L * 显示缓冲区当前行
list * n L * n 显示缓冲区的前行到第n行
list * last L * last 显示缓冲区当前行中道最后一行
list last L last 显示缓冲区最后一行
run R 显示并执行当钱缓冲区的命令,并使缓冲区的最后一行成为当前行
/ 执行当前缓冲区的命令,不显示缓冲区命令
行号 设置缓冲区的某一行为当前行
sql*plus执行计划和统计数据的两种方式:
SQL>connect/as sysdba
SQL>@?/rdbms/admin/utlxplan.sql 执行utlxplan.sql文件,创建plan_table
SQL>create public synonym plan_table for plan_table;
SQL>grant all on plan_table to public;
SQL>@?/sqlplus/admin/plustrce.sql 建立pulstrace角色
SQL>grant pulstrace to public;
解释:
在有了plan_table表和plustrace角色的情况下:
1、先explain plan for sql_stmt;然后@?/RDBMS/ADMIN/utlxpls看执行计划
2、先 set autotrace traceonly 然后直接执行sql_stmt;会自动显示执行计划和统计信息。
注意:
set autotrace 选项:
on 显示查询结果,执行计划,统计数据;
on statistics 显示查询结果,统计数据,不显示执行计划
on explain 显示查询结果,执行计划,不像是统计数据
traceonly 显示执行计划和统计结果,但不包括查询结果
traceonly statistics 仅显示统计数据。
使用autotrace:
SQL> connect 用户名/密码
SQL> set autotrace on
SQL> set timing on
SQL> set autotrace traceonly
SQL> select table_name from user_tables;
显示用户名查询语句:
select lower(user)||'@'||global_name global_name from global_name;
sqlplus里出报表:
compute sum of bytes onpool
break on pool skip 1
select pool,name,bytes from v$sgastat order by 1,2;
一个sqlplus的小技巧
在sql*plus中敲命令的过程中, 想不起某个列的名字, 如果取消当前的命令,待查询后再重敲, 那太痛苦了. 当然你可以另开一个sql*plus窗口进行查询, 但下面提供的方法更简单.比如说, 你想查名称带"xxx"的业务信息, 输入了下面的语句:
SQL> select icpcode,icpservid
from service
where
这时, 你发现你想不起来业务名称的列名是什么了.这种情况下, 只要在下一行以#开头, 就可以执行一条sql*plus命令, 执行完后, 刚才的语句可以继续输入
SQL> select icpcode,icpservid
from service
where
#desc service
Name Null? Type
----------------------------------------- -------- ----------------------------
ICPCODE NOT NULL VARCHAR2(12)
ICPSERVID NOT NULL VARCHAR2(10)
SERVNAME NOT NULL VARCHAR2(64)
3 servname like '%xxx%';
自定义一个符合习惯的基于DOS的sqlplus命令行
由于工作原因,经常要登陆到各个oracle环境解决问题,设置一个实用的sqlplus命令行环境是必要的:
一.首先设置dos窗口最大化,并且能显示尽量多的信息
--cmd窗口布局layout设置
windows任务栏为两栏情况下
Screen Buffer Size:
Width:1250
Height:420
Window Size:
Width:125
Height:42
Window position:
Left:-4
Top:-4
Let System position window:为空
二.在C:/Documents and Settings/yourWindowLoginUserName下新建set.sql:
set serveroutput on size 1000000
set trimspool on
set long 5000
--linesize过大了,使用desc命令显示结果格式很差,set linesize 1后再用desc.
set linesize 10000
set pagesize 42
column plan_plus_exp format a80
column global_name new_value gname
set termout off
select lower(user)||'@'||substr(global_name,1,instr(global_name,'.')-1) global_name from global_name;
set sqlprompt '&gname>'
set termout on
set pause on
三.在C:/Documents and Settings/yourWindowLoginUserName下新建sql33.bat:
sqlplus wacos/oss@orcl.33 @set
四.以后进入dos窗口后,直接敲sql33就进入sqlplus命令行窗口了.
这样以后就单击快捷方式就进入sqlplus命令行界面,该界面的特点是:
窗口最大化,显示尽量多信息
每行记录在一行显示
每显示一屏信息即暂停,按Enter继续显示下一屏
还有其它set.sql里设置好的各种属性