在SQLPLUS中设置合适的环境变量

 使用SQL*PLUS动态生成批量脚本
  将spoolselect命令结合起来使用,可以生成一个脚本,脚本中包含有可以批量执行某一任务的语句。
  例如:
  生成一个脚本,分析system用户下的所有的表:
 a. 创建analyze_system.sql文件,执行如下语句:
  spool d:\analyze_table.sql

SELECT 'analyze table '||table_name||' compute statistics;' from user_tables;

Spool off
 b. system用户登录数据库
  SQLPLUS > @ d:\analyze_system.sql

c. D盘根目录下会生成文件analyze_table.sql文件,包含分析所有表的语句,如下所示:
SQL> SELECT 'analyze table '||table_name||' compute statistics;' from user_tables;

  
  'ANALYZETABLE'||TABLE_NAME||'COMPUTESTATISTICS;'                                

----------------------------------------------------------------               

analyze table AQ$_INTERNET_AGENTS compute statistics;                          

analyze table AQ$_INTERNET_AGENT_PRIVS compute statistics;                      

analyze table AQ$_QUEUES compute statistics;                                   

analyze table AQ$_QUEUE_TABLES compute statistics;                             

analyze table AQ$_SCHEDULES compute statistics;                                

analyze table DEF$_AQCALL compute statistics;                                  

已选择128行。
 

d. 对生成的analyze_table.sql文件进行编辑去掉不必要的部分,只留下analyze table …..语句
 e. system用户下运行analyze_table.sql文件,分析system用户下所有的表。
  SQLPLUS > @ d:\analyze_table.sql
  
  在上面的操作中,在生成的脚本文件中会有多余的字符,如运行的sql语句,标题,或返回的行数,需要我们编辑该脚本后再运行,如果不进行编辑去掉不必要的部分则在执行过程中就会报错(
SP2-0734: 未知的命令开头),给实际的操作带来诸多不便。  
  

SQLPLUS中有很多环境变量,设置合适的环境变量我们就能避免上面的问题而不用人工手动去编辑去掉不必要的部分,这对于程序的自动化执行很有好处;

例如,河北SDE数据库优化过程中需要在计划任务中执行Spool出来的脚本,我们可以在

SQLPLUS中设置以下变量:

set echo on            --是否显示执行的命令内容  

set feedback off       --是否显示 *   rows   selected  

set heading off        --是否显示字段的名称

经过这样设置环境变量后,再执行

SQL>conn system/system

SQL> spool d:\analyze_table.sql

SQL>SELECT 'analyze table '||table_name||' compute statistics;' from user_tables;

SQL> spool off

查看d:\analyze_table.sql可以发现就只包含分析所有表的语句:

analyze table AQ$_INTERNET_AGENTS compute statistics;                          

analyze table AQ$_INTERNET_AGENT_PRIVS compute statistics;                     

analyze table AQ$_QUEUES compute statistics;                                   

analyze table AQ$_QUEUE_TABLES compute statistics;                             

analyze table AQ$_SCHEDULES compute statistics;                                

analyze table DEF$_AQCALL compute statistics;                                  

这样在system用户下运行analyze_table.sql文件,分析system用户下所有的表就不用再手工编辑了。
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8720638/viewspace-321776/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8720638/viewspace-321776/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值