Chinaunix首页 | 论坛 | 博客
  • 博客访问: 91883935
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-03-31 21:59:44

来源:赛迪网    作者:刘明昭

Set系统变量的功能和使用方法:

变量名 说明

set appinfo{on|off|text}

脚本登陆到dbms_application_info这个管理用的package中。

set arraysize{15|n}

是sql*plus从db取回数据是每次的list大小,但是这里有点需要声明,其实取回的时候第一次都是只取1条记录的,第二开始才会按照arraysize指定的数值来返回记录数,这个变量的设定范围是从1~5000的整数,默认为15,不建议取的太大,会影响hit的命中率,对于这点以后我将会在tuning的相关叙述中证明。

set autocommit{on|off|immediate|n}

自动commit,可是设定开启,关闭,实时和多少条记录后commit

set autoprint{on|off}

自动打印变量值,如果autoprint为on是那么在procedure的执行完是大家都将可以看到屏幕上有打印变量的值,关闭是则只显示“过程执行完毕”这样的提示,在调试的时候建议打开

set autorecovery{on|off}

设定为on时将以默认的文件名来记录REDO Log,当需要恢复时使用recover automatic database,否则只能使用recover database。

set autotrace{on|off|trace [only]}[explain][statistics]

对正常执行完毕的sql dml语句自动生成报表信息,在tuning的时候比较有用,执行对象需要被赋予plustrace角色。在这里有的人可能会发现自己的对象集合中没有plan_table这张表(请用sys用户来建表),下面我给出建表的DDL,下面的几个命令请用sys用户来执行:

CREATE TABLE PLAN_TABLE (

STATEMENT_ID VARCHAR2(30),

TIMESTAMP DATE,

REMARKS VARCHAR2(80),

OPERATION VARCHAR2(30),

OPTIONS VARCHAR2(30),

OBJECT_NODE VARCHAR2(128),

OBJECT_OWNER VARCHAR2(30),

OBJECT_NAME VARCHAR2(30),

OBJECT_INSTANCE NUMBER(38),

OBJECT_TYPE VARCHAR2(30),

OPTIMIZER VARCHAR2(255),

SEARCH_COLUMNS NUMBER,

ID NUMBER(38),

PARENT_ID NUMBER(38),

POSITION NUMBER(38),

COST NUMBER(38),

CARDINALITY NUMBER(38),

BYTES NUMBER(38),

OTHER_TAG VARCHAR2(255),

PARTITION_START VARCHAR2(255),

PARTITION_STOP VARCHAR2(255),

PARTITION_ID NUMBER(38),

OTHER LONG,

DISTRIBUTION VARCHAR2(30)

);
 

这样plan_table就生成了,但是系统里还是没有plustrace这个role,别急,create role的脚本在?sqlplusadminplustrce.sql,在这里我特别声明一下,我刚开始学oracle的时候总是不明白为什么前面是一个问号,后来才知道这个?号代表定位$ORACLE_HOME变量指定的路径,可能我比较菜吧。。。

言归正传,plustrace生成以后赋给public用于生成统计report,将plan_table的所有权限也赋予给public用于生成执行计划report

下面是关于autotrace参数的解释:

OPTION 说明

SET AUTOTRACE ON 同时输出执行结果以及统计信息和执行计划信息。

SET AUTOTRACE OFF 关闭执行计划和统计信息报表

SET AUTOTRACE ON EXPLAIN 只打开执行计划报销,显示命令结果,不显示统计信息。

SET AUTOTRACE ON STATISTICS 只打开统计信息报销,显示命令结果,不显示执行计划。

SET AUTOTRACE TRACEONLY 如果是这种形态的话不显示命令的执行结果,同时显示执行计划和统计信息,但是在traceonly的后面仍然可以追加explain或者statistics,等同于set autotrace on [explain|statistics]但是不显示执行结果

set blockterminator {.|c}

定义表示结束PL/SQL块结束的字符。

set cmdsep{;|c|on|off}

sqlplus的命令行区分字符,默认为off,也就是说只有回车才能输入下一条命令并开始执行,如果改为on状态的会自动设定成“;”, 就可以在一行内用“;”分隔多条sqlplus命令。类似于:

wupei@PYE.US.ORACLE.COM> show all; set autotrace off;

set colsep{ |text}

注释:列于列之间的分隔字符,可以用select语句来验证。

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