临时表空间和临时段的研究
发表于:2024-10-09 作者:千家信息网编辑
千家信息网最后更新 2024年10月09日,对于临时表空间,主要用来做一些排序类的操作,oracle对于临时表空间采用的使用策略和其他的永久表空间的不同,当第一个使用临时表空间的排序操作开始,临时段被创建相应视图:SQL> select tab
千家信息网最后更新 2024年10月09日临时表空间和临时段的研究对于临时表空间,主要用来做一些排序类的操作,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安全错误
数据库的锁怎样保障安全
数据库课程设计课程思政
时空猎人服务器爆满是什么原因
服务器基础教程
软件开发专业就业工资
网络安全与维护什么工种
东京奥运网络安全小组
cad插入服务器
服务器监控管理系统
jar包发布到linux服务器
网络安全综合防护
服务器的安装方式有哪些
国际服最多的服务器
玩穿越火线服务器字体乱码
咨询手机网络安全
基于水果识别的软件开发
网络安全是我们的重要职责
南方电网网络安全保卫
国家网络安全周活动方案
软件开发公司属于服务业吗
云晟网络技术有限公司
数据库学号怎么编
数据库网络通信故障
计算机网络技术与数学的关系
从ftp服务器下载照片打不开
山西省吕梁市网络安全宣传活动
家用服务器配置方案
高科技互联网有哪些
网络安全调研报告提纲
linux 数据库远程链接
cvi ado 数据库