--临时表空间
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;
临时表空间的主要事项】【查询临时表空间使用率,大小】【重建temp表空间】
最新推荐文章于 2024-07-04 23:32:37 发布