li
  当前位置:主页 > 配置管理 > 文章内容
li
Oracle 10G 新特性——SQL*PLUS的改进(2)
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2006-09-28   阅读:20  
本文章共3303字,分3页,当前第2页,快速翻页:
 

SQL> select 1 ...
SQL> save myscript
Created file myscript.sql
SQL> select 2 ...
SQL> save myscript append
Append file myscript sql
SQL> select 3 ...
SQL> save myscript append
Append file myscript.sql
这样,所有的脚本都被存储在myscript.sql这个脚本中了。
这一特性对于spool同样适用。在9i中,输入spool res后,如果当前目录下不存在res.lst这个文件,就会创建它,如果已经存在,就会直接覆盖(不会给任何提示),然后将以后直到spool off的所有sqlplus上的信息存储在res.lst中。这样的话,如果原先有一个很重要的res.lst文件可能就无法恢复了。
10g中,spool命令可以向已经存在的文件中添加内容:
IXDBA.NET技术社区
SQL> spool res append
如果忽略掉append子句就和9i中一样,会将已有文件覆盖,或者将append换为replace也会覆盖。而如果使用create子句就会先检查文件是否存在,如果存在,就会报错:
SYS on 2005-08-31 17:25:46 at teng>spool abc create
SP2-0771: 
文件 "abc.LST" 已存在。
请使用其它名称或 "SPOOL filename[.ext] REPLACE"


Login.sql
每次登录sqlplus时,会先执行$ORACLE_HOME/sqlplus/glogin.sql或者当前目录的login.sql脚本。但是,会存在各种各样的限制。在9i或以下版本里,假如你的脚本里有如下内容:
set sqlprompt "_connect_identifier >"
当第一次启动并连接到数据库DB1时,提示信息为:
DB1>
然后再连接到另外一个数据库上:
DB1> connect scott/tiger@db2
connected
DB1>
尽管连到了DB2,但提示信息还是DB1。说明这个提示有问题。其实原因很简单,login.sql只是在第一次启动sqlplus时执行,而在每次重新连接时不会执行。所以提示信息没有变。
10g中,这种限制没有了。脚本不仅在启动sqlplus时执行,还会在每次连接数据库时也会执行:
DB1> connect scott/tiger@db2
connected
DB2>
这样信息就是正确了。


使用原先版本的sqlplus
如果你出于某些原因不想使用这种增强过的sqlplus该怎么办呢?很简单,只要在运行sqlplus时加上-c的选项就可以了:
sqlplus –c 9.2
这样sqlplus的环境就和9.2版本的是一样的了。


轻松使用dual
有多少人经常使用例如以下的语句:
select USER into <some variable> from DUAL
也许有很多。每次调用DUAL都会产生逻辑IO,而这些逻辑IO都可以被数据库避免的。在一些情况下,调用DUAL是为了能达到像“<somevariable> := USER”这样的效果。因为Oracle代码将DUAL看作一张特殊的表,因此一些用于优化普通表的方法可能对它无效。
10g中,这些担心都不存在了。因为DUAL是一张特殊的表,通过设定10046跟踪事件,”consistent gets”在相当程度上被降低了,查询计划也不一样了。
9i中:
Rows     Execution Plan
-------  ---------------------------------------------------
      0  SELECT STATEMENT   GOAL: CHOOSE
      1   TABLE ACCESS (FULL) OF 'DUAL'
10G中:
Rows     Execution Plan
-------  ---------------------------------------------------


阅读更多内容<<上一页 · 1 · 2 · 3 · 下一页>>


  上一篇: Oracle 10G 新特性——闪回表   下一篇: 管理Oracle数据库要注意的一些问...
li
 §相关评论  
 热点文章

·oracle Logfile的不同状态说明
·Oracle数据库的一些常用操作经
·Oracle10g(10.2) 在Redhat AS4
·oracle工具:浅谈LogMiner的使用
·RHAD AS4 上安装 Oracle 数据库
·oracle基础知识(物理结构)
·oracle基础:Oracle中null的使用
·Oracle常用基本语法操作集锦
·oracle数据库查询前台正在发出
·AIX+ORACLE10G安装手册
·oracle数据库9i升级到oracle10
li
 编辑推荐
·oracle Logfile的不同状态说明
·Oracle数据库的一些常用操作经
·Oracle10g(10.2) 在Redhat AS4
·oracle工具:浅谈LogMiner的使用
·RHAD AS4 上安装 Oracle 数据库
·oracle基础知识(物理结构)
·oracle基础:Oracle中null的使用
·Oracle常用基本语法操作集锦
·oracle数据库查询前台正在发出
·AIX+ORACLE10G安装手册
·oracle数据库9i升级到oracle10
li
 相关篇章
·Oracle 10G 新特性——闪回表
·使用Rman的Plus archvielog选项简...
·Oracle隐含参数:allow_resetlog...
·data guard综合
·ORA-01034错误的解决办法
·Oracle数据库的备份(上),学习笔...
·损坏控制文件的恢复方法
·ORACLE备份&恢复案例
·Oracle中模拟及修复数据块损坏
·Oracle8i/9i EXP/IMP使用经验
·管理Oracle数据库要注意的一些问...
·ORA-32004 与 Deprecated 参数
·关于ROWNUM的问题的探讨与研究
·Oracle的小工具dbfsize
·由HWM引出的drop,delete,trunc...
·oracle中DMT与LMT表空间管理的一...
·oracle字符集设置问题
·一点零散知识,备忘!
·Oracle10g监听问题的一点研究
·连接数据库一定要配置tnsnames.o...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接