Select inst_id, sid, CLIENT_INFO ch, seq#, event, state, wait_time_micro/1000000 seconds
from gv$session where program like '%rman%' and
wait_time = 0 and
not action is null;
Chain 2:
------------------------------------------------------------------------------
-
Oracle session identified by:
{
instance: 1 (abc1)
os id: 227371
process id: 172, <PROCESS>@<DOMAIN>
session id: 1202
session serial #: 49320
}
is waiting for 'enq: TC - contention' with wait info:
{
p1: 'name|mode'=0x54430006
p2: 'checkpoint ID'=0x100ac
p3: '0'=0x0
time in wait: 84 min 42 sec (last interval)
time in wait: 1627 min 7 sec (total)
timeout after: never
wait id: 807478
blocking: 0 sessions
current sql: <none>
short stack:
ksedsts()+244<-ksdxfstk()+58<-ksdxcb()+918<-sspuser()+224<-__sighandler()<-sem
timedop()+10<-skgpwwait()+200<-ksliwat()+2085<-kslwaitctx()+161<-kjuscv_wait()
+2129<-kjuscv()+1668<-ksipcon()+2227<-ksqcmi()+21665<-ksqcnv()+645<-ksqcov()+9
5<-kcvgcf()+876<-krbckf()+1568<-krbbFileCkpt()+983<-krbbpcint()+6736<-krbbpc()
+3122<-krbibpc()+1796<-pevm_icd_call_common()+411<-pfrinstr_ICAL()+135<-pfrrun
_no_tool()+60<-pfrrun()+1155<-plsql_run()+708<-pricar()+1055<-pricbr()+616<-pr
ient2()+1143<-prient()+2690<-kkxrpc()+1064<-kporpc(
wait history:
* time between current wait and wait #1: 0.000000 sec
1. event: 'ges enter server mode'
time waited: 0.000019 sec
wait id: 807602
* time between wait #1 and #2: 0.000000 sec
2. event: 'enq: TC - contention'
time waited: 0.500959 sec (last interval)
time waited: 1542 min 25 sec (total)
原因
这个问题是由于下面的bug 引起:
Bug 26951406 - CKPT STUCK ,BLOCKING RMAN BACKUPS Closed as Duplicate of Unpublished BUG 27679641.
如果已经应用了patch 21913447,那么回滚,并应用27679641 来取而代之。
解决方案
检索one-off patch 27679641 是否可用。
作为临时替代方案,可以设置下面的参数:
ALTER SYSTEM SET db_lost_write_protect='TYPICAL' SCOPE=BOTH;