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

oracle常见问题汇总

程序员文章站 2022-04-03 19:09:59
...

 

1).Oracle游标超过设定值

问题情况:存储过程计算过程报错,使用游标数过多,系统游标设定太小,需要重新设置最大游标数  

1、查看Oracle最大游标数   

--oracle命令,以sys用户,dba连接

C:\Documents and Settings\Administrator>sqlplus "sys/admin@test151 as sysdba"   

--查看游标设置值 

SQL> show parameter open_cursors;   

NAME TYPE VALUE   

------------------------------------ ----------- -------------------   

open_cursors integer 300   

2、查看当前打开的游标数目   

SQL> select count(*) from v$open_cursor;   

COUNT(*)  

----------   

1321   

3、修改Oracle最大游标数   

SQL> alter system set open_cursors=2000 scope=both;   

系统已更改。  

--查看游标设置值 

SQL> show parameter open_cursors;   

NAME TYPE VALUE   

------------------------------------ ----------- --------------------   

open_cursors integer 2000

 

2)报错:ORA-01591锁定已被有问题的分配事务处理,重启数据库解决不了。

 

 

问题情况:当oracle数据库服务器需要往sqlserver2005上写点数据,通过建立透明网关使用dblink实现了功能,出现上述问题ORA-01591。

解决办法如下:

 

1、使用Oracle DBA用户,查询如下数据字典:select * from dba_2pc_pending

 

2、强制Rollback或者Commit该事务:

 

select 'commit force '''|| local_tran_id||''';' from dba_2pc_pending;

select 'rollback force '''|| local_tran_id||''';' from dba_2pc_pending;

 

 

 

执行查询出来的sql。

 

 

 

3)oracle存储过程死锁终止:

 

 

 

问题描述:在存储过程执行到一半时候,强行终止它,这个时候看session 是杀掉了,但存储过程还是不能重新编译,表明它还锁着。或者在存储过程执行时,进行修改编译,产生死锁。

windows下存储过程死锁终止:sqlplus "/as sysdba"

--1.查询被锁住的进程

SELECT * FROM V$DB_OBJECT_CACHE WHERE name='DEBT_YC_CHECK_PROC' AND LOCKS!='0';

--通过过程名查V$ACCESS视图,查到SID

select SID from V$ACCESS WHERE object='DEBT_YC_CHECK_PROC';

--2.查询会话(SESSION_ID,SERIAL#)

SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='885';

--查询库名及进程名

select spid, osuser, s.program 

from v$session s,v$process p

where s.paddr=p.addr and s.sid=885 ;

--3.先杀Oracle死锁进程-杀掉会话

--ALTER SYSTEM KILL SESSION 'sid,serial#';

alter system kill session '885,46883';

--4.如果还不能解决再杀操作系统进程,杀掉进程

orakill sid thread  

其中: 

sid:表示要杀死的进程属于的实例名 

thread:是要杀掉的线程号,即第2步查询出的spid

 

 

 

4)ora-00600错误,内部错误代码,参数: [kcratr1_lostwrt], [], [], [], [], [], [], []

 

 

问题情况:一次是正常关机后启动时报这样的错误,一次是非法关机后启动报这样的错误。

--dba用户输入,运行中sqlplus命令窗口

sqlplus "/ as sysdba"

--启动数据库

sql>startup mount

--恢复数据库

sql>recover database

--停止数据库

sql>stutdown immediate

--启动数据库

sql>startup