1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Oracle 11g中Temp临时表空间 文件的新特性

Oracle 11g中Temp临时表空间 文件的新特性

时间:2023-07-14 18:53:37

相关推荐

Oracle 11g中Temp临时表空间 文件的新特性

数据库|mysql教程

Oracle临时表空间,Oracle 11g新特性,Orac

数据库-mysql教程

安卓问卷单选样式源码,vscode遮挡其他窗口,ubuntu怎样使用,tomcat页面不过期,爬虫规律,php用浏览器打开,湖北教育行业seo推广,帝国网站主题模板,中国分类信息网模板lzw

临时表空间是Oracle体系结构中比较特殊的结构。通常情境下,数据库使用者只需要设置对应的临时表空间(到用户),临时段分配等工

相册编辑定制源码,vscode代码整理格式,Ubuntu在线体,看tomcat的位数,sqlite3 工具包,泥土里很多小黑爬虫是什么虫,php打印函数,和县谷歌seo营销公司,手机网站二级导航菜单,帝国cms 列表模板文件lzw

自助报价系统源码,ubuntu退出救援模式,tomcat相对路径报错,java爬虫线程,怎样快速学会php所有函数,页面优化seolzw

临时表空间是Oracle体系结构中比较特殊的结构。通常情境下,数据库使用者只需要设置对应的临时表空间(到用户),临时段分配等工作都是系统自动完成。当临时数据不需要时,Oracle后台进程SMON也会负责将临时段回收。

在Oracle的备份恢复体系中,临时文件的地位比较低。在进行备份动作时,RMAN都不会进行临时文件恢复。在恢复启动过程中,如果发现临时文件不存在,通常Oracle也会自动将临时文件创建出来。

————————————–分割线 ————————————–

Oracle 表空间管理和优化

使用RMAN进行表空间TSPITR自动恢复

ORA-3233表空间相关问题处理

Oracle查看数据库表空间使用情况sql语句

Oracle 表空间使用率监控

————————————–分割线 ————————————–

1、Temp漫谈

Oracle临时表空间主要充当两个主要作用:临时表数据段分配和排序汇总溢出段。我们创建的临时表,在使用过程中,会有大量的数据段结构的分配。这个分配就是利用临时表空间。

排序汇总溢出的范围比较广泛。我们在SQL语句中进行order by/group by等操作,首先是选择PGA的内存sort area、hash area和bitmap area。如果SQL使用排序空间很高,单个server process对应的PGA不足以支撑排序要求的时候,临时表空间会充当排序段的数据写入。这样排序动作会从内存过程退化为外存储过程。

两个现象:如果我们的Temp表空间文件设置比较小,并且设置为不可自动拓展。同时我们又希望给一个很大数据表加索引,经常会遇到:create index语句长时间运行之后报错,说Temp表空间不能拓展,操作被停止。索引叶子节点是有序的,创建索引的过程也就伴随着数据库的排序动作。

另一个现象:如果我们的内存设置不合理,SQL经常包括很多“无意义”的“大排序”。这样会发现我们的Temp空间消耗比较大,一些SQL性能抖动比较明显。

合理的设置Temp空间管理策略,是应用系统架构的一个重要环节。

2、给临时表指定表空间

Oracle中,用户schema和表空间存储结构对应关系是很灵活的。如果用户有空间配额(Quota),我们是可以在schema中创建任何表空间的数据表的,是可以把对象放置在任何的表空间里面。

但是对于11g之前,,Temp表空间并不是这样的。我们创建用户之后,需要制定出这个用户schema对应的临时表空间。如果我们不指定,Oracle会选择系统默认临时表空间(通常是temp)作为这个用户的临时表空间。

至此以后,这个用户所有的临时段都是在这个临时表空间上进行分配。我们是没有能力指定某个临时表分配在其他临时表空间里面的。

我们到11g之后,Oracle提供了这样的自由。

SQL> select * from v$version;

BANNER

—————————————————–

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – Production

PL/SQL Release 11.2.0.3.0 – Production

CORE 11.2.0.3.0 Production

TNS for Linux: Version 11.2.0.3.0 – Production

NLSRTL Version 11.2.0.3.0 – Production

当前sys用户的默认表空间为TEMP。

SQL> select DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE from dba_users where username=’SYS’;

DEFAULT_TABLESPACE TEMPORARY_TABLESPACE

—————————— ——————————

SYSTEM TEMP

此时,数据库中包括两个临时表空间。

SQL> select * from dba_temp_free_space;

TABLESPACE_NAME TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE

————— ————— ————— ———-

TEMP 481296384481296384 480247808

TEMPTEST 5368709120 1048576 5367660544

我们可以创建出一个不属于TEMP默认临时表空间的临时表。

SQL> create global temporary table t_temp tablespace temptest as select * from t where 1=0;

Table created

此后的临时段分配,都是在temptest表空间上进行的。

SQL> insert into t_temp select * from t;

19360512 rows inserted

SQL> select * from dba_temp_free_space;

TABLESPACE_NAME TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE

————— ————— ————— ———-

TEMP 481296384481296384 480247808

TEMPTEST 5368709148146944 3120562176

那么,是不是和数据表一样,支持move操作呢?

SQL> create global temporary table t_temp tablespace temp as select * from dba_objects where 1=0;

create global temporary table t_temp tablespace temp as select * from dba_objects where 1=0

ORA-14451: unsupported feature with temporary table

看来,目前版本还没有支持move操作的临时表。

更多详情见请继续阅读下一页的精彩内容:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。