易截截图软件、单文件、免安装、纯绿色、仅160KB

学习《Oracle 9i10g编程艺术》的笔记 (五)

 1.尽可能地使用绑定变量 不用开关CURSOR_SHARING=FORCE 
如果你愿意,这个特性会实现一个自动绑定器(auto-binder)。
如果有一个查询编写为SELECT * from EMP WHERE EMPNO = 1234,自动绑定器会悄无声息地把它改写成
SELECT * from EMP WHERE EMPNO = :x。这确实能动态地大大减少硬解析数,并减少前面讨论的库闩等待
时间——但是(凡事总有个“但是”),它可能有一些副作用。游标共享的一个常见副作用如下所示:
ops$tkyte@ORA10G> select /* TAG */ substr( username, 1, 1 )
2 from all_users au1
3 where rownum = 1;
S
-
B
ops$tkyte@ORA10G> alter session set cursor_sharing=force;
Session altered.
ops$tkyte@ORA10G> select /* TAG */ substr( username, 1, 1 )
2 from all_users au2
3 where rownum = 1;
SUBSTR(USERNAME,1,1)
这里到底发生了什么?为什么到第二个查询时SQL*Plus 报告的列突然变得这么大?要知道,这还是
同一个查询呀!如果查看一下游标共享设置为我们做了些什么,原因就会很清楚了(还会明白其他一些问
题):
游标共享会删除查询中的信息。它找到每一个直接量(literal),包括内置求子串函数(substr)的
参数,直接量就是我们使用的常量。它把这些直接量从查询中删除,并代之以绑定变量。SQL 引擎再也不
知道这个列是长度为1 的子串,它的长度是不确定的。另外,可以看到where rownum = 1 现在也已经绑定。
看上去似乎不错;不过,优化器把一个重要的信息也一并删除了。它不知道“这个查询将获取一行”;现在
只认为“这个查询将返回前N 行,而N 可能是任何值”。实际上,如果加上SQL_TRACE=TRUE 后再运行这些
查询,你会发现每个查询使用的查询计划都不同,它们完成的工作量也大相径庭。考虑以下查询:
------------------------------
B
ops$tkyte@ORA10G> select sql_text from v$sql
2 where sql_text like 'select /* TAG */ %';
SQL_TEXT
-------------------------------------------------------------------------------
select /* TAG */ substr( username, 1, 1 ) from all_users au1 where rownum = 1
select /* TAG */ substr( username, :"SYS_B_0", :"SYS_B_1" ) from all_users au2 where
rownum = :"SYS_B_2"
select /* TAG */ substr( username, 1, 1 )
from all_users au1
where rownu


相关文档:

oracle中如何实现给当前时间加一分钟?

 select   to_char(sysdate   +   1   /   (24   *   60),'yyyy/mm/dd   hh24:mi:ss')   from   dual
SQL>   ;  
      1     select   to_char(sysdate,   'hh:mi:ss')  
      2 &nbs ......

与oracle相关的一些命令

1.登陆系统用户
sqlplus 然后输入系统用户名和密码
登陆别的用户
conn 用户名/密码;
2.创建表空间
create tablespace 空间名
datafile 'c:\空间名' size 15M --表空间的存放路径,初始值为15M
autoExtend on next 10M --空间的自动增长的值是10M
permanent online; --永久使用
3.创建用户
create user s ......

学习《Oracle 9i10g编程艺术》的笔记 (一)

1.位图索引
最近我参与了一个项目。开发人员正饱受性能问题之苦,看上去他们的系统中许多事务在串行
进行。他们的做法不是大家并发地工作,而是每个人都要排一个长长的队,苦苦等着前面的人完成后才能
继续。应用架构师向我展示了系统的体系结构,这是经典的三层方法。他们想让Web 浏览器与一个运行JSP
(JavaServer Pa ......

oracle asm 创建与管理

 
ASM
ASM可以条带化和镜像磁盘,因此可以在数据库备加载的情况下添加、删除磁盘、以及自动平衡IO。
ASM不是一个文件系统,所以无法从操作系统访问ASM存储的文件,对于使用ASM的数据库只能用RMAN进行备份和恢复。
ASM作为单独的ORACLE实例实施,只有ASM运行时数据库才能访问。
一、磁盘组
ASM提供了三中磁盘组类 ......

ORACLE启动

 
ORACLE主要由两部分组成:Instance和Database。Instance是指一组后台进程/线程和一块共享内存区域,而Database是指存储在磁盘上的一组物理文件。
ORACLE数据库的启动主要分3个步骤:
1、启动到nomount状态;
2、启动到mount状态;
3、启动到open状态。
下面分析一下启动的各个步骤:
一、启动到nomount状态
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号