Chinaunix首页 | 论坛 | 博客
  • 博客访问: 542399
  • 博文数量: 92
  • 博客积分: 980
  • 博客等级: 准尉
  • 技术积分: 1426
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-25 20:34
文章分类

全部博文(92)

文章存档

2015年(3)

2014年(15)

2013年(27)

2012年(38)

2011年(9)

分类:

2012-11-25 16:37:36

1、查看现在数据库的临时表空间
 
可以看到,临时表空间中,只有一个页,即32k大小;但是,是sms类型,会自动扩展;
 
2、在系统临时表空间创建一张临时表:
系统的临时表空间,不允许建立临时表 
没成功;
 
3、创建一个用户临时表空间:
 
查看建立结果:
 
 
 
通过对比可以发现,同样是临时表空间,但是手动建立的临时表空间时dms类型的;
而且,发现,如果不指明是用户临时表空间的话,建立的就是系统临时表空间;系统临时表空间不允许建立临时表:
 
重新建立用户临时表空间
删除手动建立的系统临时表空间tbs_temp:
 
查看删除结果:
 
查看操作系统文件:
 
建立用户临时表空间:
 
查看建立结果:
 
3、在自己建立的临时表空间tbs_temp上建立临时表:
 
由此可见,建立成功;
 
4、临时表不会被syscat编目表空间记录:
 
 
5、使用临时表进行操作
V9.5时,DB2的临时表是基于会话的,且在会话之间是隔离的。当会话结束时,临时表的数据被删除,临时表被隐式卸下。对临时表的定义不会在SYSCAT.TABLES中出现;且只能使用declare进行临时表的声明;
V9.7后,像创建普通表一样创建临时表,然后可以直接在存储过程里面使用该临时表,Oracle中的临时表和其他数据库的临时表是相似的,在每个数据库中创建临时表一次,不必在数据库中的每个存储过程中创建一次。临时表总是存在的,他们作为对象存在于数据字典中,并且总是保持为空,直到有会话在其中放入数据。如果不手动Drop 表,临时表还是在数据字典中存在的。(IBM的db2 v9.7现在也是朝这个方向发展的即CGTT)。
 
6、V9.1时很多临时表是正式表的原因
因为,进行数据处理的表,其定义需要一直存在(V9.7之前,DB2不支持),所以,不能用真正的基于session的临时表。




阅读(2902) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~