欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

遭遇ORA-07445 [ACCESS_VIOLATION] [unable_to_trans_pc

程序员文章站 2023-12-24 14:04:45
...

像平常一样,准备启动自己机器上的测试数据库看点东西,net start oracleservicening,正常,sqlplus以sysdba登入,奇怪,这次怎么10秒了还没反映,嗯,机器 不好,先做点别的事情吧。 几分钟后再来看看,还是挂起在那里,不对劲,第一反应,看alert,果然有

像平常一样,准备启动自己机器上的测试数据库看点东西,net start oracleservicening,正常,sqlplus以sysdba登入,奇怪,这次怎么10秒了还没反映,嗯,机器不好,先做点别的事情吧。

几分钟后再来看看,还是挂起在那里,不对劲,第一反应,看alert,果然有机关:


PMON started with pid=2, OS id=404
PSP0 started with pid=3, OS id=888
MMAN started with pid=4, OS id=3628
DBW0 started with pid=5, OS id=148
LGWR started with pid=6, OS id=3944
CKPT started with pid=7, OS id=252
SMON started with pid=8, OS id=2336
RECO started with pid=9, OS id=2452
CJQ0 started with pid=10, OS id=3772
MMON started with pid=11, OS id=3728
MMNL started with pid=12, OS id=3204
Fri Mar 16 09:09:47 2007
Errors in file e:oracleora10adminningudumpning_ora_3848.trc:
ORA-07445: exception encountered: core dump [ACCESS_VIOLATION] [unable_to_trans_pc] [PC:0x77E7FA69] [ADDR:0x7D42]
[UNABLE_TO_WRITE] []

晕,一直好好的,怎么突然出07445错误了,而且google,metalink转了一遍,也没发现什么有价值的地方。回想之前,唯一的改动好像是将

buffer cache调小了点,内存不够用,没办法。alert再往前看看

__db_cache_size = 41943040
db_cache_size = 41943040

嗯,只有40M,记得之前好像是48M,一直用的spfile,之前也没有保存pfile,只有先startup nomout,然后create pfile from spfile来生成一个了。

停止服务,修改注册表,将启动服务时自动startup数据库的选项改为false,然后重新启动服务

C:>sqlplus /nolog

SQL*Plus: Release 10.2.0.3.0 - Production on Fri Mar 16 09:15:04 2007

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.

@>conn / as sysdba
Connected to an idle instance.

SYS@ning>startup nomount;
ORA-24324: service handle not initialized
ORA-24323: value not allowed
ORA-03113: end-of-file on communication channel

我晕,这招不灵光,根本instance都起不来,也对,如果是内存参数有问题,起不来也正常。看来不能偷懒,还是利用alert里面记录的非默认参数自己弄一个pfile了,alert真是信息丰富啊:)

System parameters with non-default values:
processes = 150
__shared_pool_size = 83886080
shared_pool_size = 83886080
large_pool_size = 0
java_pool_size = 0
control_files = E:ORACLEORADATANINGCONTROL01.CTL, E:ORACLEORADATANINGCONTROL02.CTL,

E:ORACLEORADATANINGCONTROL03.CTL
db_block_size = 8192
__db_cache_size = 41943040
db_cache_size = 41943040
compatible = 10.2.0.1.0
db_file_multiblock_read_count= 16
dml_locks = 2
undo_management = AUTO
undo_tablespace = UNDOTBS1
remote_login_passwordfile= EXCLUSIVE
db_domain =
job_queue_processes = 10
audit_file_dest = E:ORACLEORA10ADMINNINGADUMP
background_dump_dest = E:ORACLEORA10ADMINNINGBDUMP
user_dump_dest = E:ORACLEORA10ADMINNINGUDUMP
core_dump_dest = E:ORACLEORA10ADMINNINGCDUMP
db_name = ning
open_cursors = 300
pga_aggregate_target = 95420416


SYS@ning>startup nomount pfile='d:initning.ora';
ORA-24324: service handle not initialized
ORA-24323: value not allowed
ORA-03113: end-of-file on communication channel

偶分特,还不行。这次alert里面还报了一堆没有参数的额07445了
Fri Mar 16 09:53:54 2007
Errors in file e:oracleora10adminningudumpning_ora_3812.trc:
ORA-07445: exception encountered: core dump [] [] [] [] [] []
ORA-07445: exception encountered: core dump [] [] [] [] [] []
ORA-07445: exception encountered: core dump [] [] [] [] [] []
ORA-07445: exception encountered: core dump [] [] [] [] [] []
ORA-07445: exception encountered: core dump [] [] [] [] [] []
ORA-07445: exception encountered: core dump [] [] [] [] [] []
ORA-07445: exception encountered: core dump [] [] [] [] [] []
ORA-07445: exception encountered: core dump [] [] [] [] [] []
ORA-07445: exception encountered: core dump [] [] [] [] [] []
ORA-07445: exception encountered: core dump [] [] [] [] [] []
ORA-07445: exception encountered: core dump [] [] [] [] [] []
ORA-07445: exception encountered: core dump [] [] [] [] [] []
ORA-07445: exception encountered: core dump [ACCESS_VIOLATION] [unable_to_trans_pc] [PC:0x7C911F52] [ADDR:0x6C63616F]

[UNABLE_TO_READ] []
ORA-07445: exception encountered: core dump [ACCESS_VIOLATION] [unable_to_trans_pc] [PC:0x7C911F52] [ADDR:0x6C63616F]

[UNABLE_TO_READ] []

嗯,不好意思,刚才好像只改了db_cache_size,忘记改__db_cache_size了,再来

SYS@ning>startup nomount pfile='d:initning.ora';
ORACLE instance started.

Total System Global Area 142606336 bytes
Fixed Size 1289340 bytes
Variable Size 83886980 bytes
Database Buffers 50331648 bytes
Redo Buffers 7098368 bytes

SYS@ning>alter database mount;

Database altered.

SYS@ning>alter database open;

Database altered.

终于起来了,哎,不过将buffer cache改小了8M,至于弄个07445的错误来吓我么。

重新生成spfile

SYS@ning>create spfile from pfile;

File created.

不过这也告诉我们,生产库上的参数,如果没有经过充分测试,千万不要随便乱改,尤其是一些高危参数,比如内存大小啊,cursor_sharing啊什么的。并且做任何改变之前,先做好文档记录,万一有问题,还能追查到出问题之前对于系统的改动情况,这个对于排错是有相当大的帮助的。

上一篇:

下一篇: