都是正确的,但是都不具备普遍性。所以还是那句话,具体问题具体分析。
以上是我对于技巧的一些看法,也可以算是我贡献给大家的“不是技巧的技巧”。
下面,我也总结几条常见问题的处理技巧,供大家参考:转
贴于:http://www.leadge.com
1、关于Oracle字符集的设置,历来是各技术论坛经常被讨论的问题,但许多讨论都不彻底或有明显的错误,致使许多朋友在应用过程中出现乱码的烦恼。关于这方面的问题,大家可以参考我的《Oracle数据库字符集问题解析》一文(www.itpub.net/276524.html),其中最主要的请记住两点:(1)在数据库端:选择需要的字符集(通过create database中的CHARACTER SET与NATIONAL CHARACTER SET子句指定);(2)在客户端:设置操作系统实际使用的字符集(通过环境变量NLS_LANG设置)。
2、Oracle 9i以来引入了“闪回”(flash back)功能,能够查询到不久前的时间点各表的数据情况,这对恢复人为差错造成的数据丢失很有用,不用使用备份及归档日志进行恢复,只要一个简单SQL即可恢复。如误删了某表的数据,可用形如下面的SQL进行恢复:
insert into tab1
select * from tab1 as of timestamp to_timestamp('200501010101','yyyymmddhh24mi')
3、对于WEB查询结果集比较大,需要分页并排序显示的情况,在Oracle中可以采用形如下面的SQL:
select *
from ( select a.*, rownum r
from ( select *
from t
where x = :host_variable
order by y ) a
where rownum <:HigherBound )
where r > :LowerBound
这样Oracle在决定执行计划时,可以不对整个结果集进行排序,而只需保证显示的当前页及之前的数据排序准确即可,系统效率得以提升。转贴于:http://www.
leadge.com
4、对于使用Oracle 数据库,但没有用到绑定变量的一些OLTP应用,可以考虑设置cursor_sharing参数强制使用绑定变量,我过去曾经做过一个测试,对于某个应用,强制使用绑定变量后在相同的负载情况下系统CPU使用率下降30%以上,当然也要注意使用该设置后一些大的统计查询SQL的执行计划有可能受到负面影响。所以,最好在开发阶段就使用绑定变量。
5、对于Oracle数据库经常出现的ora 4031(unable to allocate %s bytes of shared memory)错误,首先应确定是否为Oracle的BUG所引起,尤其是ORACLE 8.1.7.0版本,存在内存泄露(memory leak)(bug no:1397603)的问题,解决的办法一是暂时设置内部参数_db_handles_cached =0,最终的解决方法是将ORACLE升级到8.1.7.2或更高的版本。如果确认不是Oracle的BUG,可以考虑利用oracle提供的包dbms_shared_pool将一些大的对象固定在共享内存中,或者加大共享内存。
6、如果不能修改程序的源代码,而想调整或固定某些SQL的执行计划,可以利用Oracle提供的Stored Outline功能。
7、对于Oracle 数据库,使用本地管理的表空间(而不使用传统
项目经理胜任力免费测评PMQ上线啦!快来测测你排多少名吧~
http://www.leadge.com/pmqhd/index.html