关闭Centos的自动更新

昨天跟老板汇报,提到我们的linux服务器每天自动更新,老板大发雷霆,说生产系统不能够这样,非常不安全,一个师兄也提到他原来在移动的时候,服务器更新也是很谨慎的事情。看来我的思维太技术了,不够全面,所以回来就把自动更新关了。

操作记录如下:

[root@jwbdb alpha]# chkconfig –list yum-updatesd

yum-updatesd    0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

[root@jwbdb alpha]# service yum-updatesd stop

停止 yum-updatesd:                                        [确定]

[root@jwbdb alpha]# service yum-updatesd status

yum-updatesd 已停

[root@jwbdb alpha]# chkconfig –level 35 yum-updatesd off

[root@jwbdb alpha]# chkconfig –list yum-updatesd

yum-updatesd    0:关闭  1:关闭  2:启用  3:关闭  4:启用  5:关闭  6:关闭

[...]

分割线

昨天申请了独立博客,今天花了些时间把原有博客上的一些技术文章和一些日记移到了这个博客上,移到比较匆忙,所以排版肯定比较乱。

原有的博客就此荒废。

以此为割线,以后日记、经验帖子、思考火花等都一律在此博客耕耘,作为自己的乐土和积淀园。

两种产品的消费者定位

商业模式其中有一层非常重要的就是用户定位,现在WEB2.0的网站绝大多数都是以吸引用户为目标,这些网站的创业者深信:用户就是王道,用户就是Money。

而现实似乎在跟他们开一个天大的玩笑,拥有大数量级的用户群,也获得了VC的大笔$,可是偏偏有劲使不出来,就是“入不敷出”,甚至是“只出不进”。

但 是有两家公司对于消费者的定位非常值得我们学习。一家是苹果公司,ipod、iphone等为什么那么能够那么风靡,他们清新定位是优雅简洁的高档电子消 费品,不要忘记他们的优雅、不要忘记他们的简单,这是苹果跟微软最大的区别,这也是苹果获得成功的最大秘诀。因为,我们是人,人之所以区别动物,除了吃饱 穿暖,我们还需要精神满足,需要艺术,而不仅仅是硬邦邦的工具。

另外一家是国内的腾讯,虽然很多技术人员很鄙视它,但是你无可否认,腾讯 很好的抓住了世界上最大的用户群,而且,而且,最重要的,它很成功的把这些用户变成了它的消费者。以QQ为基础,延伸了新闻、QQ游戏、QQ邮箱、 Qzone等等,虽然有些服务实在不太好用,而且它封闭在自我的王国里。但是为什么那么多的80后特别是90后热衷于QZone、QQ秀、QQ游戏等。我 觉得,这跟国内用户的上网习惯和上网素质有关,对于国内的很多上网用户来讲,QQ是他们认识网络的一个窗口,甚至是最重要的一个窗口,关于这个,我至今还 记得我高中的时候,我周围很多人把去网吧当做上qq聊天或者玩游戏的代名词。这些用户,他们认识网络的角度很狭小,基本上取决于周围的朋友在玩什么,而与 朋友关系的维护又很大程度是依赖于qq,这是一种很被动或者很滞后的姿态。同时QQ也总是处于一种主动姿态,它会主动投放消息给用户。一个主动一个被动, 这就很大程度上决定了国内很多用户的上网习惯根本上就是QQ来决定的。纵观腾讯赚钱的来源,类似QQ秀、会员等之类,都是不折不扣的小钱汇大钱的游戏,它 不关于优雅,不关于艺术,它的出发点就是,让用户用一点点小钱,买来一些实用、一些特权,一些标新立异。对于用户来说,一点点小钱,人人基本都可以花得 起,于是一次次的花一点点的小钱,你花,我也花,就花出来了腾讯王国。并且,再一次的证明,“长尾理论”和网络是多么的有缘。

禁用SELinux时配置错误导致Centos不能够启动的一种解决方法

造成此次问题的原因: 我用的linux版本是CentOS5.2,在安装Oracle10g的时候,需要关闭SELinux,在修改配置文件/etc/selinux/config过程中,本来应该设置: # SELINUX=enforcing SELINUX=disabled 但是我粗心大意,设置了SELINUXTYPE参数: #SELINUXTYPE=targeted SELINUXTYPE=disabled

问题现象: 重启Centos的时候,提示: unable to load selinux policy. machine is in enforcing mode. halting now. kernel panic-not syncing:attempted to kill init!

解决方法: 系统启动的时候,按下‘e’键进入grub编辑界面,编辑grub菜单,选择“kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/vogroup00/logvol00 rhgb quiet” 一栏,按‘e’键进入编辑,在末尾增加enforcing=0,即: kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/vogroup00/logvol00 rhgb quiet enforcing=0 按‘b’键继续引导,OK顺利前进。

使用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

[...]

在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即可。

“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 [...]

解决“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                             [...]

关于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 [...]

oracle下删除一个数据库

1、使用dbca。

2、手工删除日志、数据、控制、参数文件。

3、oracle10g以后,使用drop database命令:

shutdown abort; startup mount exclusive restrict; drop database;