搜索
您的当前位置:首页正文

华为公司Oracle11g常见故障处理

2020-06-15 来源:步旅网


WORD格式可编辑

Oracle 11g 数据库常见故障处理 TSD配套产品服务部 2009年6月27日

目标

通过本课程的学习,您将了解以下内容 :

Oracle 11g

数据库常见故障及处理 安装和配置类问题 实例管理类问题 数据管理类管理 数据库恢复类问

题 管理工具类问题

ORA-00600介绍和案例分析 ORA-07445介绍和案例分析

目录 安装配置类 实例管理类 数据管理类 数据恢复类 管理工具类

ORA-00600 ORA-07445

目标

通过本章节的学习,您将了解以下内容

ORACLE 11g常见的安装类问题

这些问题的分析和解决 如何在客户端启动图形界面

问题

用客户端连接到 Unix或者Linux平台上安装数据库软件时,常常无法启动

图形界面,因此无法进行安装

解决

以root用户执行:

xhost +

客户端需要安装 xmanager,并且通过Xbrowser登陆到主机 以oracle用户执行:

export DISPLAY=客户端 IP:0.0 xclock (测试能否显示图形界面)

如果图形界面还出不来,可以尝试

如何在服务器端启动图形界面

export DISPLAY=客户端IP:1.0

专业知识分享

WORD格式可编辑

问题

如果直接在服务器上安装数据库软件时, 问题

有时也会碰到不能启动图形界面的

解决

以root用户执行:

xhost +

以oracle用户执行:

export DISPLAY=:0.0

xclock (测试能否显示图形界面)

安装CRS时,无法添加节点 故障现象

AIX或HPUX上安装CRS的过程中,有一步是添加节点,正常情况下,应该 可以添加本地

节点和远程节点,但添加远程节点时失败。

解决方法

如果要安装的CRS需要依赖操作系统双机管理共享文件,那么安装 必须保证操作系统双机服务启动 如果不需要操作系统双机软件, 作系统上删除双机软件,对于

而只需要ASM管理共享存储,那么必须在操

HACMP要保证没有安装

rsct.basic.hacmp

CRS时,

包,对于HPUX要保证没有安装 Serviceguard 包

AIX上安装CRS时提示bos.cifs_fs.rte 检查不通过

故障现象

在AIX5L上安装 CRS时,当安装程序自动检查操作系统补丁时,提示 bos.cifs_fs_rte 未安装

解决办法

安装所需AIX程序包

smitty in stallp

重启操作系统

shutdow n -Fr

CRS安装最后阶段在第二个节点运行

root.sh报错

root.sh时,报错:

故障现象

安装CRS最后阶段,在第二个节点执行

con figure virtual IPs

The give n in terface(s), \"eth2\" is not public.Public in terfaces should be used to

解决办法

以root身份手工在第二个节点执行

cd //bin ./vipca

vipca

安装 RAC时报 ORA-00603QRA-29702 故障现象

在安装RAC时,出现下列错误:

ORA-00603:ORACLE server session termi nated by fatal error ORA-29702:error occurred in Cluster Group Service operati on

原因分析

RAC的节点名出现在了 /etc/hosts

文件中的回送地址中

xxxx

专业知识分享

WORD格式可编辑

解决方法

如果机器名出现在回送地址条目中,如下所示:

专业知识分享

WORD格式可编辑

127.0.0.1 racl localhost.localdomai n localhost

需要灾回送地址中删除掉机器名,如下:

127.0.0.1 localhost.localdoma in localhost

无法连接数据库 故障现象 原因分析

ORA-12521,ORA-12505

连接数据库时报错:

客户端 tnsnames.ora 配置的连接串中,关于instance_name 的设置不正确, 这个错误类似 ORA-12505: TNS:liste ner could n ot resolve SID give n in connect descriptor

解决方法

检查数据库的 instanee name:

select in sta nce_n ame from v$in sta nee;

修改客户端tnsnames.ora 文件,设置正确的

ORA-12541

instance_name 或SID

无法连接数据库

故障现象

连接数据库时报错:

ERROR:

ORA-12541: TNS:no listener

原因分析

可能原因一:客户端 tnsn ames.ora配置的连接串中,监听端口号设置不正 确 可能原因二:数据库服务器监听没有启动

解决方法

检查客户端tnsnames.ora文件,设置正确的监听端口号 检查服务器上的监听是否正常启动

ORA-12535

无法连接数据库 故障现象

ERROR:

连接数据库时报错:

ORA-12535: TNS:operatio n timed out

原因分析

可能原因:客户端 tnsnames.ora中,服务器IP地址设置错误 可能原因:防火墙阻断了连接

解决方法

正确配置tnsnames.ora中的服务器IP地址 利用Tnsping connectstring,

测试配置是否正确,如果不通,检查网络。

连接RAC数据库报ORA-12545

专业知识分享

WORD格式可编辑

故障现象

当两个节点的RAC实例都起来的时候,使用RAC勺TAF方式的连接数据库时, 报

ORA-12545的错误。

ora-12545:连接因对象主机或对象不存在而失败

解决

