Tag Archives: Oracle

完全卸载Oracle 9i记事

1.停止Oracle服务 进入服务管理器,“开始-》运行-》services.msc”,停止那些Oracle服务, 他们都具有一个oracle或ora   的前缀。一旦停止了所有的Oracle服务, 我们建议将它们设置为手工启动模式(manual   start   mode)。 2.删除注册表中相关项   1)进入注册表编辑器;    2)、备份Windows   注册表。   启动Registry   Editor   并从菜单中选择   File   |   Export。     3)、用命令   regedt32启动Registry   Editor。找到HKEY_CLASSES_ROOT节点并删除所有以字符串   Oracle、ORA、ORCL开始的键。     4)、找到HKEY_LOCAL_MACHINE/SOFTWARE键并删除   Oracle   和   Apache   Group   键。     5)、删除HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\odbcinst.ini   下    面的Oracle   ODBC   Driver键。  
Posted in 技术经验帖 | Tagged | Leave a comment

使用绑定变量和不使用绑定变量操作数据库

以下例子是在delphi中编程实现,数据库为oracle,具体的代码省略了,只说明情况。 1、不使用绑定变量 例子:删除同一张表的两条记录。 sql语句如下: (1)delete from t_englishscore_score where STUDENTNUM=’200431500123′ and LESSONNAME=’test’ and YEAR=’2005′ and TERM=’上’; (2)delete from t_englishscore_score where STUDENTNUM=’200431500123′ and LESSONNAME=’毕业设计’ and YEAR=’2007′ and TERM=’下’ 此时查询v$sqltext视图(它能够反映oracle 中share pool中的sql解析共享情况): ADDRESS HASH_VALUE SQL_ID COMMAND_TYPE PIECE SQL_TEXT 0000000173D47990 2193311325 1mhba361bqjkx 7 0 delete from t_englishscore_score where STUDENTNUM=’200431500123′ 0000000173D47990 2193311325 1mhba361bqjkx 7 1 and LESSONNAME=’test’ and YEAR=’2005′ and [...]
Posted in 技术经验帖 | Also tagged | Leave a comment

使用Merge语句同时执行插入和更新操作

考虑下列情况,对于一张表T,有(A,B)两列,进行下列操作:如果表T中存在A=‘a1’的记录,就更新对应的B列值为‘b1’;如果不存在,就插入这一条记录。 经典的处理方式是先查询,看记录是否存在,再确定是进行插入还是删除操作。 从oracle9i开始,就已经支持Merge语句,可以使用一条sql语句,同时执行插入和更新操作。 下面举一个例子,表t_englishscore_stuengname表,有studentnum和engname两列,现在需要处理一条记录:(’20011111111′,’Li Bo’),不确定是否插入还是更新,使用Merge语句如下: merge into t_englishscore_stuengname t using (select ’20011111111′ as studentnum,’Li Bo’ as engname from dual) s on (t.studentnum=s.studentnum) when matched then update set t.engname=s.engname where t.studentnum=s.studentnum when not matched then insert (studentnum,engname) values(s.studentnum,s.engname); 有关Merge语句的详细说明参见下列网址,本文不予赘述。 [1] eygle. 使用Merge Into 语句实现 Insert/Update. http://www.eygle.com/digest/2009/01/merge_into_insertupdate.html. [2] eygle. Merge用法:Oracle 10g中对Merge语句的增强. http://www.eygle.com/digest/2009/02/mergeoracle_10gmerge.html [3] google. www.google.com
Posted in 技术经验帖 | Tagged | Leave a comment

在PL/SQL中计算采用四舍五入和delphi 6中计算采用四舍五入之间的误差

有系统用户反映,在其中使用delphi6的程序中计算一个数值为2.64,但是在另外一个模块中,相同的参数,计算出来却是2.63,之间相差了0.01。一查,后者是调用oracle中存储过程实现的,而前者在delphi6中实现。 在 仔细分析原因后,发现delphi 6中使用roundto或者simpleroundto都不是我们通常说的四舍五入,前者是采用银行家的四舍五入,即四舍六入五奇偶,而 simpleroundto这个函数也令人有点琢磨不透,有些是四舍五入,有些不是,比如对于 simpleroundto(12.95,-1)=12.9。 而在PL/SQL中,一律保留了1位,四舍五入,所以两种方法一比较,最后累计,就出现了误差。 解决方法,可以自己编辑一个函数处理,也可以按照下面一个网友的解释进行处理: http://www.2ccc.com/idea.asp?articleid=1300 网友iamdream 以下是研究的结果(Delphi6): RoundTo(及Round)函数使用所谓“银行家舍入法”<Banker’s Rounding>(对于舍入位后为5的情况,则舍入位为偶数,则舍,为奇数,则入),而Format函数则为正常的四舍五入法,取例如下: 0.145 RoundTo(0.145, -2) = 0.14 0.145 Format(‘%8.2f’, 0.145) = 0.15 0.155 RoundTo(0.155, -2) = 0.16 0.155 Format(‘%8.2f’, 0.155) = 0.16 另在进行浮点数的运算时,可能会出现0.14499999999999的情况,此时的值按数学上要求实际应为0.145,如用以上方法舍入到小数点后两位时,均不能达到想要的效果。 另SimpleRoundTo比RoundTo更接近四舍五入法,但不完全是四舍五入,如对0.145用SimpleRoundTo(0.145, -2)舍入时仍为0.14; 如果后面还有小数,如0.1450000001,此时舍入,则三者均为0.15!对1.145,SimpleRoundTo舍入为1.15! 故而如用RoundTo来四舍五入,则可在舍入位后的第二位加上5,如0.145,则加上0.0005,此时成为0.1455,再舍入时,就为0.15了! 因此四舍五入取两位小数时,只要先加上0.0001,然后用RoundTo或SimpleRoundTo即可。
Posted in 技术经验帖 | Also tagged | Leave a comment

