oracle报错及解决办法
Oracle的常见错误及解决办法

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;/s/blog_636415010100x3lc.htmloracle实例名: error while loading shared libraries: libskgxp10.so: cannot open shared object file: No such file or directory是环境变量LD_LIBRARY_PATH的问题。
oracle常见故障处理手册

oracle常见故障处理手册一、数据库启动与关闭故障1.数据库启动失败原因:可能是由于Oracle数据库配置不正确、系统环境变量设置不正确、初始化参数设置不正确等原因导致。
解决方法:检查数据库日志文件,查看错误信息,根据错误信息进行相应的修复。
2.数据库关闭失败原因:可能是由于数据库事务未完成、数据库锁未释放等原因导致。
解决方法:检查数据库日志文件,查看错误信息,根据错误信息进行相应的修复。
二、连接故障1.连接不成功原因:可能是由于网络连接问题、数据库用户名或密码错误、数据库实例名错误等原因导致。
解决方法:检查网络连接是否正常,检查数据库用户名和密码是否正确,检查数据库实例名是否正确。
2.连接断开原因:可能是由于网络不稳定、数据库服务器异常等原因导致。
解决方法:检查网络连接是否正常,检查数据库服务器是否正常。
三、数据恢复故障1.数据丢失原因:可能是由于数据库损坏、磁盘故障等原因导致。
解决方法:根据数据丢失的原因,选择相应的恢复方法,如使用备份恢复数据或使用日志文件恢复数据。
2.数据不一致原因:可能是由于数据修改不一致、数据复制不一致等原因导致。
解决方法:检查数据修改和复制的日志文件,找到不一致的数据并修复。
四、性能优化故障1.性能下降原因:可能是由于CPU占用过高、内存占用过高、磁盘IO过大等原因导致。
解决方法:优化数据库配置参数,如增加内存、优化磁盘IO等。
2.查询速度慢原因:可能是由于查询语句不优化、表没有建立索引等原因导致。
解决方法:优化查询语句,为表建立索引等。
五、存储管理故障1.存储空间不足原因:可能是由于磁盘空间不足、表空间不足等原因导致。
解决方法:清理磁盘空间,增加磁盘空间,调整表空间大小等。
2.数据文件丢失或损坏原因:可能是由于磁盘故障、人为误删除或修改等原因导致。
解决方法:使用备份恢复数据文件或修复损坏的数据文件。
六、网络连接故障1.网络连接中断原因:可能是由于网络设备故障、网络连接线故障等原因导致。
oracle错误ORA-01017问题分析与解决方法

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. 检查和调整数据库参数某些数据库参数可能需要调整以支持旧版本客户端的连接。
ORACLE 数据库故障解决方案

ORACLE 数据库故障解决方案一、背景介绍ORACLE数据库是一种常用的关系型数据库管理系统,广泛应用于企业级应用中。
然而,在使用ORACLE数据库的过程中,可能会遇到各种故障,例如数据库无法启动、数据丢失、性能下降等问题。
本文将介绍一些常见的ORACLE数据库故障,并提供相应的解决方案。
二、常见故障及解决方案1. 数据库无法启动故障现象:当尝试启动ORACLE数据库时,可能会遇到无法启动的情况。
解决方案:- 检查数据库实例是否已经启动。
可以使用命令`ps -ef | grep pmon`来检查数据库实例进程是否存在。
- 检查数据库监听器是否已经启动。
可以使用命令`lsnrctl status`来检查监听器状态。
- 检查数据库日志文件,查找错误信息。
可以通过查看数据库的alert日志文件来获取更多信息。
2. 数据库数据丢失故障现象:数据库中的部分或全部数据丢失。
解决方案:- 恢复备份数据。
如果有定期备份数据库的策略,可以使用备份数据进行恢复。
- 使用闪回技术。
ORACLE数据库提供了闪回技术,可以将数据库恢复到某个时间点的状态。
- 使用数据恢复工具。
如果以上方法无法解决问题,可以考虑使用第三方的数据恢复工具。
3. 数据库性能下降故障现象:数据库的响应时间变慢,性能下降。
解决方案:- 分析数据库性能指标。
可以使用ORACLE提供的性能监控工具,如AWR报告、ASH报告等,来分析数据库的性能指标,找出性能瓶颈所在。
- 优化SQL语句。
通过分析慢查询日志,找出执行时间较长的SQL语句,并进行优化,如添加索引、重写SQL语句等。
- 调整数据库参数。
根据数据库的负载情况,适当调整数据库的参数配置,如SGA大小、PGA大小等。
4. 数据库实例崩溃故障现象:数据库实例突然崩溃,无法正常工作。
解决方案:- 检查数据库错误日志。
可以通过查看数据库的alert日志文件来获取崩溃的原因。
- 恢复数据库实例。
可以使用ORACLE提供的恢复工具,如RECOVER命令、RMAN工具等,来恢复数据库实例。
ORACLE 数据库故障解决方案

