事情解决过程
select pid,spid from v$process where program like %SMON%;
PID SPID
---------- ------------------------------------------------
32 227051
SQL> oradebug setorapid 32;
Unix process pid: 525418, image: (SMON)
SQL> oradebug event 10046 trace name context forever,level 1;
Statement processed.
SQL> oradebug tracefile_name
/u01/app/oracle/diag/rdbms/dbm/dbm1/trace/dbm1_smon_227051.trc
SQL> oradebug wakeup 32;
Statement processed.
SQL> oradebug wakeup 32;
Statement processed.
SQL>
level - tablespace number+1. If the value is 2147483647 then
temp segments in ALL tablespaces are dropped, otherwise, only
segments in a tablespace whose number is equal to the LEVEL
specification are dropped.
select ts# from v$tablespace where name=TBS_1M_SPACE;
alter session set events immediate trace name DROP_SEGMENTS level 17;
alter session set events immediate trace name DROP_SEGMENTS level 2147483647;
1) set event 10061 in the pfile to turn off SMON from cleaning temp segments. This will keep the database from crashing after SMON tries 100 times to clean the segment.
event = 10061 trace name context forever, level 10
2) >select segment_name, segment_type from dba_segments where
header_file=98 and segment_type=TEMPORARY;
SEGMENT_NAME SEGMENT_TYPE
------------------- -----------------------
98.110124 TEMPORARY
98.110124 <---------- datafile and block number
If there are no results make sure the datafile reference is not using the relative file number.
>select rfile#,name,ts#,file# from v$datafile;
3) Mark the segment as corrupted:
exec dbms_space_admin.segment_corrupt( ,98,110124)
OR
You can generate a script for all segments using the following :
set lines 5000
set long 9999
set pages 999
set head off
spool corrupt.sql
select exec dbms_space_admin.segment_corrupt(||s.tablespace_name||||,||replace (segment_name,.,,)||)||; from dba_segments s ,dba_tablespaces t where s.TABLESPACE_NAME=upper(&Tablespace_name)
and s.segment_type=TEMPORARY
and t.contents=PERMANENT
and s.TABLESPACE_NAME=t.TABLESPACE_NAME;
spool off
Then execute the sript corrupt.sql
@corrupt.sql
4) Drop the segment
exec dbms_space_admin.segment_drop_corrupt( ,98,110124)
OR
You can generate a script for all segments using the following :
spool drop.sql
set lines 5000
set long 9999
set pages 999
set head off
select exec dbms_space_admin.segment_drop_corrupt(||s.tablespace_name||||,||SEGMENT_NAME||)||; from dba_segments s ,dba_tablespaces t where s.TABLESPACE_NAME=upper(&Tablespace_name)
and s.segment_type=TEMPORARY
and t.contents=PERMANENT
and s.TABLESPACE_NAME=t.TABLESPACE_NAME;
spool off
Then execute the sript drop.sql
@drop.sql
5) Rebuild the tablespace bitmap(s)
exec dbms_space_admin.tablespace_rebuild_bitmaps( );
6) Remove event 10061 from pfile and bounce database
7) exec dbms_space_admin.tablespace_verify ( );
关闭各个实例,并启动数据库。
事情总结
解决问题的前提,需先熟悉整个问题环节和理论原理,下面就上面案例做一些提取。
1. 临时段何时产生
临时表空间的临时段,永久表空间的临时段,一般永久表空间的临时段smon会自动清理,临时表空间的临时段可以通过重启实例或重建临时表空间解决。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/129410.html
摘要:年月日,第届技术管理工作坊将在深圳华侨城洲际酒店举行。壹佰案例在开始前采访了沈剑老师,先行剧透架构师转型做管理的感悟。 showImg(https://segmentfault.com/img/bVxMfU);2016年6月25-26日,第27届MPD技术管理工作坊将在深圳华侨城洲际酒店举行。本次工作坊,我们邀请了58到家技术总监沈剑老师,分享《技术团队的接手、搭建与发展实践 》, 讲...
摘要:云计算正以空前的发展速度,迎来自己的大机会时代。月日,金山云财报,云业务营收亿元,同比增长。因此,对每个正在行业里寻找机会的企业来说,任正非先生说的一番话似乎都非常值得共同重温一下他说在大机会时代,千万不要机会主义,反而要有战略耐性。后疫情时代,情势倒逼生产服务场景和消费场景快速线上化,数据显示,2020年以来,即使按照最保守的口径估计,中国远程办公企业规模超过1800万家,远程办公人员超过...
摘要:表级锁表级锁表级别的锁定是各存储引擎中最大颗粒度的锁定机制。当前没有其他事务持有表中任意一行的排他锁。为了检测是否满足第二个条件,事务必须在确保表不存在任何排他锁的前提下,去检测表中的每一行是否存在排他锁。一、表级锁、行级锁、页级锁数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。MySQL数据库由于其自身架构的特点,存在多种数据存...
摘要:也可以在凌晨系统不是那么繁忙的时候操作。总结一下少量用户设计简单,但浪费空间,冗余高中量用户设计较简单,对表的操作压力大大量用户这不是增加几个表能解决的问题 基本功能 点到点的消息传送: 用户给用户 管理员给用户 点到面的消息传送 管理员给用户群 少量用户(10-999) 对于用户非常少的情况,没有必要深入的考虑数据库的优化,采用简单的表设计: 如表message ...
阅读 1347·2023-01-11 13:20
阅读 1685·2023-01-11 13:20
阅读 1133·2023-01-11 13:20
阅读 1860·2023-01-11 13:20
阅读 4101·2023-01-11 13:20
阅读 2705·2023-01-11 13:20
阅读 1386·2023-01-11 13:20
阅读 3598·2023-01-11 13:20