ArcSDE for Oracle表空间管理——暂时(TEMP)表空间
Oracle暂时表空间主要用来做查询和存放一些缓冲区数据。暂时表空间消耗的主要原因是须要对查询的中间结果进行排序。
重新启动数据库能够释放暂时表空间,假设不能重新启动实例,而一直保持问题sql语句的运行,temp表空间会一直增长。直到耗尽硬盘空间。
下面操作会占用大量的temporary:
1、用户运行imp/exp 导入导出操作时,会使用大量的temporary段
2、用户在Create 或者 rebuild index时
3、运行create table ...... as 语句时
4、移动用户下的数据到别的表空间时
5、用户运行排序Order by 或 group by
6、用户运行Distinct 操作
7、用户运行Union 或 intersect 或 minus
8、用户运行Sort-merge joins
9、用户运行analyze
对ArcGIS用户来说,进行Oracle逻辑迁移、重建空间索引、空间数据与属性数据的关联等操作都会使用到Oracle的暂时表,特别是假设有数据量比較大的空间数据重建空间索引,会使用PGA内存,假设该内存资源不足就会使用暂时表空间资源,所以暂时表空间的管理对用户来说也是比較重要的。
普通情况下,创建Oracle库之后默认有一个暂时表空间TEMP,默认大小是30MB,在创建数据库用户时,都会为该用户设置一个暂时表空间,那么该用户所做的以上某些操作自然会在占用暂时表空间的资源。那么假设是OLTP系统,多个用户都在进行不同的操作,势必会带来暂时表空间资源的占用。所以非常多用户能够创建了多个表空间,依据用户业务类型分配对应的暂时表空间大小。对于大型操作频繁(大型查询,大型分类查询,大型统计分析等),应指定单独的比較大容量的暂时表空间,当然我们也能够创建暂时表空间组来让Oracle自己主动合理分配暂时表空间资源。
暂时表空间组就是创建多个暂时表空间数据文件,然后将这些暂时表空间组成一个暂时表空间组,设置Oracle的默认暂时表空间,那么创建用户设置的暂时表空间也为该暂时表空间组,让Oracle自己主动管理暂时表空间资源。
下面为oracle官方帮助:
A tablespace group enables a user to consume temporary space from multiple tablespaces. Using a tablespace group, rather than a single temporary tablespace, can alleviate problems caused where one tablespace is inadequate to hold the results of a sort, particularly on a table that has many partitions. A tablespace group enables parallel execution servers in a single parallel operation to use multiple temporary tablespaces.
----------------------------------------------------------------------------------
版权全部,文章同意转载,但必须以链接方式注明源地址,否则追究法律责任!
Blog: http://blog.csdn.net/linghe301
----------------------------------------------------------------------------------
下面就实践一下创建暂时表空间组
查明默认的暂时表空间信息
SQL> select tablespace_name from dba_tablespaces; TABLESPACE_NAME
------------------------------
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
EXAMPLE
SDE
ESRI
ESRI2
TEST 已选择10行。
创建多个暂时表空间数据文件
SQL> create temporary tablespace temp2 tempfile 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\temp02.dbf' size 10M; 表空间已创建。 SQL> create temporary tablespace temp3 tempfile 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\temp03.dbf' size 10M; 表空间已创建。 SQL> create temporary tablespace temp4 tempfile 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\temp04.dbf' size 10M; 表空间已创建。 SQL> select name from v$tempfile; NAME
--------------------------------------------------------------------------------
E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP01.DBF
E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP02.DBF
E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP03.DBF
E:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP04.DBF
加入暂时表空间组
SQL> alter tablespace temp tablespace group temp_group; 表空间已更改。 SQL> alter tablespace temp2 tablespace group temp_group; 表空间已更改。 SQL> alter tablespace temp3 tablespace group temp_group; 表空间已更改。 SQL> alter tablespace temp4 tablespace group temp_group; 表空间已更改。 SQL> select * from dba_tablespace_groups; GROUP_NAME TABLESPACE_NAME
------------------------------ ------------------------------
TEMP_GROUP TEMP
TEMP_GROUP TEMP2
TEMP_GROUP TEMP3
TEMP_GROUP TEMP4
设置暂时表空间为暂时表空间组
SQL> alter database default temporary tablespace temp_group; 数据库已更改。 SQL> select temporary_tablespace from dba_users where username='SDE'; TEMPORARY_TABLESPACE
------------------------------
TEMP_GROUP
----------------------------------------------------------------------------------
版权全部,文章同意转载,但必须以链接方式注明源地址,否则追究法律责任!
Blog: http://blog.csdn.net/linghe301
----------------------------------------------------------------------------------
关于暂时表空间的问题:
非常多用户会发如今使用暂时表空间时,假设操作任务完毕之后,系统不会自己主动清理暂时表空间的资源。
能够通过Oracle11g新增的DBA_TEMP_FREE_SPACE视图来查看暂时表空间的占用率和空暇率
SQL> select * from DBA_TEMP_FREE_SPACE; TABLESPACE_NAME TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE
------------------------------ --------------- --------------- ----------
TEMP 32497664 2088960 31457280
TEMP4 10485760 2097152 9437184
TEMP3 10485760 4194304 7340032
TEMP2 10485760 3145728 9437184 SQL> select allocated_space*100/tablespace_size as used from DBA_TEMP_FREE_SPACE; USED
----------
6.42803126
20
40
30
假设TEMPORARY TABLESPACE的类型是TEMPORARY,TEMPORARY TABLESPACE里的使用过的空间是不会被释放的,除非shutdown。
假设使用TEMPORARY类型的暂时表空间,数据库刚刚startup后,第一个使用TEMPORARY tablespace进行排序的statement会创一个建sort segment,这个segment不会被释放,除非数据库restart,能够用V$SORT_SEGMENT察看当前的已分配了的sort segments地使用情况。
假设暂时表空间的类型为PERMANENT,SMON会在process不再使用暂时段之后去做清理。
假设是用PERMANENT tablespace作排序,由smon负责在statement结束之后删除被创建的temporary segments,这样空间能够被其他对象使用。
考虑到性能原因,当一个temporary extent被分配的时候,tablespace会做一个标记,操作结束之后这个extent不会被释放或回收,对应的,这个extent被简单的标志为free,对于后面的sort操作是available的,这样就省去了系统分配和回收temporary extent的负载。建议都是用暂时类型。
当然,在Oracle11g版本号用户也能够使用ALTER TABLESPACE SHRINK 命令对暂时表空间为释放的资源进行Shrink。
----------------------------------------------------------------------------------
版权全部,文章同意转载,但必须以链接方式注明源地址,否则追究法律责任!
Blog: http://blog.csdn.net/linghe301
----------------------------------------------------------------------------------
參考Oracle帮助文档:
Shrinking a Locally Managed Temporary Tablespace
Large sort operations performed by the database may result in a temporary tablespace growing and occupying a considerable amount of disk space. After the sort operation completes, the extra space is not released; it is just marked as free and available for reuse. Therefore, a single large sort operation might result in a large amount of allocated temporary space that remains unused after the sort operation is complete. For this reason, the database enables you to shrink locally managed temporary tablespaces and release unused space.
You use the SHRINK SPACE clause of the ALTER TABLESPACE statement to shrink a temporary tablespace, or the SHRINK TEMPFILE clause of the ALTER TABLESPACE statement to shrink a specific temp file of a temporary tablespace. Shrinking frees as much space as possible while maintaining the other attributes of the tablespace or temp file. The optional KEEP clause defines a minimum size for the tablespace or temp file.
Shrinking is an online operation, which means that user sessions can continue to allocate sort extents if needed, and already-running queries are not affected.
The following example shrinks the locally managed temporary tablespace lmtmp1 while ensuring a minimum size of 20M.
ALTER TABLESPACE lmtemp1 SHRINK SPACE KEEP 20M;
The following example shrinks the temp file lmtemp02.dbf of the locally managed temporary tablespace lmtmp2. Because the KEEP clause is omitted, the database attempts to shrink the temp file to the minimum possible size.
ALTER TABLESPACE lmtemp2 SHRINK TEMPFILE '/u02/oracle/data/lmtemp02.dbf';
默认能够不带KEEP參数,假设忽略KEEP 子句,则仅仅要满足其他存储属性,数据库就会尽可能尝试收缩表空间/暂时文件(全部当前使用的区的总空间),假设使用KEEP參数建议KEEP大小不能超过所操作暂时表空间的最大值。假设该表空间对象參与了暂时表空间组也适用于该命令。
注意:暂时表空间过大或者过小都会对数据库性能有直接影响,所以建议在Shrink暂时表空间都是用KEEP參数。
參考文献:
http://blog.chinaunix.net/uid-21267700-id-3295645.html
http://blog.csdn.net/tianlesoftware/article/details/8225395
----------------------------------------------------------------------------------
版权全部,文章同意转载,但必须以链接方式注明源地址,否则追究法律责任!
Blog: http://blog.csdn.net/linghe301
----------------------------------------------------------------------------------
ArcSDE for Oracle表空间管理——暂时(TEMP)表空间的更多相关文章
- SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码)
SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码) 概述: 表由行和列组成,每个表都必须有个表名. SQL CREATE TABLE 语法 CREATE TABLE tabl ...
- oracle 表的管理(数据类型,表创建删除,数据CRUD 操作)
表名和列的命名规则
- ORACLE表空间管理维护
1:表空间概念 在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段.区.块等逻辑结构.从物理结构上看是放在数据文件中.一个表空间可由多个数据文件组成. 如下图所示, ...
- Oracle 临时表空间 temp表空间切换
一.TEMP表空间 临时表空间主要用途是在数据库进行排序运算.管理索引.访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理.当oracle里需要用到sort的时候,PGA中sort_ar ...
- oracle 大表删除数据后,回收空间的问题。
在oracle中由于表结构设计不合理或者需要清楚老数据的时候,经常需要对大表数据进行清理. 一般有一下几种方法: 1. 删除大部分数据,留下小部分数据.我们可以把需要保留的数据转移到别的表,然后再把大 ...
- Confluence 6 管理和恢复空间管理权限
管理和恢复空间管理权限 可能有些空间的空间管理权限被系统的超级管理删除掉了.这样的空间是没有任何空间管理员的,用户和用户组都不能对空间进行管理.只有 Confluence 管理员权限的用户可以删除一个 ...
- mysql中DDL库和表的管理
#DDL /* 数据定义语言 库和表的管理 一.库的管理 创建.修改.删除 二.表的管理 创建.修改.删除 创建:create 修改:alter 删除:drop */ #一.库的管理 #1.库的创建 ...
- Oracle Temp 表空间切换
一.TEMP表空间作用 暂时表空间主要用途是在数据库进行排序运算.管理索引.訪问视图等操作时提供暂时的运算空间,当运算完毕之后系统会自己主动清理.当 oracle 里须要用到 sort 的时候. PG ...
- Oracle Temp表空间切换
来源于: http://www.2cto.com/database/201507/418564.html 一.TEMP表空间作用 临时表空间主要用途是在数据库进行排序运算.管理索引.访问视图等操作时 ...
随机推荐
- python学习之路-1 python基础操作
本篇所涉及的内容 变量 常量 字符编码 用户交互input 格式化字符串 python的缩进规则 注释 初始模块 条件判断 循环 变量 变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中 ...
- ECMAScript 6新特性介绍
箭头函数 箭头函数使用=>语法来简化函数.在语句结构上和C#.Java 8 和 CoffeeScript相似,支持表达式和函数体. . =>`操作符左边为输入的參数.而右边则是进行的操作以 ...
- keil将程序装入外部FLASH具体解释
在实际项目中,常常出现芯片的内部FLASH空间不够的情况,这就须要将程序分一部分装到外部FLASH中. 为了让大家能少走些弯路,在这里把我在这当中遇到的一些问题和经验教训给大家分享一下. 仅供參考,假 ...
- php字符串标点等字符截取不乱吗 封装方法
方法一: /** +---------------------------------------------------------- * 功能:字符串截取指定长度 * leo.li hen ...
- .Net+EF连接Oracle 10、11 开发,ODAC安装配置与使用详解
Oracle数据访问组件 (ODAC) 全称:Oracle Data Access Components 优点:由于微软在.net framework4中会将System.Data.OracleCl ...
- 创建一个简单的配置android编译环境的脚本
由于有多个Android项目,每个项目配置编译环境时选项都不同,所以尝试写一个sh脚本来完成这个功能. 首先进入bin文件夹,新建一个文件enbuild $ cd ~/bin $ touch ...
- ssh localhost无密码登录设置
亲测... ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys ...
- GridView+ZedGraph【转】
edgraph图表控件的强大功能令人出乎意料,与OWC相比我想应该毫不逊色,近来需求要求作出相关数据统计,不想使用BI这类的强大东西,所以搜索到 了免费的开源的Zedgraph控件.使用起来也非常方便 ...
- java菜鸟篇<一> 对JsonObject 和JsonArray知识点理解
今天遇到从前台拿值(json数组格式),从request里边取值,然后经过一系列的处理方式,在用request返回去 1.先把request里的值赋值给String string类型的变量 2.因为前 ...
- zeromq源码分析笔记之准备(0)
zeromq这个库主要用于进程通信,包括本地进程.网络通信,涉及到一些基础知识,主要包括管道通信,socket编程的内容,反应器模式(使用IO多路复用实现),无锁队列这几块比较重要的部分,下面的几个链 ...