ORACLE临时表空间的总结分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。临时表空间概念临时表空间用来管理数据库排序操作以及用于存储临时表、中间排序结果等临时对象,当ORACLE里需要用到SORT的时候,并且当PGA中sort_area_size大小不够时,将会把数据放入临时表空间里进行排序。像数据库中一些操作: CREATE INDEX、 ANALYZE、SELECT DISTINCT、ORDER BY、GROUP BY、 UNION ALL、 INTERSECT、MINUS、SORT-MERGE JOINS、HASH JOIN等都可能会用到临时表空间。当操作完成后,系统会自动清理临时表空间中的临时对象,自动释放临时段。这里的释放只是标记为空闲、可以重用,其实实质占用的磁盘空间并没有真正释放。这也是临时表空间有时会不断增大的原因。临时表空间存储大规模排序操作(小规模排序操作会直接在RAM里完成,大规模排序才需要磁盘排序Disk Sort)和散列操作的中间结果.它跟永久表空间不同的地方在于它由临时数据文件(temporary files)组成的,而不是永久数据文件(datafiles)。临时表空间不会存储永久类型的对象,所以它不会也不需要备份。另外,对临时数据文件的操作不产生redo日志,不过会生成undo日志。创建临时表空间或临时表空间添加临时数据文件时,即使临时数据文件很大,添加过程也相当快。这是因为ORACLE的临时数据文件是一类特殊的数据文件:稀疏文件(Sparse File),当临时表空间文件创建时,它只会写入文件头部和最后块信息(only writes to the header and last block of the file)。它的空间是延后分配的.这就是你创建临时表空间或给临时表空间添加数据文件飞快的原因。另外,临时表空间是NOLOGGING模式以及它不保存永久类型对象,因此即使数据库损毁,做Recovery也不需要恢复Temporary Tablespace。临时表空间信息查看实例的临时表空间SQL1:SQL2:查看临时表空间信息:官方文档关于V$TEMPFILE的介绍如下ColumnDatatypeDescriptionFILE#NUMBERAbsolute file numberCREATION_CHANGE#NUMBERCreation System Change Number (SCN)CREATION_TIMEDATECreation timeTS#NUMBERTablespace numberRFILE#NUMBERRelative file number in the tablespaceSTATUSVARCHAR2(7)Status of the file (OFFLINE|ONLINE)ENABLEDVARCHAR2(10)Enabled for read and/or writeBYTESNUMBERSize of the file in bytes (from the file header)BLOCKSNUMBERSize of the file in blocks (from the file header)CREATE_BYTESNUMBERCreation size of the file (in bytes)BLOCK_SIZENUMBERBlock size for the fileNAMEVARCHAR2(513)Name of the fileDBA_TEMP_FILES describes all temporary files (tempfiles) in the database.ColumnDatatypeNULLDescriptionFILE_NAMEVARCHAR2(513)免费主机域名Name of the database temp fileFILE_IDNUMBERFile identifier number of the database temp fileTABLESPACE_NAMEVARCHAR2(30)NOT NULLName of the tablespace to which the file belongsBYTESNUMBERSize of the file (in bytes)BLOCKSNUMBERSize of the file (in Oracle blocks)STATUSCHAR(9)File status: AVAILABLERELATIVE_FNONUMBERTablespace-relative file numberAUTOEXTENSIBLEVARCHAR2(3)Indicates whether the file is autoextensible (YES) or not (NO)MAXBYTESNUMBERmaximum size of the file (in bytes)MAXBLOCKSNUMBERMaximum size 免费主机域名of the file (in Oracle blocks)INCREMENT_BYNUMBERDefault increment for autoextensionUSER_BYTESNUMBERSize of the useful portion of the file (in bytes)USER_BLOCKSNUMBERSize of the useful portion of the file (in Oracle blocks)这四列中, BYTES , BLOCKS 显示的是临时文件有多少BYTE大小,包含多少个数据块。而USER_BYTES,USER_BLOCKS是可用的BYTE和数据块个数。因此,我们可以知道临时文件中有一部分是被系统占用的,大概可以理解成文件头信息,这一部分大小是128个block,如下图所示:管理临时表空间创建临时表空间下面是一个简单的创建临时表空间的例子,具体很多细节可以参考官方文档,这里省略,不做过多介绍。http://docs.oracle.com/cd/B10501_01/server.920/a96540/statements_75a.htmhttp://docs.oracle.com/cd/B28359_01/server.111/b28310/tspaces002.htm#ADMIN11366增加数据文件当临时表空间太小时,就需要扩展临时表空间(添加数据文件、增大数据文件、设置文件自动扩展);有时候需要将临时数据文件分布到不同的磁盘分区中,提升IO性能,也需要通过删除、增加临时表空间数据文件。删除数据文件例如,我想删除临时表空间下的某个文件,那么我们有两种方式删除临时表空间的数据文件。方法1:注意:这种删除临时表空间的写法会将对应的物理文件删除。方法2:注意:删除临时表空间的临时数据文件时,不需要指定INCLUDING DATAFILES 选项也会真正删除物理文件,否则需要手工删除物理文件。调整文件大小如下例子,需要将临时数据文件从1G大小调整为2G文件脱机联机默认临时表空间并不能脱机,否则会报错,如下所示SQL> ALTER TABLESPACE TEMP OFFLINE;ALTER TABLESPACE TEMP OFFLINE*ERROR at line 1:ORA-03217: invalid option for alter of TEMPORARY TABLESPACE设置文件自动扩展移动重命名文件例如,我需要将/u01/app/oracle/oradata/GSP/temp4.dbf这个文件重命名为/u01/app/oracle/oradata/GSP/temp04.dbf1: 将临时表空间的临时文件脱机2:移动或重命名相关的临时文件3: 使用脚本ALTER DATABASE RENAME FILE4: 将临时表空间的临时文件联机删除临时表空间注意:不能删除当前用户的默认表空间,否则会报ORA-12906错误如果需要删除某一个默认的临时表空间,则必须先创建一个临时表空间,然后指定新创建的表空间为默认表空间,然后删除原来的临时表空间临时表空间组临进表空间组:临进表空间组是ORACLE 10g引入的一个新特性,它是一个逻辑概念,不需要显示的创建和删除。只要把一个临时表空间分配到一个组中,临时表空间组就自动创建,所有的临时表空间从临时表空间组中移除就自动删除。一个临时表空间组必须由至少一个临时表空间组成,并且无明确的最大数量限制.A temporary tablespace group contains at least one tablespace. There is no limit for a group to have a maximum number of tablespaces如果删除一个临时表空间组的所有成员,该组也自动被删除。临时表空间的名字不能与临时表空间组的名字相同。It shares the namespace of tablespaces, thus its name cannot be the same as that of any tablespace.可以在创建临时表空间是指定表空间组,即隐式创建。查看临时表空间组:也可以指定已经创建好的临时表空间的临时表空间组。从组中移除:当为数据库指定临时表空间或为用户指定临时表空间时,可以使用临时表空间组的名称切换临时表空间1:查看旧临时表空间信息SELECT * FROM V$TEMPFILESELECT USERNAME, TEMPORARY_TABLESPACE FROM DBA_USERS2:创建中转的临时表空间3:添加相应的数据文件4:切换临时表空间。ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TMP;5:删除旧的临时表空间数据文件DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES;6:如果有必要,重新指定用户临时表空间为新建的临时表空间收缩临时表空间排序等操作使用的临时段,使用完成后会被标记为空闲,表示可以重用,占用的空间不会立即释放,有时候临时表空间会变得非常大,此时可以通过收缩临时表空间来释放没有使用的空间。收缩临时表空间是ORACLE 11g新增的功能。监控临时表空间查看临时表空间使用情况:查看临时表空间对应的临时文件的使用情况查找消耗临时表空间资源比较多的SQL语句看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注云技术行业资讯频道,感谢您对云技术的支持。
这篇文章主要介绍“怎么解决数据库ORA-20005错误”,在日常操作中,相信很多人在怎么解决数据库ORA-20005错误问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决数据库ORA-20005错误”的疑惑有所帮助!接下来,…