检查客户端的 hosts 文件(C:\\WINDOWS\\system32\\drivers\\etc\\hosts 文件 配置,将数据服务器各个节点的

10.10.10.30 10.10.10.31 )

n ode1-vip n ode2-vip

VIP都配置进去,例如:

检查客户端的 tnsnames.ora 和 hosts(C:\\WINDOWS\\system32\\drivers\\etc) 文件配置,正确配置例子如下:

)

检查数据库各节点的local_listener 设置,确保其对应的IP地址是当前节 点的VIP,如果不是,请按下面的方式修改:

alter system set local_listener='(ADDRESS = (PROTOCO= TCP)(HOST= node1-vip) (PORT = 1521))

‘ scope=spfile sid= ' ';

alter system local_liste ner='(ADDRESS = (PROTOCOL = TCP)(HOST = node2-vip) (PORT = 1521))'

scope=spfile sid=

';

目录 安装配置类 实例管理类 数据管理类 数据恢复类 管理工具类

ORA-00600 ORA-07445

目标

通过本章节的学习,您将了解以下内容

ORACLE 11g实例的常见问题或故障;

: ;

这些问题或故障的诊断分析和解决方法 怎么查看数据库是 32位还是64位?

问题

怎么查看数据库当前运行的是

解决

方法一:

用sqlplus “/ as sysdba ”登陆数据库,连接信息中有\" 64bit ” 出现的,表示是

64位数据库,如果没有出现,则表示是

32bit数据

32位还是64位的?

库:

Conn ected to:

专业知识分享

WORD格式可编辑

Oracle Database 11g En terprise Edition Release 11.1.0.7.0 - 64bit Production

专业知识分享

WORD格式可编辑

方法二:

以oracle用户执行:

file $ORACLE_HOME/bin/oracle ,输出结果会显示 32bit 或 64bit

怎么杀掉特定的会话

问题

发现某个会话占用资源很大,怎么杀掉该会话?

解决

方法一:

查询出会话的 sid,serial#

select sid,serial# from v$sessi on where

Alter system kill session

…;

‘ sid,serial# ';

方法二:

查询出会话的paddr

Select paddr from v$session where

….;

进而找出spid

Select spid from v$process where addr=

'上面查询的

paddr'

kill -9

怎么查看数据库的警告日志

问题

如何查看数据库的警告日志?

解决

对于11g以前版本,数据库日志alert.log

$ORACLE_BASE/admi n//bdump 目录下

默认存放在

对 11g , 数据库日志 alert.log 默认存放在

目录下

$ORACLE_BASE/diag/rdbms///trace

也可以用 adrci命令进行查看。

可以禾U用 show parameter background_dump_dest 录位置

,得至U日志文件存放的目

sqlplus \"/ as sysdba ” show parameter backgro un d_dump_dest

怎么修改数据库的归档模式

问题

如何修改数据库的归档模式?

解决

情况1:非RAC数据库

专业知识分享

WORD格式可编辑

Sqlplus

\"/ as sysdba ”

专业知识分享

WORD格式可编辑

alter system set log_archive_format= alter

_%t_%s.ar' scope=spfile;(9i) log_archive_format=

_%t_%s_%r.a'

system set

scope-spfile;(10g,11g)

locatio n=/xx/xxx/xxx

scope=spfile;

Alter system set log_archive_dest_1 =

Alter system set log_archive_start=true scope=spfile;(9i)

专业知识分享

WORD格式可编辑

Shutdow n immediate Startup mount

Alter database archivelog; Alter database ope n; Archive log list;

情况2: RAC数据库

在节点 1 上:Sqlplus

“/ as sysdba ”

在节点 1 上: alter system set cluster_database=false scope=true; 在节点 1 上:alter system set log_archive_format=

scope=spfile;(9i)

_%t_%s.ar'

在节点 1 上: alter system set log_archive_format=

scope-spfile;(10g,11g)

_%t_%s_%r.a'

在节点 1 上: Alter system set log_archive_start=true scope=spfile;(9i) 在节点 1 上: Alter system set log_archive_dest_1=

scope=spfile;

'locatio n=/xx/xxx/xxx '

在所有节点上: Shutdow n immediate 在节点 1 上: Startup mount

在节点 1 上: Alter database archivelog; 在节点 1 上: Alter database ope n;

在节点 1 上: alter system set cluster_database=true scope=true; 在节点 1 上: shutdown immediate 在所有节点上: startup 在所有节点上 :archive log list 连接数据库报ORA-01031 故障现象

在windows平台下,用sqlplus连接数据库时报错:

01031, \"in sufficie nt privileges\"

解决方法

找至U oracle 安装目录下的../network/admin/sqInet.ora 将下面的设置注释掉:

#SQLNET.AUTHENTICATION_SERVICES=(NTS) ORA-00838和 ORA-00844

文件

故障现象

修改 memory_target参数时,报错:

ORA-00838: Specified value of MEMORY_TARGiET too small, needs to be at least 1280M

或者启动实例时,报错:

ORA-00844: Parameter n ot taki ng MEMORY_TARGET i nto account, see alert log for

专业知识分享

WORD格式可编辑

more in formatio n

