今天在论坛里,有个朋友问了个问题,非归档模式下,将其中一个数据文件offline,之后数据库又切换了很多的日志,又重启过,还没备份,现在想将之前的数据文件online,结果可想而知,具体如何分析处理?
像这种情况,一般生产环境几乎不会发生,但是遇到了,就必须去面对分析并解决,第一直觉告诉我,需要使用到oracle的隐藏参数进行强制恢复,当然也有其他的手段,这里,就将oracle隐藏参数如何查看,简单介绍如下:
隐藏参数 (hidden parameters) ,由oracle内部使用,以 '_' 开头。
可以通过以下两种方式查看所有隐藏参数:
1.
SELECT i.ksppinm name,
i.ksppdesc description,
CV.ksppstvl VALUE,
CV.ksppstdf isdefault,
DECODE(BITAND(CV.ksppstvf, 7),
1,
'MODIFIED',
4,
'SYSTEM_MOD',
'FALSE') ismodified,
DECODE(BITAND(CV.ksppstvf, 2), 2, 'TRUE', 'FALSE') isadjusted
FROM sys.x$ksppi i, sys.x$ksppcv CV
WHERE i.inst_id = USERENV('Instance')
AND CV.inst_id = USERENV('Instance')
AND i.indx = CV.indx
AND i.ksppinm LIKE '/_%' ESCAPE '/'
ORDER BY REPLACE(i.ksppinm, '_', '');
2.
SELECT ksppinm, ksppstvl, ksppdesc
FROM x$ksppi x, x$ksppcv y
WHERE x.indx = y.indx
AND TRANSLATE(ksppinm, '_', '#') LIKE '#%';
示例:如果想查看_allow_resetlogs_corruption的参数值
SELECT ksppinm, ksppstvl, ksppdesc
FROM x$ksppi x, x$ksppcv y
WHERE x.indx = y.indx
AND ksppinm = '_allow_resetlogs_corruption';
记录一下~