“Memory Notification: Library Cache Object loaded into SGA”问题

最近AlertSid.log有错误如下: Tue Sep 15 00:00:06 2009 Memory Notification: Library Cache Object loaded into SGA Heap size 3708K exceeds notification threshold (2048K) Details in trace file /opt/oracle/admin/alpha/udump/alpha_ora_2177.trc KGL object name :XDB.XDbD/PLZ01TcHgNAgAIIegtw== Tue Sep 15 00:00:07 2009 Memory Notification: Library Cache Object loaded into SGA Heap size 4067K exceeds notification threshold (2048K) Details in trace file /opt/oracle/admin/alpha/udump/alpha_ora_2177.trc [...]
Posted in 技术经验帖 | Tagged | Leave a comment

解决“Process m001 died……”问题,设置Processes数

最近服务器经常down掉,开始以为是机房空调坏了导致高温造成服务器自动停机的缘故,直到今天,空调弄好了,还down了,从alsertSid.log一查,有如下错误信息: Process m001 died, see its trace file Wed Sep 16 10:00:52 2009 ksvcreate: Process(m001) creation failed 原来是oracle进程数达到Processes上限了。在oracle中:sessions和processes的关系是: sessions=1.1*processes + 5 这样,通过修改processes可以同时修改process和sessions的目的。 解决过程如下: SQL> conn xxx/yyyy 已连接。 SQL> show parameter sessions; NAME                                 TYPE        VALUE ———————————— ———– —————————— java_max_sessionspace_size           integer     0 java_soft_sessionspace_limit         integer     0 license_max_sessions                 integer     0 license_sessions_warning             integer     0 logmnr_max_persistent_sessions       integer     1 sessions                             integer     170 [...]
Posted in 技术经验帖 | Tagged | Leave a comment

关于SQL*Loader的用法

网上有很多好文,贴出网址以及一些摘要: 1、关于 Oracle 的数据导入导出及 Sql Loader (sqlldr) 的用法 http://www.blogjava.net/Unmi/archive/2009/01/05/249956.html 2、使用手册 http://www.psoug.org/reference/sqlloader.html 3、sqlldr语法 http://yumianfeilong.com/html/2007/03/20/49.html 4、faq http://www.orafaq.com/wiki/SQL*Loader_FAQ 5、sqlloader,这篇很值得一看。 http://www.oracleutilities.com/OSUtil/sqlldr.html 其中写了一个自动生成控制文件的脚本: —————————————————————— set echo off ver off feed off pages 0 accept tname prompt ‘Enter Name of Table: ‘ accept dformat prompt ‘Enter Format to Use for Date Columns: ‘ spool &tname..ctl select ‘LOAD DATA’|| chr (10) || [...]
Posted in 技术经验帖 | Tagged | Leave a comment

oracle下删除一个数据库

1、使用dbca。 2、手工删除日志、数据、控制、参数文件。 3、oracle10g以后,使用drop database命令: shutdown abort; startup mount exclusive restrict; drop database;
Posted in 技术经验帖 | Tagged | Leave a comment

Oracle10g重建EM

Oracle10G 的EM采用了web方式,并且分成了2个产品,database control和grid control。使用命令行工具emca可以创建,修改,重建或者删除dbcontrol的配置。而使用命令行工具emctl可以启动/停止EM console服务,察看服务状态等。 1.drop configuration files and repository run : emca -deconfig dbcontrol db -repos drop 2. Logon SQLPLUS as user SYS or SYSTEM, and drop the sysman account and mangement objects: SQL> drop user sysman cascade; SQL> drop role MGMT_USER; SQL> drop user MGMT_VIEW cascade; SQL> drop public synonym MGMT_TARGET_BLACKOUTS; SQL> drop [...]
Posted in 技术经验帖 | Tagged | Leave a comment

Oracle10g EM无法连接数据库实例 & 正确修改DBSnmp和SYSMAN密码

SYSMAN和DBSNMP跟涉及到Oracle的EM,所以跟其他的用户修改密码方式有所区别。下面是这两个用户的默认密码和作用说明: ———————————————————————————- DBSNMP DBSNMP The account used by the Management Agent component of Oracle Enterprise Manager to monitor and manage the database . Oracle Enterprise Manager Grid Control Installation and Basic Configuration. SYSMAN CHANGE_ON_INSTALL The account used to perform Oracle Enterprise Manager database administration tasks. Note that SYS and SYSTEM can also perform these tasks. [...]
Posted in 技术经验帖 | Tagged | Leave a comment
  • Self-introduction

    @Alipay,计算机专业。

    喜欢互联网,崇尚网络自由和开放,旗帜鲜明的反对妄图扼杀自由的行为。

    喜欢看电影,国产大片、科幻片和鬼片例外,以前比较偏好喜剧和港产警匪片,比如周星驰系列喜剧和银河映像出品的电影;看过无数好莱坞电影后,现在比较喜欢美国的独立小电影和法国风味的电影,诸如《杯酒人生》和《天使爱美丽》等。

    喜欢听的一些歌:魔岩三杰、汪峰、王菲的大部分,郑钧、许巍的一些,左小祖咒以及其它歌手的小部分。

    现在看书的时间比较少,其中大部分又花费在技术书籍上,以后坚持少上豆瓣,多看书。

    经常使用的网站或服务:Google以及它的很多服务、Twitter、虾米、豆瓣。