Oracle DBA 常用命令积累

1. 最大游标数

(1)作用:Oracle 使用 init.ora 中的初始化参数 OPEN_CURSORS 指定一个会话一次最多可以拥有的游标数。缺省值为 50。应用程序不同,该值也不同。即便会话打开的游标数未达 OPEN_CURSORS 指定的数量(即设置的值高于实际需要的值),也不会增加系统开销。

这样的错误很容易出现在Java代码中的主要原因是:Java代码在执行conn.createStatement()和conn.prepareStatement()的时候,实际上都是相当与在数据库中打开了一个cursor。尤其是,如果你的createStatement和prepareStatement是在一个循环里面的话,就会非常容易出现这个问题。因为游标一直在不停的打开,而且没有关闭。  
   
      一般来说,我们在写Java代码的时候,createStatement和prepareStatement都应该要放在循环外面,而且使用了这些Statment后,及时关闭。最好是在执行了一次executeQuery、executeUpdate等之后,如果不需要使用结果集(ResultSet)的数据,就马上将Statment关闭。

(2)异常:ora-01000:   maximum   open   cursors   exceeded.    
  表示已经达到一个进程打开的最大游标数。

(3)修改Oracle游标数

1、查看游标数:show parameter open_cursors;

2、查看当前打开游标数:select count(*) from v$open_cursor;

3、修改Oracle最大游标数:alter system set open_cursors=1000 scope=both;

2.最大进程数

(1)作用:每一次数据连接,都开启数据库一个进程。当调用数据库的线程超过一定数量时出现,中间介数据源无法连接导致错误:这是连接数超过了数据库默认连接数导致的,数据库默认的连接数是150。

(2)修改Oracle最大连接数

1、SqlPlus /nolog

2、conn sys/syspwd as sysdba;

3、查询目前连接数:show parameter processes;

4、修改连接数:alter system set processes=1000 scope=spfile;

5、create pfile from spfile;

6、重新启动Oracle服务

(3)应用程序可以设置数据库开启的线程数。比如应用程序datasource.xml配置:
<system-datasource>
    <type>oracle</type>
    <driver>oracle.jdbc.driver.OracleDriver</driver>
    <url>jdbc:Oracle:thin:@192.168.167.76:1521:ora11g</url>
    <username>tb_ddbx</username>
    <password>tb_ddbx</password>
</system-datasource>
<system-datasource-pool>
    <init-capacity>5</init-capacity>
    <max-capacity>10</max-capacity>
    <max-idle>2</max-idle>
    <timeout>50000</timeout>
</system-datasource-pool>

3.常用oracle 命令 

--查看当前有哪些用户正在使用数据
SELECT osuser, a.username,cpu_time/executions/1000000||'s', sql_fulltext,machine 
from v$session a, v$sqlarea b
where a.sql_address =b.address order by cpu_time/executions desc;

  

还有可以查询

select sessions_highwater  from v$license;

sessions_highwater 记录的是数据库会话曾经达到的最大值

查询数据库自启动以来最大的并发数量

select * from v$license

 

其他:

ORA-32001: 已请求写入 SPFILE, 但是在启动时未指定 SPFILE:
http://blog.csdn.net/haiross/article/details/41696035

ORACLE 如何查询被锁定表及如何解锁释放session:
http://www.jb51.net/article/34571.htm

修改Oracle最大连接数和游标数:
https://www.cnblogs.com/ITGIS/articles/1870539.html

java连接 oracle 遍历ResultSet,结果集耗尽:
http://blog.csdn.net/breaker892902/article/details/39397579

4. dba排错工具:

plsql  工具》会话查看当前会话

查看oracle是否有锁定的表和记录

tomcat 按ctrl+pausebreak 查看Java程序栈信息

jconsole 查看是否内存溢出。可以在系统变量中设置JAVA_HOME和JAVA_OPTS

表执行计划的优化(特别是数据大量变化时执行计划策略也要有相应变化)

多线程好文:Java 对象锁和类锁 死锁(多线程synchronized关键字)

http://blog.csdn.net/qq_33530388/article/details/63257485

java线程阻塞问题排查方法:

http://blog.csdn.net/bruce128/article/details/47402669

猜你喜欢

转载自zhengjunxiang.iteye.com/blog/2413075