- 博客(28)
- 收藏
- 关注
原创 "NOT NULL"约束对索引的影响
今天在优快云上看到网友提出的一个关于“select distinct col from tabname”这样语句会不会用到col字段上索引的讨论。起初我毫不犹豫的以为,肯定可以使用到索引:全索引扫描。并且还做了一个试验加以验证:SQL> select * from dept; DEPTNO DNAME LOC ---------- -------------- -
2008-07-24 09:26:00
1110
原创 sql调优4:修改sql,去视图
场景: 新物资系统中发现有不少sql使用了视图,从语句上来看,可读性稍好些,但性能很差,经加适当索引后,语句的性能有改观,但仍然存在表扫描的情况。笔者尝试去掉视图后,发现执行计划改善,性能提高。修改前的语句:with temp as( select * from ( select MATERIAL_ID, rownumber() over () as rn
2008-07-23 14:23:00
1071
1
原创 911错不一定是死锁,怎么区分死锁和超时
大家在开发、测试过程中,常见到程序报911这样的错,查看一下帮助:d:/>db2 ? sql0911nSQL0911N因为死锁或超时,所以当前事务已回滚。原因码为 ""。解释:当前工作单元涉及到未解决的对使用对象的争用,因此不得不回滚。原因码如下: 2 由于死锁而导致事务已回滚。 68 由于锁定超时而导致事务已回滚。 72 因为存在与事务中所涉及的 DB2 Data Lin
2008-07-23 14:22:00
4719
原创 sql调优3:调整db2的优化器级别
db2缺省的优化器级别为5,级别越高优化程度越高,大多数情况下为应用程序绑定时指定高级别的优化器会提高性能,但有时因机器硬件或内存分配不合适,高级别的优化会消耗更多的资源,有时会优化报错。本人碰到过几次因优化器不能正常工作反而使sql的性能急剧下降的案例。先转载一下关于db2优化器的官方资料:优化级别 n=0,1,2,3,5,7,9可以在编译 SQL 查询时指定下列其中一个优化器级别: 0
2008-07-23 14:21:00
4253
原创 db2逻辑备份数据库案例export_data
适应场景: 1、 全库备份,可能有多个schema,可能用于跨平台恢复数据 2、 表里含有标识列 3、 大字段的大小不超过32K(超过的在db2move导出文件里会被截断,丢失数据?-- 待证实。)文件结构:export_data --|-- db2move # 文件夹,存放导出的数据文件 |-- ddl
2008-07-23 14:19:00
2005
原创 关于标识列(自增列)的对比试验、使用示例
试验环境: 建表t1、t2分别含有不同类型的标识列id,对比不同点D:/>db2 connect to test user cwgladm using cwglpass 数据库连接信息 数据库服务器 = DB2/NT 8.2.9 SQL 授权标识 = CWGLADM 本地数据库别名 = TESTD:/>db2 select ch
2008-07-23 14:16:00
3014
原创 sql事件监视器运用案例
在209上建立sql语句事件监视器,监视sql语句的执行情况。D:/>db2 create event monitor sql ^More? for statements ^ -- 指定监视器的内容More? where AUTH_ID=WZGLADM ^ -- 指定监视
2008-07-23 14:14:00
826
原创 db2监视表空间使用情况、中断数据库连接进程的脚本示例
1、显示当前数据库表空间的使用情况WINDOWS: d:/>for /f "skip=2 tokens=1,3" %a in (db2 list tablespaces show detail) do @if %a==名称 (echo %a = %b) else (@if %a==总计页数 (echo %a = %b) else (@if %a==高水位标记(页) (ech
2008-07-23 14:13:00
1759
1
原创 sql优化2:db2关于 in (常量...)优化建议
我们在设计程序里,经常碰到需要态组装sql条件的情况,例如,下面是从后台抓取的sql:update MAT_REQPLAN set GATHERFLAG=1 where 1=1and REQPLAN_ID in (select distinct REQPLAN_ID from MAT_MATERIAL where MATERIAL_ID in (0,2
2008-07-23 14:08:00
3318
原创 查看执行计划 db2expln 使用说明
单个语句:d:/>db2expln -d wz20901 -u wzgladm wzglpass -t -q "update MAT_MATERIAL set GATHERPLAN_ID=null where GATHERPLAN_ID =2005178 or GATHERPLAN_ID=32 "DB2 Universal Database Version 8.1, 5622-044 (
2008-07-23 14:06:00
6428
原创 查看锁等待情况 db2pd 使用说明
1、查看锁等待情况 db2pd -db [ dbname ] -locks 主要关注Sts列,其中W代表Waitingd:/>db2pd -d test -locksDatabase Partition 0 -- Database TEST -- Active -- Up 0 days 00:02:21 -- Date 2008-06-24 16:11:26Locks:A
2008-07-23 14:04:00
6292
原创 死锁监视器db2detaildeadlock使用说明
1、死锁事件监控器是db2每个数据库缺省建立的监视器,写文件的形式,存放路径在db2event目录下,如:windows:F:/>cd F:/DB2_WZGL/NODE0000/SQL00001/DB2EVENT/db2detaildeadlockF:/>db2 set event monitor db2detaildeadlock state=0DB20000I SQL 命令成功完成。F
2008-07-23 14:03:00
6051
原创 备忘:同一服务器如何进入不同的db2实例,即如何切换实例?
UNIX: 直接切换实例用户,su - instxxx# su - inst14$ db2 get instance The current database manager instance is: inst14$$ exit# su - inst15$ db2 get instance The current database manager instance is: inst15$
2008-07-23 14:02:00
2443
原创 案例分析2:为什么db2频现“锁等待”或“911”错误
为什么db2频现“锁等待”或“911”错误 大家都知道,多个事务同时更新同一个数据行时必定要发生锁等待。虽然这个是造成锁等待或锁超时的原因,但不是全部。有不少同事在开发过程中发现这样的问题:自己只做一个根据主键update语句,就更新一行,且确知没有别人在更新这行,为什么语句迟迟没反应,想死锁了一样。本人通过几次尝试和试验发现了“秘密”。即db2的严重影响并发性能的地方:1、无索引,r
2008-07-23 14:00:00
4233
原创 sql优化1:分页查询
sql优化1:分页查询测试环境:192.168.0.209上的wzgltest数据库工具:db2命令行样表:PROJECT_MATERIALD:/>db2 select count(*) from PROJECT_MATERIAL with ur1----------- 1148372 1 条记录已选择。场景: 分页显示该表的所有内容,每页显示10行记录。===========
2008-07-23 13:58:00
1462
原创 试验:db2 导入数据选项 " replace " 会保留没被覆盖的数据吗?
思想:建一个表,插入部分数据,导出后,再插入不同的数据,导入加“replace”选项,观察db2move、import导入数据后的结果,过程比较简单,上代码:1、建表、插入数据:d:/>db2 connect to test user cwgladm using cwglpass 数据库连接信息 数据库服务器 = DB2/NT 8.2.9 SQL 授权标识
2008-07-23 13:52:00
2928
原创 关于游标cursor、游标引用 ref cursor
游标 cursor:查询返回的结果集 1、静态游标,与定义好的查询关联; a、显式游标 type t_type is record( -- 定义保存结果的类型 pk t.pk%type ,name1 t.name1%
2008-07-23 13:50:00
989
原创 逻辑备份案例:windows平台oracle导数据的逻辑备份脚本,备份后自动压缩 rar
这是201服务器上目前在用的定时备份脚本,共两个文件auto_bakcup_oracle.bat、parfile.txt 文件内容如下:auto_backup_oracle.bat内容:@echo offrem .rem .rem ======================================================================rem .rem 这是一
2008-07-23 13:35:00
1063
原创 案例分析1:为什么强烈建议所有的外键要加索引
环境准备:建主从表,主表dept,子表emp及主外键约束======================================================================chennan@cwgl94>CREATE TABLE DEPT AS SELECT * FROM SCOTT.DEPT;表已创建。chennan@cwgl94>CREATE
2008-07-23 13:31:00
1021
原创 Oracle显示用户所有系统权限
用户的系统权限,有的是直接赋予的,有的是通过角色间接赋予的。而角色也是可以授予直接系统权限和其他角色权限的,这样,要查用户的系统权限,就要查询出系统权限和所有角色的系统权限。下面就是运用Oracle的层次化查询来完成这个功能的。脚本show_sys_privs.sql内容如下,带一个参数(username):SET VERIFY OFFdefine v1=&1select privilege
2008-07-23 13:29:00
2438
原创 Oracle阻塞(锁等待)查询
主要查询v$lock、v$session视图。v$lock中的id1,id2为锁定的对象标识,block为阻塞数目。脚本show_blocker.sql相关代码如下:col block_msg for a80select c.terminal|| (||a.sid||,||c.serial#||) is blocking ||b.sid block_
2008-07-23 13:27:00
2585
原创 学习笔记:关于PL/SQL 集合类型record、pl/sql表、varray、nested table
record:该集合可以存储一对多的标量属性。pl/sql表:是pl/sql代码中的“表”,只存在应用运行期间(内存里),类似“数组”,稀疏的,大小可以动态增长,可以有负下标,但不能存储在数据库表中。varray:与pl/sql区别是可以在表列中存储,是密集的,不能删除单独记录,不能有负下标,固定大小的集合。nested table:可以在表列中存储,稀疏的,可以删除单独记录,不能有负下标,大小可
2008-07-23 13:16:00
1324
原创 “被误删除的package能恢复吗”logmnr案例:恢复被drop的包
建表test、建package:mypackSQL> conn chennan/xxxx已连接。SQL>SQL> create table test(id number primary key,name varchar2(20));表已创建。SQL> ed已写入文件 afiedt.buf 1 begin 2 for x in 1 .. 10 loop 3 insert into t
2008-07-23 12:20:00
1917
原创 Oracle分析函数学习笔记3
环境:windows 2000 server + Oracle8.1.7 + sql*plus目的:以oracle自带的scott模式为测试环境,主要通过试验体会分析函数的用法。类似 sum(...) over ... 的使用1.原表信息:SQL> break on deptno skip 1 -- 为效果更明显,把不同部门的数据隔段显示。SQL> select deptno,ename,sal
2005-08-05 16:47:00
1378
1
原创 Oracle分析函数学习笔记2
环境:windows 2000 server + Oracle8.1.7 + sql*plus目的:以oracle自带的scott模式为测试环境,主要通过试验体会分析函数的用法。2.rank()、dense_rank() 的使用原表信息:SQL> break on deptno skip 1 -- 为效果更明显,把不同部门的数据隔段显示。SQL> select deptno,ename,sal
2005-08-04 16:41:00
938
原创 Oracle分析函数学习笔记1
环境:windows 2000 server + Oracle8.1.7 + sql*plus目的:以oracle自带的scott模式为测试环境,主要通过试验体会分析函数的用法。1.row_number() 的使用原表信息:SQL> break on deptno skip 1 -- 为效果更明显,把不同部门的数据隔段显示。SQL> select deptno,ename,sal 2 fro
2005-08-04 16:39:00
900
原创 utl_file使用总结
环境:windows 2000 server + oracle 8.1.71.读文件举例:-- 环境 windows 2000 server + oracle 8.1.7-- 先在 init.ora中的参数utl_file_dir-- 例: utl_file_dir=(d:/test,e://,e:/share)-- set serveroutput on size 1000000 format
2005-08-03 20:25:00
1316
原创 不知道用户口令情况下,如何把表建在指定模式下?
主要是用到"alter user xxx identified by values yyyyy"示例如下:SQL> conn system/manager@mydb已连接。SQL> show userUSER 为"SYSTEM"SQL> select password from dba_users where username=USER1;PASSWORD-------------------
2005-07-30 14:40:00
1150
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人