ORACLE 数据库故障解决方案故障描述:在使用ORACLE数据库的过程中,可能会遇到各种各样的故障,例如数据库无法启动、数据库连接失败、数据丢失等问题。
本文将针对这些故障提供解决方案。
1. 数据库无法启动的解决方案:- 检查数据库实例是否正常启动,可以使用`lsnrctl status`命令来查看监听器的状态。
- 检查数据库的日志文件,例如alert.log,查看是否有任何错误信息。
- 检查数据库的参数文件,确保参数设置正确。
- 尝试重启数据库实例,可以使用`shutdown immediate`和`startup`命令来重启数据库。
2. 数据库连接失败的解决方案:- 检查网络连接是否正常,可以使用ping命令来测试数据库服务器的连通性。
- 检查数据库监听器是否正常运行,可以使用`lsnrctl status`命令来查看监听器的状态。
- 检查数据库的监听器配置文件,确保监听器监听的端口和服务名设置正确。
- 检查数据库的用户和密码是否正确,可以尝试使用sqlplus工具来连接数据库。
3. 数据丢失的解决方案:- 检查数据库的备份情况,如果有备份文件,可以尝试恢复数据。
- 如果没有备份文件,可以尝试使用数据库的日志文件进行恢复,可以使用`recover database`命令来进行恢复操作。
- 如果以上方法都无法恢复数据,可以尝试使用第三方工具来进行数据恢复。
4. 数据库性能问题的解决方案:- 检查数据库的性能参数设置,例如SGA和PGA的大小,可以根据实际情况进行调整。
- 检查数据库的索引情况,如果索引过多或者索引失效,可以进行重新建立或者优化。
- 检查数据库的SQL语句,如果有性能较差的SQL语句,可以进行优化或者重写。
- 检查数据库的硬件资源使用情况,例如CPU和内存的使用情况,可以根据实际情况进行调整。
5. 数据库安全问题的解决方案:- 检查数据库的用户和权限设置,确保只有授权的用户能够访问数据库。
Oracle常见错误及解决方案

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最全面的错误疑难解决方案和总结文档Ⅰ.oracle itcast本文档对应程序在myeclipse的jdbc/src/下Oracle 安装自动生成sys用户和system用户sys 超级用户具有最高权限具有sysDBA角色,有create database权限该用户默认密码是change_in_installsystem 管理操作员权限也比较大,具有sysoper角色,没有create database权限。
该用户默认密码是manager 这是通过sqlplus客户端连接数据库时有多个实例采用下面DOS命令:sqlplus scott/tiger@zhulin 见2.13 oracle创建数据库实例启动sqlplus,然后登陆数据库出现错误:TNS:协议适配器错误原因有3个:1.监听服务没有启动:services.msc或开始―程序―管理工具―服务,打开服务面板:启动oraclehome92TNSlistener服务2.database instance没有启动:services.msc或开始―程序―管理工具―服务启动oralceserviceXXX,XXX就是你databaseSID 如zhulin 3.注册表问题:regedit.msc 进入HKEY_LOCAL_*****\*****E\ORACLE\KEY_OraDb11g_home1 下的ORACLE_SID值修改为zhulin 你的全局数据库名字你的数据库SID即可。
ORACLE用SYS和SYSTEM默认密码登录提示ORA-01017:invalid username/password;logond denied该怎么解决?解决办法:有可能是你在建数据库的时候, 修改了默认的密码而自己又忘记你可再重新修改过来sqlplus / as sysdbaalter user system identified by manager; alter user sys identified by manager;或者改成其他的你自己容易记住的默认scott用户密码是tiger1.oralce解锁步骤先使用system登录然后输入alter user scott account unlock;//解锁scott账号SQL语句必须带分号!!!!!!!!!!!!!最好都分号结束2.oralce开发工具sqlpulsw和sqlus工具在开始→程序→oracle oradb_home10g→application development→sqlplus 或在运行栏输入sqlpluspl/sql developer 这款软件用的很多第三方软件需要单独安装企业管理器(web) 首先保证相关服务启动即oracleDBconsole+实例名启动在浏览器中输入http://ip:1158//em ip是指你的具体ip地址或者你的机器名1158是端口一般情况下这个服务是不启动很不安全3.oracle常用sql plus命令(1)请使用scott用户登录oracle数据库实例,然后切换为身份为system 简单使用conn 用户名/密码登录后,使用conn[ect] 用户名/密码@网络[as sysdba/sysoper] (2)show user 显示当前用户名(3) 断开连接disc[onnect](4)exit 断开连接和退出sqlplus窗口(5) 修改密码(前提是system或sys用户) passw[ord] 基本用法password 用户名如果给自己修改密码则可以不带用户名如果给别人修改密码则需要带用户名(6) 交互命令可以替代变量的值select * from emp where job=”job”; (7)edit 用于编辑脚本(文本) SQLedit d:\(8)spool 把屏幕上显示的记录,保存到文件中spool onspool d:/bak.sql 查询语句spool off4.oracle用户管理(1)创建用户只有具有DBA权限才能创建比如system sys 基本用法:create user 用户名identified by 密码举例:create user xiaoqiang identified by hao20XX年*****[oracle要求用户密码不能用数字开头]后面我将密码修改为了20XX年*****?为什么创建的用户无法登陆这是因为oracle 刚刚创建的用户是没有任何权限,需要管理员给用户分配适应的权限,才能够登陆grant create session to xiaoqiang //会话权限(1)权限系统权限:和数据库管理相关的权限:create session;create table;create index;create view;create sequence;create trigger 对象权限:和用户操作数据对象相关的权限:update;insert;delete;select(2)角色预定义角色:把常用的权限集中起来,形成角色(套餐) 比如dba connect resource 三种角色自定义角色:自己定义套餐(3)方案(schema)在一个数据库实例下:当一个用户,创建好后,如果该用户创建了任意一个数据对象(表或触发器等),这时我们的DBMS就会创建一个对应的方案与该用户对应,并且该方案名字和用户名一致。
oracle报错处理 案例

