资源描述:
《oracle高级应用基础》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、1.查看版本号及锁表处理1.1查看版本号SQL>select*fromv$version;BANNER----------------------------------------------------------------OracleDatabase10gEnterpriseEditionRelease10.2.0.4.0-64biPL/SQLRelease10.2.0.4.0-ProductionCORE10.2.0.4.0ProductionTNSforHPUX:Version10.2.0.4.0–Pr
2、oductionNLSRTLVersion10.2.0.4.0–Production1.2锁表处理以DBA角色,查看当前数据库里锁的情况可以用如下SQL语句:selectt2.username,t2.sid,t2.serial#,t2.logon_timefromv$locked_objectt1,v$sessiont2wheret1.session_id=t2.sidorderbyt2.logon_time如果有长期出现的一列,可能是没有释放的锁解决方法有三种:(1)释放锁的方法:我们可以用下面SQL语句杀掉长期
3、没有释放非正常的锁:altersystemkillsession'sid,serial#';//sid,serial#是上面查询出来的(2)系统级杀进程方法释放锁:selectspidfromv$processwhereaddr=(selectpaddrfromv$sessionwheresid=&sid);$kill-9spid//spid是上面查询出来的(3)注意点:如果出现了锁的问题,某个DML操作可能等待很久没有反应。当你采用的是直接连接数据库的方式,也不要用OS系统命令$killprocess_num或者
4、$kill-9process_num来终止用户连接,因为一个用户进程可能产生一个以上的锁,杀OS进程并不能彻底清除锁的问题。2.2.case–when-then-end和Decodeselectt.id,t.name,t.sal_int,casewhent.sal_int<3000then'less'whent.sal_intisnullthen'null'else'many'endasssfromtesttIDNAMESAL_INTSS1kevin3233many10tom4567many11sum2678les
5、s12lucy2908less13peter4523many14kite3145many15kitty2356less16terry3245many17jerry3245many18Jessica1345less19paul3216many2kevin4352many20joe2789less3mike4344many4jack7544many5lily1234less6jim3212many7tony2000less8tom null9tom3423manyDecode函数decode(条件,值1,翻译值1,值2
6、,翻译值2,...值n,翻译值n,缺省值)该函数的含义如下:IF条件=值1THEN RETURN(翻译值1)ELSIF条件=值2THEN RETURN(翻译值2) ......ELSIF条件=值nTHEN RETURN(翻译值n)ELSE RETURN(缺省值)ENDIF上例也可以写为decode方式,得到同样的结果,sign()函数判断括号内的值,是正数返回1,负数返回-1:0返回0selectt.id,t.name,t.sal_int,decode(sign(sal_int-3000),-1,
7、'less',1,'many',0,'same','null')fromtestt3.ROWNUM的应用3.1在Oracle中实现SELECTTOPN:由于ORACLE不支持SELECTTOP语句,所以在ORACLE中经常是用ORDERBY跟ROWNUM的组合来实现SELECTTOPN的查询。简单地说,实现方法如下所示:SELECT 列名1...列名n FROM(SELECT 列名1...列名n FROM表名ORDERBY列名1...列名n)WHEREROWNUM<=N(抽出记录数)sORDERBYROWNUMAS
8、C3.2在TOPN纪录中抽出第M(M<=N)条记录在得到了TOPN的数据之后,为了抽出这N条记录中的第M条记录,我们可以考虑从ROWNUM着手。我们知道,ROWNUM是记录表中数据编号的一个隐藏子段,所以可以在得到TOPN条记录的时候同时抽出记录的ROWNUM,然后再从这N条记录中抽取记录编号为M的记录,即使我们希望得到的结果。从上面的分析可以很容易得到下面