设为首页收藏本站language 语言切换
查看: 3596|回复: 14
收起左侧

[题库] Oracle OCP认证题库解析(9)

  [复制链接]
发表于 2012-2-2 17:22:14 | 显示全部楼层 |阅读模式
Which three statements are correct about temporary tables? (Choose three.)
A) Indexes and views can be created on temporary tables.
B) Both the data and the structure of temporary tables can be exported.
C) Temporary tables are always created in a user's temporary tablespace.
D) The data inserted into a temporary table in a session is available to other sessions.
E) Data manipulation language (DML) locks are never acquired on the data of temporary tables.
Answer: A,C,E
ORACLE数据库除了可以保存永久表外,还可以建立临时表temporary tables。这些临时表用来保存一个会话(SESSION)的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候,临时表的数据自动清空,但是临时表的结构以及元数据还存储在用户的数据字典中。
Oracle临时表分为 会话级临时表 和 事务级临时表。
会话级临时表是指临时表中的数据只在会话生命周期之中存在,当用户退出会话结束的时候,Oracle自动清除临时表中数据。
事务级临时表是指临时表中的数据只在事务生命周期中存在。当一个事务结束(commit or rollback),Oracle自动清除临时表中数据。
临时表中的数据只对当前Session有效,每个Session都有自己的临时数据,并且不能访问其它Session的临时表中的数据。因此,临时表不需要DML锁。
临时表的数据存储在临时表空间中,这一点很显然,但是临时表在DBA_TABLES视图中显示的表空间为空
SQL> select TABLE_NAME,TABLESPACE_NAME,TEMPORARY from user_tables;
TABLE_NAME                     TABLESPACE_NAME                T
------------------------------ ------------------------------ -
CONS_TEST                      TBS_1                          N
CONS_TEST1                     TBS_1                          N
STUDENT                        TBS_1                          N
GRADE                          TBS_1                          N
TEMP_TAB                                                      Y
原因是由于临时表可以被多个用户访问,而不同用户的默认临时表空间的设置可能不同,这就意味着临时表的多个临时段可能存储在多个临时表空间中,所以临时表对应的表空间信息为空。
实验:
1)事务级临时表
SQL> create global temporary table temp_tab on commit preserve rows as select * from cons_test1;
SQL> select * from temp_tab;
         X
----------
         1
         2
SQL> commit;
Commit complete.
事务结束,数据依然还在
SQL> select * from temp_tab;
         X
----------
         1
         2
退出会话,自动清除临时表中数据。
SQL> conn test/oracle
Connected.
SQL> select * from temp_tab;
no rows selected
2) 会话级临时表
SQL> create global temporary table temp_tab2 ( x INT ) on commit delete rows ;
SQL> insert into temp_tab2 values (2);
SQL> select * from temp_tab2;
         X
----------
         2
事务结束,清除临时数据
SQL> commit;
Commit complete.
SQL> select * from temp_tab2;
no rows selected
3)建索引和视图
SQL> create index tem_ind on temp_tab (x);
Index created.
SQL> create view tem_view as select * from temp_tab;
View created.

发表于 2013-4-26 19:21:34 | 显示全部楼层
沙发 2013-4-26 19:21:34 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-5-19 18:46:44 | 显示全部楼层
板凳 2013-5-19 18:46:44 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-6-9 10:13:05 | 显示全部楼层
地板 2013-6-9 10:13:05 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-10-17 23:42:19 | 显示全部楼层
收藏起来了,感谢楼主
5# 2013-10-17 23:42:19 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2013-11-11 09:50:58 | 显示全部楼层
不明觉厉
6# 2013-11-11 09:50:58 回复 收起回复
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2014-1-14 01:06:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
8# 2014-1-14 01:06:36 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2014-10-15 11:42:33 | 显示全部楼层
太棒了,感谢楼主太棒了,感谢楼主太棒了,感谢楼主
11# 2014-10-15 11:42:33 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2014-10-21 12:46:48 | 显示全部楼层
学学一下,加油
12# 2014-10-21 12:46:48 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-6 19:10 , Processed in 0.081680 second(s), 21 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表