Oracle11g--解决临时表空间过大问题

简介: 背景:         线上的生产数据库的临时表空间增长到了32GB,增长至最高上限,为了保证数据库的正常运行,有两套临时思路可供选项。         1)增加临时表空间的大小。

背景:


        线上的生产数据库的临时表空间增长到了32GB,增长至最高上限,为了保证数据库的正常运行,有两套临时思路可供选项。

        1)增加临时表空间的大小。
        2)  重建临时表空间,解决临时表空间过大的问题。

今天
,在测试库上进行测试,操作步骤如下:

        1)增加临时表空间的大小:

        * 查看临时表空间的大小
###########临时表空间的使用情况#############
    SELECT d.tablespace_name "Name",
                TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99,999,990.900') "Size (M)",
                TO_CHAR(NVL(t.hwm, 0)/1024/1024,'99999999.999') "HWM (M)",
                TO_CHAR(NVL(t.hwm / a.bytes * 100, 0), '990.00') "HWM % " ,
                TO_CHAR(NVL(t.bytes/1024/1024, 0),'99999999.999') "Using (M)",
          TO_CHAR(NVL(t.bytes / a.bytes * 100, 0), '990.00') "Using %"
           FROM sys.dba_tablespaces d,
                (select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a,
                (select tablespace_name, sum(bytes_cached) hwm, sum(bytes_used) bytes from v$temp_extent_pool group by tablespace_name) t
          WHERE d.tablespace_name = a.tablespace_name(+)
            AND d.tablespace_name = t.tablespace_name(+)
            AND d.extent_management like 'LOCAL'
            AND d.contents like 'TEMPORARY'
###########查看临时表空间的总大小和最大扩展大小(能看到数据文件)##########
select file_name,tablespace_name,
bytes/1024/1024 MB,autoextensible,maxbytes/1024/1024 MAX_MB from dba_temp_files

        * 增加临时表空间的大小
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oradata/ARPDB/temp02.dbf' SIZE 4G 
AUTOEXTEND ON
NEXT 128M
MAXSIZE 16384M;

        2)  重建临时表空间,解决临时表空间过大的问题。

0.查看目前默认的临时表空间
select * from database_properties where property_name='DEFAULT_TEMP_TABLESPACE';

1.创建中转临时表空间
create temporary tablespace temp1 tempfile '/u01/app/oradata/ARPDB/temp03.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;

###########如果删除表空间的时候,hang住的话,可以使用下列语句############
先把运行在temp临时表空间的sql语句kill掉,这样的sql语句多为排序的语句
SQL>Select se.username,se.sid,se.serial#,su.extents,su.blocks*to_number(rtrim(p.value))as Space,tablespace,segtype,sql_text
from v$sort_usage su,v$parameter p,v$session se,v$sql s
where p.name='db_block_size' and su.session_addr=se.saddr and s.hash_value=su.sqlhash
and s.address=su.sqladdr
order by se.username,se.sid;
查询出来之后,kill掉这些sql语句:
SQL>alter system kill session '71,58031'; (假如某一条运行的sql语句的SID为524,serial#为778)

4.重建临时表空间
create temporary tablespace temp tempfile '/u01/app/oradata/ARPDB/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;
相关文章
|
6月前
|
存储 Oracle NoSQL
Oracle 表空间、数据文件、schema的关系
Oracle 表空间、数据文件、schema的关系
186 2
|
SQL 监控 Oracle
Oracle创建和管理表空间
Oracle创建和管理表空间
97 1
|
Oracle 关系型数据库 数据库
9-4 Oracle管理表空间和数据文件
9-4 Oracle管理表空间和数据文件
122 0
|
3月前
|
Oracle 关系型数据库 数据库
[oracle]拆分多用户的公共表空间
[oracle]拆分多用户的公共表空间
|
4月前
|
存储 监控 Oracle
关系型数据库Oracle空间不足
【7月更文挑战第15天】
60 6
|
4月前
|
存储 Oracle 关系型数据库
关系型数据库Oracle 空间不足
【7月更文挑战第16天】
54 2
|
6月前
|
存储 数据库
发现oracle10gSYSAUX空间没有了进行处理
发现oracle10gSYSAUX空间没有了进行处理
40 0
|
6月前
|
SQL Oracle 关系型数据库
Oracle 数据泵导出导入(映射表空间、Schema)
Oracle 数据泵导出导入(映射表空间、Schema)
|
6月前
|
Oracle 关系型数据库 数据库
Oracle 11gR2学习之三(创建用户及表空间、修改字符集和Oracle开机启动)
Oracle 11gR2学习之三(创建用户及表空间、修改字符集和Oracle开机启动)
|
6月前
|
存储 Oracle 关系型数据库
Oracle表空间:数据王国的疆域规划
【4月更文挑战第19天】Oracle中的表空间是逻辑存储结构,用于存放数据库对象的物理数据,是数据库性能优化和备份恢复的基础。表空间类型多样,如永久和临时表空间,需根据业务需求进行规划和管理。通过监控使用情况、利用自动扩展功能,可有效管理表空间,提高数据访问速度和可靠性。深入理解表空间有助于优化数据库存储和管理。