oracle报错处理案例Oracle数据库在运行过程中可能会遇到各种错误,下面列举几个报错案例以及相应的解决思路:1、ORA-00701: 这个错误通常与内部错误或者核心对象有关。
根据2021年的信息,处理ORA-00701的一个解决方案是将数据库启动到升级模式(upgrade mode)进行修复,或者配置特定的事件(如event 38003),以便让Oracle跳过某些验证步骤。
在某些情况下,可能需要重建受影响的核心对象。
2、数据库无法打开并开始crash recovery:当数据库因异常关闭(如服务器断电)后,重启时可能会出现类似"alter database open... crash recovery"的情况。
此时,Oracle会自动尝试执行恢复过程来确保数据一致性。
DBA需要监控redo日志应用情况和归档日志状态,确保所有必需的redo已成功应用,以完成数据库的正常恢复开放。
3、ORA-00235:这个错误在官方文档中没有明确记录,但根据历史资料中的案例,它可能与备份或RMAN操作期间的同步恢复目录有关。
解决方案可能涉及检查并协调任何冲突的RMAN任务、确保恢复目录的一致性,或者重新同步恢复目录信息。
4、服务器断电导致的数据恢复:在服务器意外断电后,Oracle数据库可能无法正常启动。
在这种情况下,数据恢复工作包括检查物理文件的完整性、评估控制文件、联机重做日志文件和数据文件的状态,并使用RMAN或其他工具进行介质恢复或不完全恢复操作。
如果数据文件损坏严重,可能还需要从最近的有效备份和归档日志中恢复。
在实际处理Oracle数据库错误时,关键在于理解错误的具体含义、分析错误产生的上下文环境,并按照Oracle官方提供的最佳实践和建议步骤进行操作。
同时,维护详细的日志记录和定期备份也是避免数据丢失和快速恢复服务的关键措施。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
从现在开始,oracle错误全征集!
2007-1-12
01102, 00000, "cannot mount database in EXCLUSIVE mode"
// *Cause: Some other instance has the database mounted exclusive or shared.
// *Action: Shutdown other instance or mount in a compatible mode
当你启动数据库遇到1102报错时,之前的数据库的down操作一般都不是正常完成的,或由于一些异常使Oracle在操作系统中残留一些内存结构,Pmon等一几个进程依然存在等原因使Oracle误认为Instance依然在运行着,所以库就没有启动,具体说来大体原因有如下几个:
1、pmon、smon、lwgw及dbwr这些后台进程依然存在着
2、Oracle开辟的共享内存没有释放掉
3、"lk<sid>" and "sgadef<sid>.dbf"这两个用于锁内存的文件存在着。
三、解决问题
知道了原因,解决起来就简单多了,办法如下:
1、看一下"lk<sid>" and "sgadef<sid>.dbf"这两个文件是不是存在着,如果存在将其删掉。
oracle$cd $ORACLE_HOME/dbs
oracle$ls -l sgadef<sid>.dbf
如果存在删掉它
oracle$rm sgadef<sid>.dbf
oracle$ls -l lk<sid>
如果存在删掉它
oracle$rm lk<sid>
2、看是不是有后台进程存在了
oracle$ps -ef | grep ora_ | grep $ORACLE_SID
如果有pmon这些后台进程的残留,kill -9掉它
oracle$kill -9 pid
3、看一下oracle的共享内存段及信号集(semaphores)是不是还存在着
1)清共享内存段
oracle$ipcs -m --显示一下,看owner是Oracle用户的
oracle$ipcrm -m <Shared_Memory_ID>
2)清信号集
oracle$ipcs -s --显示一下,看owner是Oracle用户的
oracle$ipcrm -s <Semaphore_ID>
2007-1-23(TimesTen)
802: Data store space exhausted
6221: Temporary data partition free space insufficient to allocate 64664 bytes of memory
The command failed.
增加tempsize,在odbc配置文件
2007-1-24(TimesTen)
6003: Lock request denied because of time-out
Details: Tran 27.9 (pid 24720) wants W lock on table ETUSER.BILLINFO. But tran 17.1 (pid 24621) has it in IX (request was IX). Holder SQL (DELETE FROM ETUSER.BILLINFO WHERE InteractId = ? AND Guid = ? AND FuncId = ?;)
IX锁,用命令ttXactAdmin -xactIdRollback 27.15 -connstr "dsn=pps;uid=etuser;pwd=tttttt";无济
于事,因为又会生成新的transaction。
直接kill连接进程
2007-1-25
ORA-00257:archiver error.Conncet internal only.until freed
造成本次故障的原因由两方面同时发生所造成的:
其一是Flash_Recovery_Area空间缺省安装时比较小,只有2GB,容易用完;
其二是由于采用归档方式通过Veritas备份,由于备份软件没有运行,造成归档日志没有及时删除。
针对第一点解决办法
SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=20g;
查询:show parameter recover
2007-3-12
解决:IMP-00013 : only a DBA can import a file exported by another DBA 命令改为:imp system/passwoed@db....,至于system用户密码修改alter user system identified by password
错误一、ORA-00942: table or view does not exist
此时需要查看连接数据库接口使用的的用户名下是否存在操作的数据表,以及该用户对该数据表操作的权限。
show user
查看当前是以哪个用户登录的
conn / as sysdba 以SYS用户登录进数据库
此时可以退出以数据库连接的用户名登陆。
select owner,table_name from all_tables where table_name='BOOKS';
查看OWNER字段是谁也就是这个表的所有者
假设所有者为yuandan
则进行如下查询
select * from yuandan.books
输出这个,这是不是说不存在books表?
错误二、ORA-32104
此为OCCI接口Environment::createEnvironment(Environment::DEFAULT)错误代码:需要设置ORACLE_HOME
错误三、ORA-12541
ORA-12541: TNS: 无监听程序,listener监听服务没有开启
在服务器端机器:
1.保证listener已经启动
2.保证数据库已经启动。
如果数据库没有启动,用:
Oracle 9i:
dos>sqlplus “/ as sysdba”
sqlplus> startup
命令启动数据库
如果listener没有启动,用:
lsnrctl start [listener name] lsnrctl status [listener name] 命令启动listener。