近期数据库使用小结

1、达梦数据库锁表,导致整个程序不可用

现在70项目都引用平台的jar包,用提供的eclipse开发也看不到源码,导致有些时候排查问题过于繁琐。比如国电投70项目初始化组织机构时,完全没有响应,只知道请求还没返回,但不知道卡在代码的哪一步了,这时候只能追加日志跟踪,很是麻烦。这时候可以优先看一下达梦数据库是否发生死锁,因为达梦数据库很让人费解的一点就是A表锁了,也会影响B表的插入和更新操作。解锁语句:

select* from V$TRXWAIT;select * from V$SESSIONS where TRX_ID = '4780141'sp_close_session(15399809336);

2、PG经常显示连接数不够用

PG库连接经常被占满怎么办?设置了最大连接数1000,却发现我们LiEMS70在启动程序时,会报获取不到链接的错误。刚开始限制了我们本地开发工程的最大链接数为2~3个,没有解决;再者以为是代码没有关闭db,并没有发现;后来发现64库设置的连接总体是1000,是所有库加起来的总链接数。用

select t.client_addr,t.datname,count(1) as connectCount from pg_stat_activity t GROUP BY t.client_addr,t.datname order by connectCount desc

查询下,就知道具体是哪个库占用的链接最多,是哪个IP占用的。如附件所示,是IP为172.16.132.32使用的zhongxingoujianku_dev占用链接最多,没有人使用的情况下竟然高达200多。

3、不导出AWR报告的情况下查看ORACLE数据库SQL执行情况
一、查询执行最慢的

select * from (select sa.SQL_TEXT,        sa.SQL_FULLTEXT,        sa.EXECUTIONS "执行次数",        round(sa.ELAPSED_TIME / 1000000, 2) "总执行时间",        round(sa.ELAPSED_TIME / 1000000 / sa.EXECUTIONS, 2) "平均执行时间",        sa.COMMAND_TYPE,        sa.PARSING_USER_ID "用户ID",        u.username "用户名",        sa.HASH_VALUE     from v$sqlarea sa     left join all_users u      on sa.PARSING_USER_ID = u.user_id     where sa.EXECUTIONS > 0     order by (sa.ELAPSED_TIME / sa.EXECUTIONS) desc) where rownum <= 50;      

二、查询次数最多的 sql    

select * from (select s.SQL_TEXT, s.EXECUTIONS "执行次数", s.PARSING_USER_ID "用户名",        rank() over(order by EXECUTIONS desc) EXEC_RANK     from v$sql s     left join all_users u      on u.USER_ID = s.PARSING_USER_ID) t where exec_rank <= 100;

4、Oracle判断数据不存在则插入的SQL语句

--重复的数据   
select NO,INST_NO,USR_ID from DKXXXMST t where t.INST_NO = :1 and t.USR_ID = :2  
--普通插入  
insert into DKXXXMST (no,instance_no,USR_ID) values(:3,:1,:2)  
--判重插入  
insert into DKXXXMST (NO,INST_NO,USR_ID) select :3,:1,:2 from DKXXXMST where not exists (select 1 from DKXXXMST t1 where t1.INST_NO = :1 and t1.USR_ID = :2) and ROWNUM=1

5、 Oracle仅保留组内最大值

delete from WFPARTICIPANTS  where INSTANCE_NO = ?  and PTCP_NO not in (select max(PTCP_NO) from WFPARTICIPANTS where INSTANCE_NO = ? group by USR_ID)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值