临时表空间的主要事项】【查询临时表空间使用率,大小】【重建temp表空间】

--临时表空间
 1.创建用户时,为用户指定默认临时表空间
 2.合理设置PGA,减少临时表空间的使用几率
       根据需要来设置初始化参数SORT_AREA_SIZE参数。这个参数主要控制这个PGA程序全局区内排序区的大小。
 3.数据库管理员还需要监控临时表空间的使用情况,以判断是否需要采取措施来减少临时表空间的使用来提高数据库的查询功能。
       查看 v$sort_segment这张动态功能视图。通过这张动态功能视图可以查看系统排序段(临时段的一种)的使用情况。
       通过动态功能视图 v$sort_usage还可以查询使用排序段的用户与会话内容。
 4.临时表空间防止在一个独立的分区内,是一个不错的想法。不仅可以保证临时文件有存储的空间,而且还可以提高数据库的功能
select * from dba_data_files
select * from dba_tablespaces
select * from DBA_TEMP_FILES  --临时表空间
select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE'; --默认临时表空间
select * from v$sort_segment
select * from v$sort_usage
   	USERNAME	USER	SESSION_ADDR	SESSION_NUM	SQLADDR	SQLHASH	TABLESPACE	CONTENTS	SEGTYPE	SEGFILE#	SEGBLK#	EXTENTS	BLOCKS	SEGRFNO#
1	YSWG	YSWG	68223B18	24	65DC489C	2613960004	TEMP	TEMPORARY	SORT	201	125449	14	1792	1
2	YSWG	YSWG	68223B18	24	65DC489C	2613960004	TEMP	TEMPORARY	SORT	201	123657	98	12544	1


--查询临时表空间使用率,大小等
SELECT temp_used.tablespace_name,
       total - used as "Free",
       total as "Total",
       round(nvl(total - used, 0) * 100 / total, 3) "Free percent"
  FROM (SELECT tablespace_name, SUM(bytes_used) / 1024 / 1024 used
          FROM GV_$TEMP_SPACE_HEADER
         GROUP BY tablespace_name) temp_used,
       (SELECT tablespace_name, SUM(bytes) / 1024 / 1024 total
          FROM dba_temp_files
         GROUP BY tablespace_name) temp_total
 WHERE temp_used.tablespace_name = temp_total.tablespace_name
 
    	TABLESPACE_NAME	Free	Total	Free percent  --临时表空间爆满
      TEMP	          0	    12288	     0

--根据错误提示,查询发生问题的文件
错误原因:Select error: ORA-01114:将块写入文件 * 时出现 IO 错误 (块 # ****)
ORA-27069: skgfdisp: 尝试在文件范围外执行 I/O
OSD-04026: 无效的参数经过. (OS ****)
--写入文件 *,加入*为201,执行如下代码
SELECT * FROM (
SELECT file_name , tablespace_name ,file_id,'datafile' AS TYPE
FROM DBA_DATA_FILES
UNION ALL
SELECT file_name , tablespace_name ,file_id + value ,'tempfile '
FROM DBA_TEMP_FILES , v$parameter p
WHERE p.name = 'db_files'
)
WHERE file_id = 201;

--重建temp表空间(最有效在线方式)
select name from v$tempfile;
select username,temporary_tablespace from dba_users;
1.创建中转临时表空间
create temporary tablespace TEMP1 TEMPFILE 'E:\ORACLE\ORADATA\ORCL\temp02.DBF' SIZE 512M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;  
2.改变缺省临时表空间 为刚刚创建的新临时表空间temp1
alter database default temporary tablespace temp1;
3.删除原来临时表空间
drop tablespace temp including contents and datafiles;
4.重新创建临时表空间
create temporary tablespace TEMP TEMPFILE 'E:\ORACLE\ORADATA\ORCL\temp01.DBF' SIZE 512M REUSE AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;  
5.重置缺省临时表空间为新建的temp表空间
alter database default temporary tablespace temp;
6.删除中转用临时表空间
drop tablespace temp1 including contents and datafiles;
7.如果有必要,那么重新指定用户表空间为重建的临时表空间
alter user arbor temporary tablespace temp;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值