暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

课程笔记 | Oracle DBA 武林秘籍 | 2.6 UNDO坏块导致的数据库宕机

原创 严少安 2022-08-26
877

本课内容介绍两个重要的隐含参数:

  • _CORRUPTED_ROLLBACK_SEGMENTS
  • _OFFLINE_ROLLBACK_SEGMENTS

_CORRUPTED_ROLLBACK_SEGMENTS

表示数据库启动时跳过损坏的回滚段,如果无法确认具体哪个回滚段损坏,会选择跳过所有回滚段,具体用法是在参数文件中增加参数,具体回滚段名称需要提前查出来。

_CORRUPTED_ROLLBACK_SEGMENTS=(SYSSMU1$, _SYSSMU2$, _SYSSMU3$, ...etc)

_OFFLINE_ROLLBACK_SEGMENTS

表示在数据库启动时,可以指定部分回滚段offline;

示例:

加入 ROLLBACK 参数,强制将28 号回滚段离线标记为损坏。

_allow_resetlogs_corruption= TRUE
_offline_rollback_segments= (_SYSSMU28$)
_corrupted_rollback_segments= (_SYSSMU28$)

通过以下查询可以从内部表直接获得所有参数及其描述信息:

set linesize 120
col name for a30
col value for a20
col PDESC for a50

SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.KSPPDESC PDESC
FROM SYS.x$ksppi x, SYS.x$ksppcv y
WHERE x.indx = y.indx
AND x.ksppinm LIKE '%&par%';

与 rollback_segments 有关的几个参数有:

NAME                           VALUE                PDESC
------------------------------ -------------------- --------------------------------------------------
rollback_segments                                   undo segment list
_offline_rollback_segments                          offline undo segment list
_corrupted_rollback_segments                        corrupted undo segment list

20220826_151229.jpg

这里涉及两张表:

  • x$ksppi

是 Kernel Service, Parameter, Parameter Info 的缩写。
v$parameter, v$system_parameter and v$system_parameter2 的基表,可用于查看未记录在文档的参数。

SQL> desc x$ksppi
Name                                                              Null?    Type
----------------------------------------------------------------- -------- --------------------------------------------
ADDR                                                                       RAW(8)
INDX                                                                       NUMBER
INST_ID                                                                    NUMBER
CON_ID                                                                     NUMBER
KSPPINM                                                                    VARCHAR2(80)
KSPPITY                                                                    NUMBER
KSPPDESC                                                                   VARCHAR2(255)
KSPPIFLG                                                                   NUMBER
KSPPILRMFLG                                                                NUMBER
KSPPIHASH                                                                  NUMBER
  • x$ksppcv

是 Kernel Service, Parameter, Parameter Current session Values的缩写。

SQL> desc x$ksppcv
Name                                                              Null?    Type
----------------------------------------------------------------- -------- --------------------------------------------
ADDR                                                                       RAW(8)
INDX                                                                       NUMBER
INST_ID                                                                    NUMBER
CON_ID                                                                     NUMBER
KSPPSTVL                                                                   VARCHAR2(4000)
KSPPSTDVL                                                                  VARCHAR2(4000)
KSPPSTDFL                                                                  VARCHAR2(255)
KSPPSTDF                                                                   VARCHAR2(9)
KSPPSTVF                                                                   NUMBER
KSPPSTCMNT                                                                 VARCHAR2(255)

最后,再分享一个查看隐藏参数的sql。

https://oracle-base.com/dba/script?category=monitoring&file=hidden_parameters.sql

Script: hidden_parameters.sql

-- -----------------------------------------------------------------------------------
-- File Name    : http://www.oracle-base.com/dba/monitoring/hidden_parameters.sql
-- Author       : DR Timothy S Hall
-- Description  : Displays a list of one or all the hidden parameters.
-- Requirements : Access to the v$ views.
-- Call Syntax  : @hidden_parameters (parameter-name or all)
-- Last Modified: 28-NOV-2006
-- -----------------------------------------------------------------------------------
SET VERIFY OFF
COLUMN parameter      FORMAT a37
COLUMN description    FORMAT a30 WORD_WRAPPED
COLUMN session_value  FORMAT a10
COLUMN instance_value FORMAT a10
SELECT a.ksppinm AS parameter,
       a.ksppdesc AS description,
       b.ksppstvl AS session_value,
       c.ksppstvl AS instance_value
FROM   x$ksppi a,
       x$ksppcv b,
       x$ksppsv c
WHERE  a.indx = b.indx
AND    a.indx = c.indx
AND    a.ksppinm LIKE '/_%' ESCAPE '/'
AND    a.ksppinm = DECODE(LOWER('&1'), 'all', a.ksppinm, LOWER('&1'))
ORDER BY a.ksppinm;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论