服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > Oracle开发 > 查看文档

实例讲解:sqlplus的set系统变量及其得? size= (1)

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语句来验证。

扫描关注微信公众号