eygle.com   eygle.com
eygle.com  
 

« 儿子百天了 | Blog首页 | RAC + ASM单节点添加表空间的后果 »

DBA警世录:where条件很重要

作者:eygle |版权声明:转载时请务必以超链接形式标明文章和作者信息及本声明
链接:

我们已经多次提及,更新props$字典表的做法应当被彻底忘记。

不过今天又看到了一则类似的案例,数据库无法启动时给出ORA-12708错误。
这个错误提示的解释是:

ORA-12708 error while loading create database NLS parameter string

Cause: This is an internal error.
Action: Contact Oracle Support Services.

跟踪启动过程可以得到以下信息:

select value$ from sys.props$ where name = :1
END OF STMT
PARSE #4:c=0,e=703,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=4116419526
BINDS #4:
kkscoacd
Bind#0
oacdty=01 mxl=32(17) mxlc=00 mal=00 scl=00 pre=00
oacflg=18 fl2=0001 frm=01 csi=871 siz=32 off=0
kxsbbbfp=0af128c8 bln=32 avl=17 flg=05
value="NLS_RDBMS_VERSION"
EXEC #4:c=0,e=976,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=4,tim=4116420710
FETCH #4:c=0,e=112,p=0,cr=3,cu=0,mis=0,r=1,dep=1,og=4,tim=4116420867
ORA-12708: 鍔犺浇鍒涘缓鏁版嵁搴?NLS 鍙傛暟 NLS_RDBMS_VERSION 鏃跺嚭閿?
EXEC #1:c=593750,e=10770613,p=176,cr=1254,cu=149,mis=0,r=0,dep=0,og=1,tim=4120039529
ERROR #1:err=1092 tim=18857926

有部分乱码,数据显示,启动读取NLS_RDBMS_VERSION时出现错误。
使用免费的AUL工具,将PROPS$字典表挖掘出来,我们发现了如下数据:

DICT.BASE|ZHS16GBK|dictionary base tables version #
DEFAULT_TEMP_TABLESPACE|ZHS16GBK|Name of default temporary tablespace
DEFAULT_PERMANENT_TABLESPACE|ZHS16GBK|Name of default permanent tablespace
DEFAULT_TBS_TYPE|ZHS16GBK|Default tablespace type
NLS_LANGUAGE|ZHS16GBK|Language
NLS_TERRITORY|ZHS16GBK|Territory
NLS_CURRENCY|ZHS16GBK|Local currency
NLS_ISO_CURRENCY|ZHS16GBK|ISO currency
NLS_NUMERIC_CHARACTERS|ZHS16GBK|Numeric characters
NLS_CHARACTERSET|ZHS16GBK|Character set
NLS_CALENDAR|ZHS16GBK|Calendar system
NLS_DATE_FORMAT|ZHS16GBK|Date format
NLS_DATE_LANGUAGE|ZHS16GBK|Date language
NLS_SORT|ZHS16GBK|Linguistic definition
NLS_TIME_FORMAT|ZHS16GBK|Time format
NLS_TIMESTAMP_FORMAT|ZHS16GBK|Time stamp format
NLS_TIME_TZ_FORMAT|ZHS16GBK|Time with timezone format
NLS_TIMESTAMP_TZ_FORMAT|ZHS16GBK|Timestamp with timezone format
NLS_DUAL_CURRENCY|ZHS16GBK|Dual currency symbol
NLS_COMP|ZHS16GBK|NLS comparison
NLS_LENGTH_SEMANTICS|ZHS16GBK|NLS length semantics
NLS_NCHAR_CONV_EXCP|ZHS16GBK|NLS conversion exception
NLS_NCHAR_CHARACTERSET|ZHS16GBK|NCHAR Character set
NLS_RDBMS_VERSION|ZHS16GBK|RDBMS version for NLS parameters
GLOBAL_DB_NAME|ZHS16GBK|Global database name
EXPORT_VIEWS_VERSION|ZHS16GBK|Export views revision #
DBTIMEZONE|ZHS16GBK|DB time zone

注意到props$.value$列都被更新为ZHS16GBK,显然这是在一次不适当的更新操作中遗漏了WHERE条件。
所以今天我想提醒DBA们的是,WHERE条件很重要,在UPDATE时一定不要遗漏。

-The End-

By eygle on 2007-11-19 14:26 | Comments (6) | Posted to Beginner | CharacterSet |Pageviews:

相关文章 随机文章
  • DBA警示录:关闭数据库应当谨慎
  • 《循序渐进Oracle》一书第三章目录
  • DBA警示录:Move数据表与索引重建
  • DBA警示录:spfile是不能手工修改的
  • DBA警示录:日志文件该如何命名?
  • 美如昙花只一现
    微软老矣 尚能变否?
    OPTIMIZER_INDEX_COST_ADJ与成本计算
    Oracle Open World 2007文档下载
    《深入浅出Oracle》一书封面定稿
    网上相关主题:
    Google

    留言 (6)

    where条件看似简单,却意义重大!
    大师如果我们不用AUL工具,如何根据错误分析来很好的定位错误所在呢?

    Posted by: Kevin at November 19, 2007 8:10 PM

    一般错误提示会给出详细的出错信息。不过有了AUL更加直观一些。

    Posted by: eygle at November 20, 2007 11:20 AM

    AUL不仅是Data Recovery了, 还作Touble Shooting了.

    Posted by: anysql at November 20, 2007 11:47 AM

    看了AUL的介绍,的确不错啊

    Posted by: Kevin at November 20, 2007 7:17 PM

    "我们已经多次提及,更新porps$字典表的做法应当被彻底忘记。"
    porps$有笔误哦:)

    Posted by: 小荷 at November 21, 2007 8:51 AM

    棉花糖的案例?

    Posted by: zergduan at November 27, 2007 9:23 PM

    发表留言:



    Remember Me?
    (输入验证码后方可评论,谢谢支持)



    CopyRight © 2004 eygle.com, All rights reserved.