临时表空间和临时段的研究
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,对于临时表空间,主要用来做一些排序类的操作,oracle对于临时表空间采用的使用策略和其他的永久表空间的不同,当第一个使用临时表空间的排序操作开始,临时段被创建相应视图:SQL> select tab
千家信息网最后更新 2025年12月03日临时表空间和临时段的研究对于临时表空间,主要用来做一些排序类的操作,oracle对于临时表空间采用的使用策略和其他的永久表空间的不同,当第一个使用临时表空间的排序操作开始,临时段被创建相应视图:SQL> select table_name from dict where table_name like 'V$TEMP%';TABLE_NAME------------------------------V$TEMPFILEV$TEMPORARY_LOBSV$TEMPSEG_USAGEV$TEMPSTATV$TEMP_CACHE_TRANSFERV$TEMP_EXTENT_MAPV$TEMP_EXTENT_POOLV$TEMP_HISTOGRAMV$TEMP_PINGV$TEMP_SPACE_HEADERSQL> SELECT TABLE_NAME FROM DICT WHERE TABLE_NAME LIKE 'V$SORT%';TABLE_NAME------------------------------V$SORT_SEGMENTV$SORT_USAGE1、v$sysstat(查看数据库排序信息)SQL> select name,value from v$sysstat where name like 'sort%';NAME VALUE---------------------------------------------------------------- ----------sorts (memory) 3272sorts (disk) 0sorts (rows) 164422、v$sort_usage=v$tempseg_usage(查看临时表空间使用情况)SQL> select username,session_num from v$tempseg_usage;USERNAME SESSION_NUM------------------------------ -----------SYS 8SYS 8SYS 83、v$sort_segment(临时段中的extent管理)SQL> select TOTAL_EXTENTS,USED_EXTENTS,FREE_EXTENTS,ADDED_EXTENTS from v$sort_segment where tablespace_name='TEMP';TOTAL_EXTENTS USED_EXTENTS FREE_EXTENTS ADDED_EXTENTS------------- ------------ ------------ ------------- 902 0 902 898v$temp_space_header(该视图用来查询临时表空间使用情况)SQL> select tablespace_name,BYTES_USED,BYTES_FREE from v$temp_space_header;TABLESPACE_NAME BYTES_USED BYTES_FREE------------------------------ ---------- ----------TEMP 946864128 0
extent会被分配到这个临时段中,但当排序操作完成后,这个临时段并不会被删除掉,只会被oracle标记为Free从而使其他排序操作可以继续使用这个临时段,从这里我们也可以明白,对于一个临时表空间只能存在一个临时段。对于段中的extent管理通过v$sort_segment:SQL> select TOTAL_EXTENTS,USED_EXTENTS,FREE_EXTENTS,ADDED_EXTENTS from v$sort_segment where tablespace_name='TEMP';TOTAL_EXTENTS USED_EXTENTS FREE_EXTENTS ADDED_EXTENTS------------- ------------ ------------ ------------- 117 117 0 6571当我们数据库中temp表空间不在被会话所使用,相应的临时段就会释放。extent被标记为FreeTOTAL_EXTENTS USED_EXTENTS FREE_EXTENTS ADDED_EXTENTS------------- ------------ ------------ ------------- 364 0 364 6818从上面可知,一但开始使用临时段,oracle就会分配对应的extent,不断往段中添加extent,而一但排序操作完成,oracle会立即释放使用的段,从而使段中的extent标记为Free.oracle的这一特性也使得oracle的临时表空间的数据文件将会越来越大,所以对于临时表空间我们也必须定期的观察并做维护。模拟临时表空间被大量消耗:(模拟一个排序操作)select * from dba_tab_columns a,dba_tab_columns b order by a.owner,b.table_name;运行一段时间后掐掉,此时发现对应oracle目录变大,临时表空间也变大。SQL> !df -kFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda1 8254240 2244484 5590464 29% /none 403460 0 403460 0% /dev/shm/dev/sda2 10317860 6550784 3242956 67% /oracleSQL> select username,session_num from v$sort_usage where tablespace='TEMP';USERNAME SESSION_NUM------------------------------ -----------SYS 8此时我们查找对应临时数据文件使用情况:SQL> select max(SEGBLK#) from v$sort_usage;MAX(SEGBLK#)------------ 9SQL> select 8*8192/1024/1024/1024 from dual;8*8192/1024/1024/1024--------------------- .000061035我们可以看到,虽然临时表空间很大,但是临时表空间的使用却不大,我们采用resize的方法缩小数据文件:SQL> alter database tempfile '/oracle/app/oradata/orcl/temp01.dbf' resize 100m;Database altered.SQL> !ls -l /oracle/app/oradata/orcl/temp01.dbf-rw-r----- 1 oracle dba 104865792数据文件已经缩小到100m减小临时表空间,释放磁盘空间的另一个方法是临时表空间的替换:创建temp:SQL> create temporary tablespace temp2 2 tempfile 'E:\XXXXXX\XXXXX\XXXX.dbf' size 100m autoextend on;确认原temp是否空闲:SQL> SELECT USERNAME,USER FROM V$SORT_USAGE WHERE TABLESPACE='TEMP'SQL> alter database default temporary tablespace TEMP2SQL> drop tablespace TEMP including contents and datafiles查看是否正确删除temp表空间。查看空间是否释放。
extent会被分配到这个临时段中,但当排序操作完成后,这个临时段并不会被删除掉,只会被oracle标记为Free从而使其他排序操作可以继续使用这个临时段,从这里我们也可以明白,对于一个临时表空间只能存在一个临时段。对于段中的extent管理通过v$sort_segment:SQL> select TOTAL_EXTENTS,USED_EXTENTS,FREE_EXTENTS,ADDED_EXTENTS from v$sort_segment where tablespace_name='TEMP';TOTAL_EXTENTS USED_EXTENTS FREE_EXTENTS ADDED_EXTENTS------------- ------------ ------------ ------------- 117 117 0 6571当我们数据库中temp表空间不在被会话所使用,相应的临时段就会释放。extent被标记为FreeTOTAL_EXTENTS USED_EXTENTS FREE_EXTENTS ADDED_EXTENTS------------- ------------ ------------ ------------- 364 0 364 6818从上面可知,一但开始使用临时段,oracle就会分配对应的extent,不断往段中添加extent,而一但排序操作完成,oracle会立即释放使用的段,从而使段中的extent标记为Free.oracle的这一特性也使得oracle的临时表空间的数据文件将会越来越大,所以对于临时表空间我们也必须定期的观察并做维护。模拟临时表空间被大量消耗:(模拟一个排序操作)select * from dba_tab_columns a,dba_tab_columns b order by a.owner,b.table_name;运行一段时间后掐掉,此时发现对应oracle目录变大,临时表空间也变大。SQL> !df -kFilesystem 1K-blocks Used Available Use% Mounted on/dev/sda1 8254240 2244484 5590464 29% /none 403460 0 403460 0% /dev/shm/dev/sda2 10317860 6550784 3242956 67% /oracleSQL> select username,session_num from v$sort_usage where tablespace='TEMP';USERNAME SESSION_NUM------------------------------ -----------SYS 8此时我们查找对应临时数据文件使用情况:SQL> select max(SEGBLK#) from v$sort_usage;MAX(SEGBLK#)------------ 9SQL> select 8*8192/1024/1024/1024 from dual;8*8192/1024/1024/1024--------------------- .000061035我们可以看到,虽然临时表空间很大,但是临时表空间的使用却不大,我们采用resize的方法缩小数据文件:SQL> alter database tempfile '/oracle/app/oradata/orcl/temp01.dbf' resize 100m;Database altered.SQL> !ls -l /oracle/app/oradata/orcl/temp01.dbf-rw-r----- 1 oracle dba 104865792数据文件已经缩小到100m减小临时表空间,释放磁盘空间的另一个方法是临时表空间的替换:创建temp:SQL> create temporary tablespace temp2 2 tempfile 'E:\XXXXXX\XXXXX\XXXX.dbf' size 100m autoextend on;确认原temp是否空闲:SQL> SELECT USERNAME,USER FROM V$SORT_USAGE WHERE TABLESPACE='TEMP'SQL> alter database default temporary tablespace TEMP2SQL> drop tablespace TEMP including contents and datafiles查看是否正确删除temp表空间。查看空间是否释放。
空间
时段
排序
数据
文件
情况
标记
数据库
方法
视图
分配
管理
不同
很大
不大
不断
信息
时间
特性
目录
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
金蝶k3新建帐套数据库口令
管理多台ecs服务器
网络安全 厂商
灵格斯翻译服务器
我的时间服务器在哪里输入命令
有网络安全比赛吗
印度软件开发企业
南开区数据网络技术质量保证
网络安全检查简报范文
数据库与信息管理系统
服务器 管理ip 查询
工行软件开发广州研发部
网络安全形势评估
重庆云阳免费生鲜软件开发
服务器远程正忙
计算机软件开发主要课程
网络安全在我心手抄报图片大全
小型管理系统服务器配置
网络技术顾问
周小学生家庭教育与网络安全
未进行网络安全备案
服务器钣金件检测
网络安全概念股股龙头股有
论可持续软件开发
武汉大学网络安全公开课
mc外服服务器偷龙蛋
宝山区推广软件开发设备
河北惠普服务器维修调试价格
c 动态数组写入数据库
ftp服务器并发量测试