原因分析

在Oraclellg中,引入了 AMM功能,并且新加了 memory_target参数,此参 数要么或者等于 0,或者要大于 sga_target + pga_aggregate_target 的值, 否则就会出错

解决方法

设置合适的 memory_target 值

Linux 上平台报 ORA-00845

故障现象

启动实例时,报错:

ORA-00845: MEMORY_TARGET not supported on this system

原因分析

Oracle11g引入了 AMM功能,并且在linux 平台上,使用的是/dev/shm 做为 oracle 内存,因此,

必须保证

解决方法

memory_target<=/dev/shm 的大小

设置合适的 memory_target 值,保证 memory_target如果/dev/shm 太小,则增大 /dev/shm 值,设置 /dev/shm 的方法参加 《0racle11g安装指导书》

ORA-01555

故障现象

用户进程执行一个sql失败,后台警告日志有报错:

ORA-01555 caused by SQL statement 0x0000.1e5294a0):

below(Query

Duration=14616

sec,SCN :

原因分析

ORA-01555错误是生产库中常见的一个

sn apshot too old

错误,oracle 需

要用到undo信息来保证SQL查询的一致性读,当一个SQL运行时间较长时, 它用到的undo信息有可能由于其它

解决方法

方法一:最根本的解决办法,是优化 方法三:增加 un do_re nte ntio n

Automatic undo management

SQL,减少SQL的逻辑和物理读

UNDO空间

DML事务的空间需求而被覆盖掉了,此

时该SQL查询就会造成ORA-01555的错误。

方法二:如果undo空间确实很小,可以考虑增大 方法四:如果是 9i以上数据库,推荐使用

ORA-04031

故障现象

数据库日志出现以下错误:

ORA-04031: un able to allocate 4096 bytes of shared memory

原因分析

当Oracle尝试在共享内存池分配大的连续内存失败时,就会报 ORA-04031 的错误,最常见的原因是

解决方法

碎片过多的原因多数是因为

sql语句没有使用绑定变量,硬解析过多,因此 shared pool的碎片过多

调整SQL使用绑定变量是一个重要的方面

专业知识分享

WORD格式可编辑

将经常使用的大 SQL和 PL/SQL常驻内存:

Dbms_shared_pool.keep(

‘ object_name ');

推荐使用 ORACLE勺ASM砌能

增力口 shared_pool_size 禾口 shared_pool_reserved_size 增力口 large_pool_size

大小

大小

ORA-19815

故障现象

10g或11g数据库的警告日志出现错误

ORA-19815: WARNINGd b_recovery_file_dest_size and has 0 rema ining bytes available.

of 2147483648 bytes is 100.00% used,

原因分析

闪回恢复区定义大小是

2147483648,已经被占满了,因此数据库报错,如

hang住了。

果归档日志也放在这里的话,数据库就会

解决方法

如果数据库hang住了,这时可以先临时增大闪回恢复区的大小,方法是

alter system set db_recovery_file_dest_size=xxx ;

接下来需要释放recovery file area 空间,有以下方法:

方法一:删除无用的归档日志

$rma n target /

RMAN>Crosscheck archivelog all; RMAN>delete expired archivelog all;

方法二:修改你的备份保留策略

如果你的备份放在闪回恢复区,修改备份保留策略,减少保留空间

方法三:调整你的归档保留策略

如果你使用了第三方备份软件备份到其它介质上, 删除归档

如果你配置了 dataguard,可以调整归档删除策略,调整为 :

CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;

可以调整备份归档的策略, 调整为备份完

目录 安装配置类 实例管理类 数据管理类 数据恢复类 管理工具类

ORA-00600

专业知识分享

WORD格式可编辑

ORA-07445

目标

通过本章节的学习,您将了解以下内容

ORACL数据管理方面的常见问题或故障

: ; ;

这些问题或故障的诊断分析和解决方法 如何将查询内容输出到文本

问题:

在二线工程诊断问题时, 询结果输出到文本呢?

解决:

spool完整文件名

通常需要现场工程师收集一些信息, 那么如何将查

查询语句

Spool off

表空间无法扩展 ORA-01653 故障现象:

在向表插入数据时,报表空间无法扩展的错误

SQL> in sert into t_sg1 select * from dba_objects; in sert into t_sg1 select * from dba_objects

*

ERROR at line 1:

ORA-01653: un able to exte nd table SYS.T_SG1 by 4 in tablespace TBS_TEST

原因分析

表空间已经没有剩余空间可用, 并且表空间对应的数据文件不是自动扩展的 或者尽管数据库文件是自动扩展的, 余空间了

解决:

方法一:修改表空间的数据文件扩展属性 余空间)

alter database datafile 14 autoexte nd on;

(假设数据文件所在文件系统有剩

但数据文件所在的文件系统已经没有剩

方法二:增大已有数据文件的大小

Alter database datafile 14 resize xxxx;

方法三:为表空间增加数据文件

Alter tablespace tbs_test add datafile ‘ xxxx ' size xxxxxxx; Exp 时报 ORA-00904

故障现象:

在执行逻辑导出exp时,发生错误,报错代码是

原因分析

可能原因之一是导出客户段的版本大于数据库服务器的版本 Exp有以下规则需要遵守:

Oracle 的Export/Import

ora-00904

工具只能连接到拥有更高或者一样的

专业知识分享

WORD格式可编辑

Export/Import

版本的数据库

从Oracle低版本的Export出来的数据可以Import到Oracle高版 本中,反之则不行

解决:

用和服务器数据库版本一样或更低的客户端来执行 或者直接在服务器执行导出

EXP

专业知识分享

WORD格式可编辑

ORA-00257

故障现象:

对重做日志进行归档时,报ORA-00257错误,数据库处于hang状态

原因分析

该错误表示归档目录空间不够 库 hang

解决方法

扩大归档目录所在的文件系统 备份和清理无用的归档文件

女口果使用了 db_recovery_file, 调整 db_recovery_file_dest_size 参数

SUSE平台上如何创建ASM磁盘组

,无法完成重做日志的归档工作

,并造成数据

问题

SUSE平台上,如何创建 ASM磁盘组?

解决

查看系统中有哪些裸设备

raw — qa

看数据库已经用了哪些磁盘设备

select

dg. name

as

dg_n ame,

dg.free_mb as dg_freeMB, dg.state as

d.HEADER_STATUS as

dg_state,d.MOUNT_STATUS as d_mou nt_status,

d_header_status,d.MODE_STATUS as d_mode_status,d.STATE as d_state, d.FREE_MB as d_freeMB,d.PATH d_path,d.os_MB d_os_MB from v$asm_diskgroup dg ,v$asm_disk d where dg.group_ nu mber(+)=d.group_ nu mber

显示结果

D_HEADER_STATUS =can didate, D_MOUNT_STATUS =closed, D_MODE_STATUS

=on li ne, D_STATE =n ormal

的是数据库没有使用得到磁盘设备,可以用来创建磁盘组。

登陆ASM实例,创建磁盘组

export ORACLE_SID=+ASM1 Sqlplus

“ / as sysdba ”

的磁盘组(无冗余)

‘ /dev/raw/rawx

--建立external redundancy

Create diskgroup mydg exter nal redundancy disk

--建立normal redundancy 磁盘组(一份冗余,至少两个磁盘 ) Create diskgroup mydg no rmal redu ndancy Failgroup fg1 disk Failgroup fg2 disk

‘/dev/raw/rawxx ' '/dev/raw/rawxx ';

Create diskgroup mydg high redundancy

--建立high redundancy 磁盘组(两份冗余,至少三个磁盘

专业知识分享

WORD格式可编辑

Failgroup fg1 disk Failgroup fg2 disk Failgroup fg3 disk

'/dev/raw/rawxx '/dev/raw/rawxx '/dev/raw/rawxx

如何查询ASM磁盘组的空间使用情况 问题

在日常运行中,我们需要监控ASM磁盘组的空间剩余情况,如何查询ASM的 磁盘组空间

使用情况呢?

解决

:用SQL语句 方法一

select group_ nu mber, name,type,state,total_mb,free_mb

from

v$asm_diskgroup;

方法二 .:用 ASMCMD

export ORACLE_SID= asmcmd ASMCMD>lsdg

如何创建 ASM表空间

问题

如何创建ASM表空间?

解决

先查看系统中的已有哪些磁盘组,并查看是否其剩余空间,

select

group_ nu mber, name,type,TOTAL_MB,FREE_MB,USABLE_FILE_MB

from

v$asm_diskgroup;

如果存在剩余空间满足要求的磁盘组,可以直接创建

Create tablespace

ASM表空间 ASM表空间

表空间名称 datafile ‘ +DGNAMEsize xxxM; 如果不存在剩余空间满足要求的磁盘组,可以直接创建

目录 安装配置类 实例管理类 数据管理类 数据恢复类 管理工具类

ORA-00600 ORA-07445

目标

通过本章节的学习,您将了解以下内容

ORACLE^种常见的数据恢复的场景

这些场景下的数据恢复的具体方法 非归档模式的数据库,丢失数据文件 故障现象

丢失某个数据库文件,造成了数据库无法启动,同时数据库处于非归档模式, 也没有冷备份,启动时的错误信息如下:

专业知识分享

WORD格式可编辑

ORA-01157: cann ot ide ntify/lock data file 3 - see DBWR trace file ORA-01110: data file 3: 'D:\\ORACLE\\ORADATA\\TEST\\USERS01.DBF'

解决方法

将数据库启动到mount状态下:

sqlplus “/ as sysdba ” startup mount

从数据库中删除该数据文件

alter database datafile

‘ xx' offline drop;

打开数据库

alter database ope n;

备注:

该方法可正常打开数据库,但该

datafile

中的数据将丢失 则该方法不奏效

EXP把数据备份出来,然后

如果误删除了 system表空间的datafile, 如果该表空间还包含其它数据文件,用 就可以了。

删除表空间,重建表空间,将数据导入。如果不包含其它数据文件, 则直接删除表空间

归档模式数据库丢失某数据文件,无备份 ,但有该数据文件创建以来的归档日志 故障现象

归档模式的数据库,丢失了某个数据库文件,造成了数据库无法启动,同时 没有数据库的全备份, 动:

ORA-01157: cann ot ide ntify/lock data file 3 - see DBWR trace file ORA-01110: data file 3: 'D:\\ORACLE\\ORADATA\\TEST\\USERS01.DBF

但有该数据文件创建以来的归档日志, 数据库无法启

解决方法

启动数据库到mou nt状态

startup mount 手工创建丢失的数据文件 alter database create datafile ‘ oldfname ' as size xxx reuse;

‘ newfname'

利用归档日志对数据文件进行恢复

recover datafile ‘ newfname';或者 recover datafile n;

打开数据库

alter database ope n;

备注:

该方法可正常打开数据库,而且不会丢失数据 该方法有两个前提

丢失的数据文件不能是系统文件 不能丢失或损坏控制文件

非 current 禾口 active 的 redo log 损坏 故障现象

误删除了 redo log ,或者redo log 被损坏,数据库能 mount,不能open: ORA-00313: open failed

for members of log group 3 of thread 1

ORA-00312: on li ne log 3 thread 1: 7oracle10/oradata/ora10g/redo03.log'

解决方法

查询v$log视图,确认损坏的

redo log group 是非current 和active

专业知识分享

WORD格式可编辑

SQL>select group#,thread#,seque nee#,

GROUP# THREAD# SEQUENCE# ARCHIVED STATUS

archived,status from v$log;

1 2

1 1 1

103 104 102

YES NO YES

INACTIVE CURRENT INACTIVE

3

如果该日志已经归档,用下面的命令清除日志内容

Alter database clear logfile group 3;

如果该日志没有归档,用下面的命令清除日志内容

Alter database clear un archived logfile group 3;

打开数据库

Alter database ope n;

尽快做一个数据库全备份

current 或 active 的 redo log 损坏

故障现象

误删除了 redo log ,或者redo log 被损坏,数据库不能打开:

ORA-00313: open failed for members of log group 2 of thread 1

ORA-00312: on li ne log 2 thread 1: 7oracle10/oradata/ora10g/redo02.log'

解决方法

查询 v$log 视图,确认损坏的 redo log group 是current 或 active SQL>select

group#,thread#,seque nee#, v$log;

GROUP# THREAD# SEQUENCE# ARCHIVED STATUS

archived,status from

1 2

1 1 1

2 4 3

YES NO YES

INACTIVE CURRENT INACTIVE

3

情况1:当前日志文件还存在,只是逻辑损坏,并且当前日志没有未决事务 需要实例恢复

alter database clear un archived logfile group 2;--

不会报

recover database un til can cel; alter database ope n resetlogs;

一般情况下,该方法不奏效,如果 clear报错,则用其它方法. 情况2:当前日志完全损

坏,且有未决事务,数据库有备份

alter database clear un archived logfile group 2;--

ERROR at line 1:

ORA-01624: log 1 needed for crash recovery of thread 1

restore database;

recover database un til can cel;-- recover database un til can cel; alter datbase ope n resetlogs;

会报错

选择 auto

专业知识分享

WORD格式可编辑

尽快做一个数据库全备份

情况3:当前日志完全损坏,且有未决事务,数据库无备份

shutdow n immediate; _allow_resetlogs_corruptio n=true; startup mount pfile= ‘ xxx '; recover database un til can cel; alter datbase ope n resetlogs; shutdow n immediate

_allow_resetlogs_corruptio n=true; Startup

尽快做一个数据库全备份 临时表空间的数据文件损坏 故障现象

临时表空间的数据文件发生损坏,系统出现故障,如何恢复

解决方法

在10g及以上版本数据库,启动数据库时,如果发现临时数据文件损坏,xx' size xx 会 自动创建,如果在数据库运行过程中,可以手工重建

create temporary tablespace temp1 tempfile

alter database default temporary tablespace temp1;--

系统默

认临时表空间的重建需要执行这一步,否则不需要

drop tablespace temp;

alter tablespace temp1 ren ame to temp;

在10g以前版本数据库,可以在数据库打开后或运行过程中, 以了

alter database datafile

手工重建就可 女口果数据库打

‘ xxx ' offline drop;--

不开,就执行这个步骤

create temporary tablespace temp1 tempfile ‘ xx' size xx': alter database default

temporary tablespace temp1;--

系统默

9i以前版本也

认临时表空间的重建需要执行这一步,否则不需要, 不需要。

drop tablespace temp;

alter tablespace temp1 ren ame to temp;

UNDO数据文件损坏,数据库无法启动 故障现象

Undo数据文件发生了丢失或损坏,数据库启动报错

ORA-01157: cann ot ide ntify/lock data file 2 - see DBWR trace file ORA-01110: data file 2: 7oracle10/oradata/ora10g/undotbs01.dbf

解决方法

如果数据库有备份,则利用备份进行恢复 如果数据库没有备份,则利用重建

startup mount

alter database datafile n offline drop;(删除损坏的 undo 文件) alter database ope n; create undo tablespace xxx …;(仓U建一个新的 undo 表空间) alter system set undo_tablespace=xxx;(

undo表空间的方式进行恢复

指向新的 undo 表空间)

专业知识分享

WORD格式可编辑

drop tablespace yyy including contents;(

删除原来的 undo 表空

间)

控制文件损坏 故障现象

控制文件发生了损坏,数据库已经无法启动,报错信息如下:

ORA-00202: con trolfile: 'D:\\Oracle\\oradata\\che n\\con trolOl.ctl' ORA-27041: unable to open file OSD-04002: un able to open file

解决方法

情况一:控制文件有镜像,且镜像控制文件没有被损坏

关闭数据库

将没有损坏的控制文件覆盖掉损坏的控制文件,或者修改参数文件

的control_files 参数,去掉损坏的控制文件

重新启动数据库

情况二:控制文件无镜像,或者镜像的所有控制文件都损坏了

恢复控制文件

如果控制文件有备份,从备份中恢复控制文件

restore controlfile from

'

如果控制文件有 snap shot,将sn apshot控制文件替换掉原 损坏控制文件 如果做过 alter database backup con trolfile to trace

的控制文件脚本备份,可以用trace文件中的重建脚本来创 建控制文件, 如果没有备份,也没有

恢复和打开数据库

女口果是用 create con trolfile 控制文件

recover database; alter database ope n;

alter tablespace temp add tempfile ‘ xx' size xx reuse ;-- 对所有临

trace备份,只能手工编写脚本创建

控制文件,前提是你对数据库文件结构非常清楚

…no resetlogs

方式重建的

时表空间做此操作

如果是用 create controlfile

…resetlogs

方式重建的控

制文件,或者通过备份或快照恢复的控制文件

recover database using backup con trolfile; alter database ope n resetlogs;

alter tablespace temp add tempfile ‘ xx' size xx reuse ;-- 对所有临

时表空间做此操作

目录 安装配置类 实例管理类 数据管理类

数据恢复类 管理工具类

ORA-00600 ORA-07445

专业知识分享

WORD格式可编辑

目标 通过本章节的学习,您将了解以下内容 :

ORACLE工具(OEM等)的各种常见问题或故障; 这些问题或故障的诊断分析和解决方法 Oracle En terprise Man ager

出现乱码

服务之后,通过 IE浏览器使用 OEM来管

故障现象

启动oracle enterprise manager

原因分析

这是因为OEM服务的中文字符集设置不对, 正常显示,从而出现乱码

解决方法

可以通过修改IE浏览器的设置,让 OEM用英文环境,平时还是用英文环境 比较明晰,具体操作如下:

打开IE浏览器

选择’工具\"-->” In ternet选项\"-- >”常规\"

选择”语言“,默认只有”中文“,选择”添加“,加入” 英语(美国)“ 调整顺序,把“英语(美国)”移动到最上面,确定 然后重新打开IE,登陆OEM

无法使用 SQLPLUS报 ORA-12638 故障现象

Win dows 平台上 Oracle 数据库,本机无法通过 SQL plus, PLSQL Developer等工具访问 Oracle

理数据库时,界面上的很多按钮出现乱码,无法识别

使得中文在OEM界面中无法无法

数据库,连接时报错: Oracle ORA-12638:

解决方法

Credential retrieval failed 。但其它服务

器上可通过 SQL plus, PLSQL Developer 正常访问 Oracle。

打开 SQLNET.ora 文件,将 SQLNET.AUTHENTICATION_SERVICES= NTS — 行注释,如:

rman: can't ope n target

#SQLNET.AUTHENTICATION_SERVICES=(NTS

故障现象

在执行rman target / 命令时,系统报错:

oracle@li nu x:~> rman target / rman: can't ope n target

原因分析

这常常发生在linux 操作系统上,因为

oracle 的rman命令同名

linux上也有一个rman命令,与

解决方法 方法一:进入到 oracle 的rman命令所在目录下来执行 rman

oracle@li nux:~> cd $ORACLE_HOME/bi n

oracle@li nu x:~/product/9ir2/b in> ./rma n target /

方法二:修改oracle用户的环境变量配置文件,编辑其中的 将 $ORACLE_HOME/bi放 在最前面

export PATH=$ORACLE_HOME/b in :$PATH

PATH变量值,

目录 安装配置类 实例管理类 数据管理类 数据恢复类 管理工具类

专业知识分享

WORD格式可编辑

ORA-00600 ORA-07445

目标

通过本章节的学习,您将了解以下内容

ORA-00600错误的总体介绍

常见的ORA-00600错误及其解决方法

ORA-00600总体介绍

报错原因

报错参数

解决手段

Ora-00600错误的发生,本质上是因为 Oracle RDBMS程序代码在运行过程 中发生了程序意外(program exception),它属于Oracle的内部错误。

Ora-00600错误通常是由于 Oracle BUG引发的,当然,其它一些情况也有 可能引发,比如操作系

统资源不够,或者硬件出现问题时,或者不正确的操 作也有可能引起。

在出现Ora-00600错误时,通常伴随具体的报错参数,每个参数被方括号包 围,格式如下: ORA-00600 in ternal error code, argume nts: [stri ng],

[stri ng],

[stri ng],

[stri ng],

[stri ng],

[stri ng],

[stri ng],

[stri ng]

第一个参数表示了发生意外的 ORACLE弋码的位置,它对定位问题起关键作

剩下的参数提供更进一步的报错信息

通常在出现 ORA-00600时,都会在 USER_DUMP_DE或!BACKGROUND_DUMP_DEST 目录下(11g的目录结构不同)产生一些trace 文件,同时在alert.log 文件中也会产生报错信息,这些信息和trace文件可以用来帮助分析错误原 因 还可以根据报错前数据库的日志, 以及询问现场操作人员, 分析数据库在报

错之前进行了哪些操作, 分析是不是因为不正确的操作引发了

ORA-00600错

误 还可以通过 Oracle Metali nk

来更深入的查找报错信息的说明,

Oracle

metal ink 还提供了 ORA-600/ORA-7445 Troubleshooter 功能,可以查找相 同ORA-00600错误

的案例

如果没有关于您的报错信息的说明,需向

Oracle support

请求支持,比女口

专业知识分享

WORD格式可编辑

在 metal ink 上开 TAR.

ORA-00600 [keltnfy-ldmlnit]

故障现象

当启动数据库时,发生

ora-00600错误:

ORA-00600: internal error code, arguments: [keltnfy-ldmlnit], [46], [1],[], [],[],[],[]

原因分析

这是由于没有正确设置操作系统的主机名造成的,通过

host name得到的主

机名称无法ping通时,oracle认为主机无法达到,所以启动数据库报错

解决方法

设置正确的 host name,并将host name添加到/etc/hosts 文件中

故障现象

ORA-00600 [2262]

警告日志中出现 ora-00600 [2262] 错误:

Thu Oct 20 10:38:27 2005

Errors in file /opt/oracle/adm in/conn er/udump/c onn er_ora_31607.trc: ORA-00600: internal

error code, arguments:

[2662],

[0],

[897694446],

[0],

[897695488], [8388697],[],[]

原因分析

在使用_ALLOW_RESETLOGS_CORRUP参数N并且以resetlogs 方式打开数 据库后,可能会遇到这个错误 .

解决方法

方法一:通过多次重启数据库,观察是否还有此报错 方法二:使用内部事件屏蔽

Alter session set events= level 1 ';

' immediate trace name ADJUST_SCN

备注:在使用 _ALLOW_RESETLOGS_CORRUP参I数N 并且以 resetlogs 方式 打开数据库后,如果数据库有很多异常现象,最好是将数据

exp出来,然后

重建库,再把数据imp进去,另外该种方法的恢复在经验丰富的 DBA的指导 下进行操作。

故障现象

数据库启动时,出现了

Sat

Jan

ora-00600[4194]错误: 21

13:55:21

2006

Errors

in

file

ORA-00600 [4194]

/opt/oracle/adm in/conner /bdump/c onn er_sm on _17113.trc:

[43],

[46],

ORA-00600: internal error code, arguments: [4194], [],[],[],[],[]

原因分析

4194错误通常说明 UNDO!息和REDO言息不匹配,表明undo数据文件出现 了坏块。

解决方法

如果有数据库全备份,可以利用备份恢复的方法来恢复 如果没有备份,利用 _corrupted_rollback_segme nts

确定当前的回滚段的名称,可以从

UNDOI空间

参数

alert文件中获得

Sat Jan 21 13:55:21 2006

专业知识分享

WORD格式可编辑

Undo Segme nt 11 On li ned Undo Segme nt 12 On li ned Undo Segme nt 13 On li ned

Successfully on li ned Undo Tablespace 16.

在AUM(auto undo management)下的回滚段名称为:

'_SYSSMU11$','_SYSSMU12$','_SYSSMU13$

用隐含参数_corrupted_rollback_segments

_corrupted_rollback_segme nts='_SYSSMU11$','_SYSSMU12$','_SYSSMU13$

,标记已损坏回滚段

使用更改后的参数文件启动数据库

startup pfile= ‘ xxxx ';

数据库open后,创建新的undo表空间,将默认的UNDO表空间指向 新的表空间,然后删除有问题的

隐含参数,由参数文件生成新的 骤如下:

create undo tablespace undotbs_new datafile size xxx;

alter system set un do_tablespace=un dotbs_ new; drop tablespace un dotbs_old;

UNDOI空间,修改参数文件,去掉 spfile ,重新启动数据库,具体步

‘ xxx '

修改 in it 隐含参数

参数文件,去掉 _corrupted_rollback_segme nts

修改 init 参数文件,undo_tablespace=undotbs_new 仓U建 spfile: create

spfile from pfile= ‘ xxxxx ';

shutdow n immediate startup

ORA-00600 [qerrmOFBu1 ]

故障现象

alertSID.log

Mon Mar 31 11:51:46 2008

Errors in file /oracle/admi n/icdb/udump/icdb_ora_741440.trc:

ORA-00600: internal error code, arguments: [qerrmOFBu1], [28],[],[],[],[],[], []

文件中偶尔出现下面的报错:

原因分析

在使用dblink来查询或修改远端库的数据时,出现错误信息,如果远端的 错误信息没有被远端库正常处理,那么在本地库就会以

ora-00600[qerrmOFBU1 ]方式报错,上述第二个参数

28,就是代表了在远

端库发生了 ora-00028(session

解决方法

被kill) 的错误。

DBA手工KILL,

如果导致远端错误的原因是正常的,比如用户终止操作或被 那么可以认为是正常情况

该问题是oracle9201的bug,升级到9202以上即可解决

ORA-00600 [kccsbck_first ]

故障现象

数据库从主机切换到备机,在备机上启动数据库报错

专业知识分享

WORD格式可编辑

ORA-00600: in ternal error code, argume nts: [kccsbck_first], [1],

[1990285812],[],[],[],[],[]

原因分析

根据metalink 的说明,[kccsbck_first], 表示数据库已经被其它实例

mount,因此在尝试在新的实例中 mount时会报这个错误.因此估计是双机切 shutdow n

换时,主机上的数据库没有完全

解决方法

检查主机上的oracle实例状态,发现是 open的,也就是说,ha的切换脚本 没有正常关库,手工关闭此库

利用ha将磁盘资源切换到备机 启动数据库,不再报错

目录 安装配置类 实例管理类 数据管理类 数据恢复类 管理工具类

ORA-00600 ORA-07445

目标

通过本章节的学习,您将了解以下内容

ORA-07445错误的总体介绍

常见的ORA-07445错误及其解决方法

ORA-07445总体介绍

报错原因

Ora-07445的发生,是因为 Oracle Server 进程在收到操作系统的致命信号 时抛出的错误,

这个 Oracle Server进程可能是用户进程,也可能是后台进 程 很多引发Ora-07445情况是由于操作系统自身的冋题,而不是 题

还有一些情况报并不表示操作系统和 试图访冋无效的内存区域,

报错信息

产生ORA-07445的时候,将伴随以下信息:

在alert告警日志中会显示 ORA-07445信息,和trace文件的位置 在

user_dump_dest 或 background_dump_dest 目录下相应的 trace 文件

ORACLE有问题,比如有一个程序进程

oracle的冋

操作系统为了保护内存阻止该进程操作, 就会给

ORACLED出致命信号,ORACL便会抛出该错。

在 core_dump_dest 目录下生成的 core dump 文件

报错参数

Ora-07445错误,通常伴随具体的报错参数,每个参数被方括号包围 ORA-07445: exception encountered: core dump [][][][][][] ORA-07445报错参数有两种形式,类似如下:

形式一:

ORA-07445: exception [In valid address alig nmen t][][][]

encountered:

core dump [run_some_SQL()+268] [SIGBUS]

第一个参数表示发生错误的操作

第二个参数表示信号种类,其它的种类还有SIGSEGV,SIGIOT 等 其它参数提供更进一步的信息

专业知识分享

WORD格式可编辑

形式二:

ORA-07445: exception encoun tered: core dump [10] [2122262800] [261978112][] [][]

没有给出发生错误的操作 第一个参数表示信号种类, 其它参数提供更进一步的信息, 处不大

解决手段

分析相关的信息,包括相关的 可以通过 Oracle Metali nk

alert日志,trace文件

10代表了 SIGBUS

但这种情况下的其它参数用

来更深入的查找报错信息的说明,或者访问

Oracle support 请求支持•

ORA-600/ORA-7445 Troubleshooter 功能,查找以往案例

如果没有关于您的报错信息的说明,需要向

ORA-07445 [_kill()+48] [SIGIOT]

故障现象

警告日志中出现 ora-07445错误:

Thu Jan 24 02:12:36 2008

Errors in file /opt/app/oracle/admi n/gzgov/udump/gzgov1_ora_8417.trc: ORA-07445: exception encountered: core dump [_kill()+48] [0X0000020E1][][]

[SIGIOT] [unknown code]

解决方法

分析trace文件,发现下面的 sql造成报错:

SELECT /*+NESTED_TABLE_GET_REFS+*/ \"GZGOVII\".\"GZGOV_NEWSCLICK\".* FROM \"GZGOVII\".\"GZGOV_NEWSCLICK

查询 oracle 文档,得知 NESTED_TABLE_GET_REFS hi nt 是 oracle 在 exp,imp,load 时自动加上的语句

查看系统的exp任务日志,果然发现 exp有报错.

分析ORA-07445的第二个参数,SIGIOT,应该跟操作系统的IO有关 用bdf查看文件系统,发现

172.16.1.165 的 nfs 服务

172.16.1.165:/data/gzgov_db_bak

85728728

/root/db_exp

66324200

15049712

82%

exp的导出dmp文件所在的目录是 nfs文件系统,使用的是

登陆到172.16.1.165,发现该机器是linux 系统,并且用执行 程hang住,用chkconfig 可正常执行

再到数据库服务器上做

exp测试,没有报错

df - m时进

- list 查询nfs进程,已经非正常关闭

此时发现 df - m

重启 nfs 服务,service nfs stop; service nfs start,

专业知识分享

因篇幅问题不能全部显示,请点此查看更多更全内容

Top