Oracle常见问题解决
- 格式:doc
- 大小:68.68 KB
- 文档页数:5
oracle常见故障处理手册一、数据库启动与关闭故障1.数据库启动失败原因:可能是由于Oracle数据库配置不正确、系统环境变量设置不正确、初始化参数设置不正确等原因导致。
解决方法:检查数据库日志文件,查看错误信息,根据错误信息进行相应的修复。
2.数据库关闭失败原因:可能是由于数据库事务未完成、数据库锁未释放等原因导致。
解决方法:检查数据库日志文件,查看错误信息,根据错误信息进行相应的修复。
二、连接故障1.连接不成功原因:可能是由于网络连接问题、数据库用户名或密码错误、数据库实例名错误等原因导致。
解决方法:检查网络连接是否正常,检查数据库用户名和密码是否正确,检查数据库实例名是否正确。
2.连接断开原因:可能是由于网络不稳定、数据库服务器异常等原因导致。
解决方法:检查网络连接是否正常,检查数据库服务器是否正常。
三、数据恢复故障1.数据丢失原因:可能是由于数据库损坏、磁盘故障等原因导致。
解决方法:根据数据丢失的原因,选择相应的恢复方法,如使用备份恢复数据或使用日志文件恢复数据。
2.数据不一致原因:可能是由于数据修改不一致、数据复制不一致等原因导致。
解决方法:检查数据修改和复制的日志文件,找到不一致的数据并修复。
四、性能优化故障1.性能下降原因:可能是由于CPU占用过高、内存占用过高、磁盘IO过大等原因导致。
解决方法:优化数据库配置参数,如增加内存、优化磁盘IO等。
2.查询速度慢原因:可能是由于查询语句不优化、表没有建立索引等原因导致。
解决方法:优化查询语句,为表建立索引等。
五、存储管理故障1.存储空间不足原因:可能是由于磁盘空间不足、表空间不足等原因导致。
解决方法:清理磁盘空间,增加磁盘空间,调整表空间大小等。
2.数据文件丢失或损坏原因:可能是由于磁盘故障、人为误删除或修改等原因导致。
解决方法:使用备份恢复数据文件或修复损坏的数据文件。
六、网络连接故障1.网络连接中断原因:可能是由于网络设备故障、网络连接线故障等原因导致。
ORACLESPATIAL常见使用错误解决办法ORACLESPATIAL是一个基于Oracle数据库的空间数据管理系统,它提供了强大的空间数据处理和分析功能。
然而,在使用ORACLESPATIAL时,可能会遇到一些常见的问题和错误。
以下是一些常见的ORACLESPATIAL使用错误以及解决办法:1.几何数据插入错误:当向ORACLESPATIAL中插入几何数据时,可能会遇到以下错误:解决办法:这个错误通常是由于LRS(Linear Referencing System)点的格式错误导致的。
请确保LRS点的格式正确,并遵循ORACLESPATIAL的要求。
解决办法:这个错误通常是由于图层的空间参考标识符(SRID)与几何数据的SRID不匹配导致的。
请确保图层的SRID与要插入的几何数据的SRID相匹配。
2.空间索引错误:空间索引是ORACLESPATIAL中提高空间查询效率的重要组成部分。
以下是一些常见的空间索引错误和解决办法:-索引不可见:如果空间索引不可见,可能会导致空间查询的性能下降。
可以通过使用'SDO_GEOM.RETRY_DEFERRED_INDEXING'函数来强制使索引可见,从而解决此问题。
-索引创建失败:如果创建空间索引时失败,可能是由于多个原因引起的。
可以通过以下步骤来解决此问题:-检查空间表的几何数据是否符合ORACLESPATIAL的要求。
-确保空间表的SRID正确设置,并与索引的SRID相匹配。
-确保空间表的几何列没有空值。
-检查是否有足够的空间和权限来创建索引。
3.空间查询错误:当使用ORACLESPATIAL进行空间查询时,可能会遇到以下错误:解决办法:这个错误通常是由于查询中的列名拼写错误或不存在导致的。
请检查查询中的列名拼写,并确保列名存在。
解决办法:这个错误通常是由于没有为查询创建适当的空间索引引起的。
请确保空间表的几何列有适当的空间索引,以便进行空间查询。
Oracle常见错误 ORA-01017通常表示用户名或密码不正确,但在您的情况下,问题可能与 Oracle 11g 客户端和 Oracle 19c 数据库之间的兼容性有关。
可能的原因用户名或密码错误:首先,确保输入的用户名和密码是正确的。
密码版本兼容性:Oracle 19c 默认使用更高版本的密码加密算法,而 Oracle 11g 客户端可能不支持。
数据库参数配置:某些数据库参数可能需要调整以支持旧版本客户端的连接。
解决方案1. 确认用户名和密码首先,确保您输入的用户名和密码是正确的,并且没有输入错误。
2. 检查密码案例敏感Oracle 11g 和 19c 在处理密码时可能有不同的大小写敏感。
确保密码的大小写与创建用户时设置的密码一致。
3. 调整密码版本兼容Oracle 19c 默认使用 12c 及以上版本的密码加密算法。
为了兼容旧版本客户端,可以调整数据库参数,使其支持旧版本的密码加密算法。
连接到 Oracle 19c 数据库实例:sqlplus / as sysdba检查当前的 SQLNET.ALLOWED_LOGON_VERSION_SERVER 参数:SHOW PARAMETER SQLNET.ALLOWED_LOGON_VERSION_SERVER;如果需要修改参数,可以编辑 sqlnet.ora 文件:vi $ORACLE_HOME/network/admin/sqlnet.ora添加或修改以下参数:SQLNET.ALLOWED_LOGON_VERSION_SERVER=11SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11保存并关闭文件,然后重启数据库监听程序:lsnrctl stoplsnrctl start4. 重新设置用户密码重新设置用户密码可以确保密码使用兼容的加密算法。
连接到 Oracle 19c 数据库实例:sqlplus / as sysdba重新设置用户密码:ALTER USER <username> IDENTIFIED BY <new_password>;5. 检查和调整数据库参数某些数据库参数可能需要调整以支持旧版本客户端的连接。
常见问题问题1 :在SecureCRT等远程访问Linux的软件中,用Oracle用户运行./runInstaller 命令安装Oracle时,提示“DISPLAY尚未设置”、““DISPLAY尚未设置”等信息。
解决方法:实际上为oracle用户没有权限登陆X11图形化界面,且该远程访问软件不能登陆图形化界面。
✧方法一、执行su –oracle命令,再输入“./runInstaller”命令安装数据库即可,因为Linux默认的运行级别即图形化界面,具体设置如/etc/inittab文件里“id:5:initdefault:”,init5即代表图形化界面。
提示“Cannot convert string to type FontStruct”时,可以不用管它,随后在Linux操作系统的窗口中弹出了Oracle的安装界面。
如果还是提示“DISPLAY尚未设置”、““DISPLAY尚未设置”等信息,请执行如下命令:xhost +192.168.7.21,执行后提示“192.168.7.21being added to access control list”时,表明用户可访问Linux图形化界面了。
具体更复杂的设置参照: /12778571/viewspace-353135✧方法二、Xmanager软件则可以规避这个问题,它本身是个图形化界面;运行./runInstaller命令即可成功安装Oracle 。
问题2 :如果在检测Oracle安装的先决条件的安装过程中,提示“gcc-3.2.2未安装通过”,且执行“rpm -ivh gcc-3.2.3-52.i386.rpm”命令后,提示“warning: gcc-3.2.2-5.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e ;error: Failed dependencies:cpp = 3.2.2-5 is needed by gcc-3.2.2-5 ”。
Oracle的常见错误及解决办法ORA-12528:TNS:listener: all appropriate instances are blocking new connectionsORA-12528问题是因为监听中的服务使⽤了动态服务,实例虽然启动,但没有注册到监听。
实例是通过PMON进程注册到监听上的,⽽PMON进程需要在MOUNT状态下才会启动。
所以造成了上⾯的错误。
解决这个问题,有三种⽅法:1、把监听设置为静态;2、在tnsnames.ora中追加(UR=A);3、重新启动服务;⽅法1、通过修改listener.ora的参数,把listener.ora动态注册设置为静态注册,然后重新启动监听# listener.ora Network Configuration File: $ORACLE_HOME\network\admin\listener.ora# Generated by Oracle configuration tools.LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))(ADDRESS = (PROTOCOL = TCP)(HOST = [IP])(PORT = 1521))))SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = [DBNAME])(ORACLE_HOME = [$ORACLE_HOME])(SID_NAME = [SID])))静态注册的风险:如果在instance运⾏中,lisener重新启动,就找不到instance了。
静态注册需要先启动lisener,再启动instance。
且静态模式下,lisener status显⽰的是unknown⽅法2、启动到nomount状态,通过修改tnsnames.ora的参数# tnsnames.ora Network Configuration File: $ORACLE_HOME\network\admin\tnsnames.ora# Generated by Oracle configuration tools.SYK =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = [IP])(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = SYK)(UR=A)))然后连接上数据库SQL>alter database mount;SQL>alter database open;⽅法3、重启ORACLE或者重启ORACLE服务在oracle帐户下依序执⾏如下命令:sqlplus / as sysdba;//在其它帐户(如root)下执⾏可能会报错(ORA-01031)因为这些帐户没有在dba组中shutdown immediate;startup;oracle实例名: error while loading shared libraries: libskgxp10.so: cannot open shared object file: No such file or directory是环境变量LD_LIBRARY_PATH的问题。
oracle常见故障处理
--1.语句级故障,通常为DML ,DQL,DCL,DDL等等
⽆效数据 -->使⽤数据符合相关约束,满⾜值域的数据
缺少权限 -->给予⽤户所需的权限
空间分配问题 -->使⽤alter session enable resumable,增加⽤户配额,增加表空间⼤⼩
应⽤程序逻辑错误 -->修正逻辑错误
--2.⽤户进程故障
⽤户⾮登出的异常退出
⽤户会话异常终⽌
程序错误导致会话结束
对于上述错误,实例后台进程PMON会⾃动回滚未提交的事务,并释放相关锁资源
--3.⽹络故障
侦听器故障 -->配置⼀个备份的侦听器,connect-time故障转移
⽹络接⼝卡故障 -->使⽤多个⽹络接⼝卡
⽹络连接故障(路由) -->配置⼀个备份的⽹络连接
--4.⽤户错误
⽤户意外删除或修改数据 -->回滚或使⽤闪回查询来恢复
⽤户删除表 -->从回收站闪回删除
--5.介质故障
磁盘故障
磁盘控制器故障
删除或损坏数据⽂件
可能的解决⽅案,使⽤联机事务⽇志从备份恢复受影响的⽂件或恢复数据⽂件到新的物理位置
--6.实例故障
电源负载故障
硬件故障
后台进程失败
异常关闭数据库
解决⽅案,使⽤startup 重新启动实例。
实例实现⾃动恢复,根据联机⽇志⽂件前滚提交的事务,回滚未提交的事务查看告警⽇志、跟踪⽇志等找出出现故障的原因。
O r a c l e常见错误及解决方案问题1:Oracle服务器进入PL/SQL Developer时报ora-01033:oracle initialization or shutdown in progress 错误提示,应用系统无法连接Oracle服务。
解决方法如下:⑴进入CMD,执行set ORACLE_SID=fbms,确保连接到正确的SID;⑵运行sqlplus "/as sysdba"SQL>shutdown immediate停止服务SQL>startup启动服务,观察启动时有无数据文件加载报错,并记住出错数据文件标号SQL>shutdown immediate再次停止服务SQL>startup mountSQL> recover datafile 2恢复出错的数据文件SQL>shutdown immediate再次停止服务SQL>startup启动服务,此次正常。
⑶进入PL/SQL Developer检查,没有再提示错误。
问题2:Oracle密码忘记了怎么办?解决方法有很多种,这里讲述以下三种:⑴打开cmd,输入sqlplus /nolog,回车;输入“conn / as sysdba”;输入“alter user sys identified by 新密码”。
注意:新密码最好以字母开头,否则可能出现错误Ora-00988。
有了这个方法后,只要自己对oracle 服务器有管理员权限,Oracle密码忘记了也不用着急,可以随意修改密码。
⑵在命令行执行如下命令:sqlplus "/@服务名as sysdba"然后在sqlplus中运行以上命令即可修改密码:alter user sys identified by 新密码;alter user system identified by 新密码;⑶运行到C盘根目录输入:SET ORACLE_SID = 你的SID名称输入:sqlplus/nolog输入:connect/as sysdba输入:alert user sys identified by sys输入:alert user system identified by system完成以上5步,则密码更改完成,密码是Oracle数据库的初始密码。
Oracle常见错误及解决办法Ø简介本⽂主要记录 Oracle 常见错误及解决办法,包括以下内容:1.ORA-00054: 资源正忙, 但指定以 NOWAIT ⽅式获取资源, 或者超时失效2.ORA-01034: ORACLE not available3.ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated(启动数据库报错)4.ORA-12154: TNS: ⽆法解析指定的连接标识符5.ORA-12514: TNS:listener does not currently know of service requested in connect descriptor6.ORA-12541: TNS:no listener7.ORA-12560: TNS: 协议适配器错误8.ORA-27125: unable to create shared memory segment(启动数据库报错)9.ORA-28040: 没有匹配的验证协议((11g dblink 连接 12c 时)1.ORA-00054: 资源正忙, 但指定以 NOWAIT ⽅式获取资源, 或者超时失效n错误原因由于其他 Session 已经对⽬标表做了操作,并且已经有排他锁在表上了,所以新的 Session ⽆法再对表进⾏DDL操作。
n解决办法以 system ⽤户登录:1)查询被锁的会话IDselect session_id from v$locked_object;2)查询 sid, serial# 字段SELECT sid, serial#, username, osuser FROM v$session where sid = 9;3)将锁定的会话关闭ALTER SYSTEM KILL SESSION '9,99';2.ORA-01034: ORACLE not available1)检查当前数据库实例是否启动3.ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated(启动数据库报错)n错误描述SQL> startupORA-01261: Parameter db_recovery_file_dest destination string cannot be translatedORA-01262: Stat failed on a file destination directoryLinux-x86_64 Error: 2: No such file or directoryn解决办法(没有效果)不知道是什么原因,导致 $ORACLE_BASE/fast_recovery_area 少了这个⽬录,⽽导致了这个错误。
ORACLE数据库故障解决方案Oracle数据库是当前世界上应用最广泛的关系型数据库之一,但在日常运维中,难免会遇到各种故障,如数据损坏、数据库停机等。
因此,能够迅速、准确地解决数据库故障至关重要。
本文将介绍几种常见的Oracle数据库故障解决方案。
1.数据库无法启动当Oracle数据库无法启动时,往往是由于以下原因导致的:数据库实例未启动、数据库文件损坏或不完整、数据库连接问题等。
我们可以采取以下步骤来解决这个问题:- 检查错误日志:查看数据库的错误日志文件(alert.log)以获取详细的错误信息,确定故障原因。
- 检查数据库实例:在Oracle数据库中,数据库实例由后台进程(如后台进程和前台进程)组成。
如果实例未启动,可以使用SQL*Plus 工具来手动启动实例,并确保每个后台进程正常运行。
- 恢复数据库文件:如果数据库文件损坏或不完整,可以使用Oracle提供的RMAN工具来恢复文件,或者使用备份文件进行恢复。
- 检查数据库连接:使用SQL*Plus工具检查数据库连接是否正常,如果存在连接问题,可以尝试重新配置网络服务或重启数据库监听器。
2.数据损坏数据损坏是Oracle数据库常见的故障之一,可能由硬件故障、软件错误、人为操作错误等原因引起。
当发生数据损坏时,可以使用以下方案进行修复:-恢复备份数据:如果有备份数据,则可以通过将备份数据恢复到故障数据库来解决数据损坏问题。
尽量选择最新的备份数据,以尽可能减少数据丢失。
- 利用日志文件:如果无法恢复备份数据,可以使用Oracle的恢复管理工具RMAN来利用归档日志文件进行恢复。
RMAN可以将日志文件中的变更应用到数据库中,避免数据丢失。
-手动修复:在一些情况下,可能需要手动修复数据。
具体操作方法取决于数据损坏的程度和类型,需要根据具体的情况采取相应的措施。
3.性能问题Oracle数据库性能问题常常涉及到数据库的优化、调整和配置。
下面是解决性能问题的一些常见方法:-查询优化:通过优化SQL查询语句,可以提高查询的性能。
Oracle常见死锁发生的原因以及解决方法死锁是指在并发程序中,两个或多个进程因为争夺系统资源而陷入无限等待的状态,从而无法继续执行下去。
在Oracle数据库中,死锁是一个非常常见的问题,它会导致系统性能下降,甚至造成系统崩溃。
本文将详细介绍Oracle常见死锁发生的原因以及解决方法。
一、死锁发生的原因1.竞争资源:当多个进程同时请求相同的资源时,可能会导致死锁的发生。
例如,如果两个进程同时请求一个表的写锁,那么它们就会陷入死锁状态。
2.锁的顺序:当多个进程按照不同的顺序请求锁时,可能会导致死锁的发生。
例如,如果进程A先请求资源X,再请求资源Y,而进程B先请求资源Y,再请求资源X,那么它们就会陷入死锁状态。
3.锁的持有时间:当一个进程持有一个锁,并且在等待其他资源时继续保持该锁,可能会导致死锁的发生。
例如,如果进程A持有资源X的锁,并且在等待资源Y时继续保持该锁,而进程B持有资源Y的锁,并且在等待资源X时继续保持该锁,那么它们就会陷入死锁状态。
二、死锁的解决方法1. 死锁检测和解除:Oracle数据库提供了死锁检测和解除的机制。
当一个进程请求一个资源时,数据库会检查是否存在死锁。
如果存在死锁,数据库会选择一个进程进行回滚,解除死锁状态,并且通知其他进程重新尝试获取资源。
2.超时设置:为了避免死锁的发生,可以设置超时时间。
当一个进程请求一个资源时,如果在指定的超时时间内无法获取资源,那么就放弃该请求,并且释放已经持有的资源。
这样可以防止死锁的发生,但是会增加系统的开销。
3.锁的顺序:为了避免死锁的发生,可以规定所有进程按照相同的顺序请求锁。
例如,可以规定所有进程按照资源的名称进行排序,然后按照顺序请求锁。
这样可以避免死锁的发生,但是可能会影响系统的性能。
4.锁的粒度:为了避免死锁的发生,可以尽量减小锁的粒度。
例如,可以将一个大的锁分解成多个小的锁,这样可以减少锁的冲突,降低死锁的概率。
但是需要注意的是,锁的粒度过小可能会导致系统的性能下降。
问题一:注册表相关项被优化软件优化(删除)
对于系统的每一个服务,在注册表中都有所保存:
监听服务的注册表项
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\OracleOraDb10g_home1TNSListener 里面有一个"ImagePath"项,内容是:
D:\server\oracle\product\10.2.0\db_1\BIN\TNSLSNR 这一项可能会在使用优化软件的时候被自动删除
如果被删除了,应该按照下面的方式建立一个新的项
如图:
问题二:网络环境发生改变
Oracle 10g中,如果网络环境发生了改变,有可能原始配置网络无法正常运行,此时必须手动进行网络配置的修改
网络环境的改变,最多的是指计算机名称的改变。
【我的电脑】-【属性】-【计算机名】-【更改计算机名】
计算机名一旦更改,这样一来实际的计算机网络名称已经发生变化,如果在Oracle 11g中,这个问题可以帮助用户自动配置,但在Oracle 10g中必须手动配置
监听服务(OracleOraDb10g_home1TNSListener)就会启动失败
解决办法分两步:
第一步:分别修改D:\server\Oracle\product\10.2.0\db_1\NETWORK\ADMIN目录下的连个文件:tnsnames.ora和listener.ora
tnsnames.ora(把红色加粗的地方修改成当前的计算机名)
--------------------------------------------------------------------------------
# listener.ora Network Configuration File:
D:\server\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\server\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
--------------------------------------------------------------------------------
listener.ora(将红色加粗的地方修改成自己当前的计算机名)
-----------------------------------------------------------------------------------
# tnsnames.ora Network Configuration File:
D:\server\oracle\product\10.2.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
-------------------------------------------------------------------------------------
第二步:选择【Net Manager】,进入网配置界面(【本地】-【监听程序】-【数据库服务】-【添加数据库】)
在全局数据库名和SID中输入数据库实例的名字(安装的时候起的名字,或者看数据库实例服务的名称:OracleService ORCL,加红加粗的既是)。