永发信息网

oracle数据库老是死

答案:2  悬赏:30  手机版
解决时间 2021-04-04 06:49
  • 提问者网友:雨不眠的下
  • 2021-04-03 12:39
oracle9i的数据库,用于网站web的数据存储。最近一段时间web页面访问老是特别特别慢,然后数据库无缘无故的死掉,查看alert没有看出什么毛病,用toad连接有时会报超出最大进程数。但是查看历史最高连接数是68,oracle默认是150啊,改成300后还是会死。不知道是什么问题,希望高人能给点意见!<br>因为出现问题所以更改过代码,但是出现问题之前貌似较长一段时间没有更新过代码
最佳答案
  • 五星知识达人网友:詩光轨車
  • 2021-04-03 14:14
估计你的问题是这个,优化sql!仔细看看sql!

查看用户最大游标数量

这个cursor主要是由于应用程序端(JAVA)造成的,测试结果是
1、对于jdbc来说,每一个从Connection中产生的Statement相当于一个Session,此时会在v$session中产生或者重用一条session记录,v$open_cursor中记录的就是每个session打开的cursor数量,一个对多个父子关系。

2、除非Statement close物理关闭,否则在这个session在v$open_cursor中相关联的记录将一直存在,不会释放。 jakarta dbcp数据库连接池有一个StatementCache功能,它不会物理关闭Statement,所以造成了我们的cursor溢出,看来Oracle的Statement不能再客户端进行Cache,当我的cache size就算为1,运行一段时间cursor也会溢出,我们必须Close Statementsession来确保相应Session中打开的游标关闭。

3、系统参数open_cursor的含义就是这个Session中能够打开游标的最大数,用SQL
表示如下:
select max(cursor_count) from (select count(*) cursor_count
from v$open_cursor where user_name='ORAL' group by sid);

当这条SQL返回结果达到open_cursor参数的取值,jdbc就会抛出

Oracle 最大游标数
2008-06-26 09:241.

检查数据库中的 OPEN_CURSORS 参数值。

可以使用如下查询语句:

SQL> show parameter open_cursors;

2. 获取打开的游标数。
下面的查询按降序显示用户“SCOTT”为每个会话打开的游标数。

SQL> select o.sid, osuser, machine, count(*) num_curs
2 from v$open_cursor o, v$session s
3 where user_name = 'ORAL' and o.sid=s.sid and machine !='SYSTEM'
4 group by o.sid, osuser, machine
5 order by num_curs desc;

3.'ORA-01000:超出最多允许打开的游标数'问题

可以修改oracle中最大游标数

(1)修改srvm/admin/init.ora文件中的OPEN_CURSOR;

(2)alter system set open_cursor=(游标数) scope=both;

(3)在应用程序中执行完数据库操作后,及时关闭与数据库操作相关对象(statement,resultset,connection)

4.主要原因

在程序中没有及时关闭statement等相关对象造成游标资源一直被占用!

注:造成'打开最大游标数'问题主要之程序代码方面造成的.

(1)在事务操作是容易发生。

(2)程序中,在循环里面做statement操作时可能发生。
全部回答
  • 1楼网友:等灯
  • 2021-04-03 14:40
oracle是一种适用于大型、中型和微型计算机的关系数据库管理系统,它使用sql(structured guery language)作为它的数据库语言。 sql主要包括数据定义、数据操纵(包括查询)和数据控制等三方面功能。sql是一种非过程化程度很高的语言,用户只需说明"干什么"而无需具体说 明"怎么干"语言简洁、使用方便功能强大,集联机交互与嵌入于一体,能适应广泛的使用环境。oracle数据库由三种类型的文件组成:数据库文件、日志文 件和控制文件。 数据字典是由oracle自动建立并更新的一组表,这些表中记录用户的姓名、描述表和视图以及有关用户权限等的信息。数据字典是只读的,只允许查询。 也就是说数据字典是一种数据库资源,每个用户都可以访问数据字典,dba可通过数据字典来监视oracle rdbms的使用,并帮助用户完成其应用。oracle rdbms本身也要利用数据库字典来管理和控制整个数据库。 提起数据库,第一个想到的公司,一般都会是oracle。该公司成立于1977年,最初是一家专门开发数据库的公司。 oracle在数据库领域一直处于领先地位。1984年,首先将关系数据库转到了桌面计算机上。然后,oracle的下一个版本,版本5,率先推出了分布 式数据库、客户/服务器结构等崭新的概念。oracle的版本6首创行锁定模式以及对称多处理计算机的支持……最新的oracle8主要增加了对象技术, 成为关系-对象数据库系统。目前,oracle产品覆盖了大、中、小型机等几十种机型,oracle数据库成为世界上使用最广泛的关系数据系统之一。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