可以到新浪微博关注偶
blogcn系统改版之后就不想再用了,而且现在微博比较热乎,大家都在玩,所以可以到新浪微博关注偶-http://weibo.com/yorking(顺便说一下:blogcn支撑代码的限制太多了,连个微博应用都搞不起来)
07月 27th, 2011 by KING | No Comments »blogcn系统改版之后就不想再用了,而且现在微博比较热乎,大家都在玩,所以可以到新浪微博关注偶-http://weibo.com/yorking(顺便说一下:blogcn支撑代码的限制太多了,连个微博应用都搞不起来)
07月 27th, 2011 by KING | No Comments »iPad刷3.2.2固件并越狱后无法定位的问题,可以通过增加源:cydia.pushfix.info后安装Spirit Location Services Fix的包,重启后即可正常定位。我的iPad由于使用91助手安装/卸载软件被搞成白苹果,不得不刷机成3.2.2并用绿毒越狱之后,发现原来能通过网络定位的现在定位不了了。通过这个办法确实能够恢复定位功能。
另外有修复经验(网上找到的,没有实际验证过):
1、使用cydia卸载其中的OpenSSH包后可恢复定位正常,
2、修改:文件/System/Library/LaunchDaemons/com.apple.locationd.plist中"<key>OnDemand</key>"下一行内容中的<false/>为<true/>
3、通过issh执行命令(每次重启都需要执行,比较麻烦):
launchctl unload /System/Library/LaunchDaemons/com.apple.locationd.plist
launchctl load /System/Library/LaunchDaemons/com.apple.locationd.plist
之前用91助手中的iPod管理功能往ipad上传了些mp4电影,发现用ipad上的视频播放软件无法像用itunes传的那样显示初始图像,进而又发现再用itunes连接的时候已经不正常了,报错“iTunes不能读取ipad的内容请前往ipad的“偏好设置”的“摘要”选项卡然后点击“恢复”已将此ipad恢复为出厂设置”。恢复就恢复了,但是有个让人很不爽的是当有新版本OS的时候先要做升级,而无法简单直接恢复下就可以。想想要下载好几百MB的OS镜像来更新OS实在可怕,只好上网google和百度,找到了一个很简单的办法——删除/var/Mobile/Media/下的iTunes_Control文件夹(用91助手的文件管理)即可恢复itunes正常连接ipad了。
09月 7th, 2010 by KING | No Comments »iphone装了移动的卡,由于cmwap有封顶包月套餐,而cmnet的资费很高,超出套餐部分将是1元/MB的高价格,实在消费不起。原来只能使用ucweb、qq等内置代理的软件上网,其他很多无法设置代理的软件都用不起来,比如新浪的微博客户端、自带的天气软件、股票软件等等都无法更新数据。实在不更新,找来找去,终于在网上找到iphone设置代理突破wap网的限制。代理设置方法如下(来源:威风网):
1:点开IPHONE的 设置--通用--还原--选择里面的“还原网络设置”(这步很重要)
2:使用91助手里的“内置编辑器”(选中文件右击),修改private/var/preferences/systemconfiguration中的preferences.plist文件。修改内容按下面的添加。主要在这里,一定不要添错了!不知道位置的我给你个小提示,用编辑器里面的“查找”,查找“ip1”然后向下拉一点,找到</dict>然后添加 粉红色的段落,格式要一样的哦!黑色部分就不要修改了,改完后保存。
<dict>
<key>Interface</key>
<dict>
<key>DeviceName</key>
<string>ip1</string>
<key>Hardware</key>
<string>com.apple.CommCenter</string>
<key>Type</key>
<string>com.apple.CommCenter</string>
<key>UserDefinedName</key>
<string>com.apple.CommCenter (ip1)</string>
</dict>
<key>Proxies</key>
<dict>
<key>HTTPEnable</key>
<integer>1</integer>
<key>HTTPPort</key>
<integer>80</integer>
<key>HTTPProxy</key>
<string>10.0.0.172</string>
<key>HTTPProxyAuthenticated</key>
<integer>0</integer>
<key>HTTPProxyType</key>
<integer>1</integer>
<key>HTTPSEnable</key>
<integer>1</integer>
<key>HTTPSPort</key>
<integer>80</integer>
<key>HTTPSProxy</key>
<string>10.0.0.172</string>
<key>ProxyAutoConfigEnable</key>
<integer>0</integer>
</dict>
<key>UserDefinedName</key>
<string>com.apple.CommCenter (ip1)</string>
<key>com.apple.CommCenter</key>
<dict>
<key>AllowNetworkAccess</key>
<integer>1</integer>
<key>Available</key>
<integer>1</integer>
<key>Setup</key>
<dict>
<key>apn</key>
<string>cmwap</string>
<key>password</key>
<string></string>
<key>username</key>
<string></string>
</dict>
<key>Version</key>
<integer>1</integer>
</dict>
</dict>
3:接下来只要在 设置-通用-网络-蜂窝数据网-APN添入cmwap
4:最后注销或重启下!恭喜你,你的cmwap设置完成,没问题了!
设置后一般的软件都能正常上网,但mail软件还是不行,包括自带的和网上下载的其他使用pop3、smtp协议收发邮件的软件,对此还没找到什么办法能正常收发邮件的
修改数据库的初始化参数lock_sga为true之后,发现启动数据的时候提示错误:
ORA-27125: unable to create shared memory segment
HPUX-ia64 Error: 1: Not owner
操作系统HP-UX B.11.31 U ia64
数据库版本:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
检查OS的shmmax等核心参数,设置都满足oracle安装手册要求的。
恢复该参数为false后数据库能正常启动。
参考后发现该参数需要对OS有适当设置才能使用,如【以下参考csdn上资料】:
lock_sga = true 的问题
由于几乎所有的操作系统都支持虚拟内存,所以即使我们使用的内存小于物理内存,也不能避免操作系统将SGA
换到虚拟内存(SWAP)。所以我们可以尝试使得SGA
锁定在物理内存中不被换到虚拟内存中,这样减少页面的换入和换出,从而提高性能。但在这里遗憾的是,windows
是无法避免这种情况的。下面我们来参考在不同的几个系统下怎么实现lock_sga
AIX 5L(AIX 4.3.3 以上)
logon aix as root
cd /usr/samples/kernel
./vmtune (信息如下) v_pingshm已经是1
./vmtune -S 1
然后oracle用户修改initSID.ora 中 lock_sga = true
重新启动数据库
HP UNIX
Root身份登陆
Create the file "/etc/privgroup": vi /etc/privgroup
Add line "dba MLOCK" to file
As root, run the command "/etc/setprivgrp -f /etc/privgroup":
$/etc/setprivgrp -f /etc/privgroup
oracle用户修改initSID.ora中lock_sga=true
重新启动数据库
SOLARIS (solaris2.6以上)
8i版本以上数据库默认使用隐藏参数 use_ism = true ,自动锁定SGA于内存中,不用设置lock_sga, 如果设置 lock_sga =true 使用非 root 用户启动数据库将返回错误。
WINDOWS
不能设置lock_sga=true,可以通过设置pre_page_sga=true,使得数据库启动的时候就把所有内存页装载,这样可能起到一定的作用。
最近有新上的应用,里面的SQL在执行过程中多次报错:
ORA-01652: 无法通过 128 (在表空间 TEMP 中) 扩展 temp 段
执行过程中进行跟踪观察temp表空间上的temp对象,确实session占用了很大的temp空间
--Temp表空间上进程的查询
select a.tablespace, b.sid, b.serial#, a.blocks,c.sql_text
from v$sort_usage a,v$session b,v$sqltext c
where a.session_addr = b.saddr
and b.sql_address = c.address
order by a.tablespace,b.sid,b.serial#,c.address, c.piece;
检查sql的执行计划,发现3个关联的表是hash方式的,虽然表的数据量不大,但在hash关联过程中占用了非常大temp空间,导致报错
处理办法:使用dbms_stat重新分析一下表,更新几个表的分析信息后执行计划看起来虽然变化不大,但sql的执行效率大大提高,原来执行要好几分钟的,现在1分钟之内就能全部完成了。
最近一个同步数据的应用偶尔地、不定时地报ORA-01410:invalid ROWID的错误。
随后检查数据库的该表索引,没有发现UNUSABLE的情况。查询该错误对应的说明为:
ORA-01410: invalid ROWID
Cause: A ROWID was entered incorrectly. ROWIDs must be entered as formatted hexadecimal strings using only numbers and the characters A through F. A typical ROWID format is '000001F8.0001.0006'.
Action: Check the format, then enter the ROWID using the correct format. ROWID format: block ID, row in block, file ID.
初步可以确定是由于应用中存在truncate partition的操作,导致了索引在使用时ROWID无效,但为何后来再查的时候没有发现无效的索引分区。
随后,由观察发现sql的执行中存在PARTITION RANGE ALL的情况,并且有多个进程并发执行处理不同分区的情况。所以,怀疑是由于并发过程中,一个进程truncate了partition,随后就会清理对应分区的index,但在这个过程中另外有进程正好在全分区检索,遇到使用这个分区索引的时候就出现了rowid无效的问题。而在清理完分区数据及索引后,索引状态也会是正常的,这也解释了为何事后检查问题是没有发现无效分区索引的情况。
解决办法:调整where子句中的条件,避免PARTITION RANGE ALL的情况,确保一个进程只在一个分区中进行操作。
本来运行正常的一个测试环境上突然出现jdbc连接不上数据库(通过其他方式检测数据库是正常的),提示错误:weblogic.common.resourcepool.ResourceSystemException: Cannot load driver class: oracle.jdbc.OracleDriver。
log文件中提示的错误有:
<2010-2-27 下午01时20分20秒 CST> <Warning> <Deployer> <BEA-149004> <Failures were detected while initiating activate task for application 'DatasourceTest'.>
<2010-2-27 下午01时20分20秒 CST> <Warning> <Deployer> <BEA-149078> <Stack trace for message 149004
weblogic.application.ModuleException:
at weblogic.jdbc.module.JDBCModule.prepare(JDBCModule.java:289)
at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)
at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:387)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)
at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:5 ![]()
Truncated. see log file for complete stacktrace
weblogic.common.resourcepool.ResourceSystemException: Cannot load driver class: oracle.jdbc.OracleDriver
at weblogic.jdbc.common.internal.JDBCUtil.parseException(JDBCUtil.java:300)
at weblogic.jdbc.common.internal.ConnectionEnvFactory.loadDriver(ConnectionEnvFactory.java:75)
at weblogic.jdbc.common.internal.ConnectionEnvFactory.<init>(ConnectionEnvFactory.java:131)
at weblogic.jdbc.common.internal.ConnectionPool.initPooledResourceFactory(ConnectionPool.java:646)
at weblogic.common.resourcepool.ResourcePoolImpl.start(ResourcePoolImpl.java:200)
Truncated. see log file for complete stacktrace
>
<2010-2-27 下午01时20分20秒 CST> <Error> <Console> <BEA-240003> <Console encountered the following error weblogic.application.ModuleException:
at weblogic.jdbc.module.JDBCModule.prepare(JDBCModule.java:289)
at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)
at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:387)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)
at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:5 ![]()
at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:42)
at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:615)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)
at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:191)
at weblogic.application.internal.SingleModuleDeployment.prepare(SingleModuleDeployment.java:16)
at weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:155)
at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:60)
at weblogic.deploy.internal.targetserver.operations.ActivateOperation.createAndPrepareContainer(ActivateOperation.java:197)
at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doPrepare(ActivateOperation.java:89)
at weblogic.deploy.internal.targetserver.operations.AbstractOperation.prepare(AbstractOperation.java:217)
at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentPrepare(DeploymentManager.java:723)
at weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploymentList(DeploymentManager.java:1190)
at weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare(DeploymentManager.java:216)
at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.prepare(DeploymentServiceDispatcher.java:159)
at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doPrepareCallback(DeploymentReceiverCallbackDeliverer.java:157)
at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.prepare(DeploymentReceiverCallbackDeliverer.java:40)
at weblogic.deploy.service.internal.statemachines.targetserver.AwaitingContextUpdateCompletion.callDeploymentReceivers(AwaitingContextUpdateCompletion.java:164)
at weblogic.deploy.service.internal.statemachines.targetserver.AwaitingContextUpdateCompletion.handleContextUpdateSuccess(AwaitingContextUpdateCompletion.java:66)
at weblogic.deploy.service.internal.statemachines.targetserver.AwaitingContextUpdateCompletion.contextUpdated(AwaitingContextUpdateCompletion.java:32)
at weblogic.deploy.service.internal.targetserver.TargetDeploymentService.notifyContextUpdated(TargetDeploymentService.java:225)
at weblogic.deploy.service.internal.DeploymentService$1.run(DeploymentService.java:189)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:516)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
Caused by: weblogic.common.resourcepool.ResourceSystemException: Cannot load driver class: oracle.jdbc.OracleDriver
at weblogic.jdbc.common.internal.JDBCUtil.parseException(JDBCUtil.java:300)
at weblogic.jdbc.common.internal.ConnectionEnvFactory.loadDriver(ConnectionEnvFactory.java:75)
at weblogic.jdbc.common.internal.ConnectionEnvFactory.<init>(ConnectionEnvFactory.java:131)
at weblogic.jdbc.common.internal.ConnectionPool.initPooledResourceFactory(ConnectionPool.java:646)
at weblogic.common.resourcepool.ResourcePoolImpl.start(ResourcePoolImpl.java:200)
at weblogic.jdbc.common.internal.ConnectionPool.doStart(ConnectionPool.java:1051)
at weblogic.jdbc.common.internal.ConnectionPool.start(ConnectionPool.java:146)
at weblogic.jdbc.common.internal.ConnectionPoolManager.createAndStartPool(ConnectionPoolManager.java:385)
at weblogic.jdbc.common.internal.ConnectionPoolManager.createAndStartPool(ConnectionPoolManager.java:326)
at weblogic.jdbc.module.JDBCModule.prepare(JDBCModule.java:251)
>
最后检查发现/bea/wlserver_10.3/server/lib目录下有个jar文件被修改了。
对比了一下其他机器上的文件,发现这台机器上的文件版本变成了ojdbc14.jar,并且文件的x权限没有了。
为了保证各机器环境一致,所以从其他机器上复制了ojdbc6.jar,并设置了x权限,数据库连接恢复正常。
【环境】
1、操作系统文件数扩大
修改/etc/security/limits.conf,增加文件数最大上限
* soft nofile 32768
* hard nofile 65536
修改/etc/profile,设置各用户的最大文件数,增加
ulimit -n 20000
同时,可增加 export LANG=zh_CN.gb18030 来显示中文(加到最后,/etc/profile.d/*.sh中会设置LANG)
2、使用webapp用户执行Nodemanager
需要向$WLS_HOME/common/nodemanager目录下写入Nodemanager的相关配置文件
需要设置该目录权限,对webapp用户可写入
export WLS_HOME=/weblogic/bea/wlserver_10.3
chmod 775 $WLS_HOME/common/nodemanager
chmod 664 $WLS_HOME/common/nodemanager/nodemanager.domains
3、在webapp用户的$HOME目录下创建启动Nodemanager的link
export WLS_HOME=/weblogic/bea/wlserver_10.3
ln -s $WLS_HOME/server/bin/startNodeManager.sh startNodeManager.sh
4、如果创建domain时选择使用jdk160_05
则需要修改/weblogic/bea/wlserver_10.3/common/bin/commEnv.sh中的JAVA_HOME为jdk160_05
原来默认的是jrockit_160_05,由于jdk的不同,可能会影响应用的部署
同时,commEnv.sh中还需要将JAVA_VM=-jrockit修改为JAVA_VM=-server,否则启动时找不到jrockit选项
【其他】
1、防火墙相关
linux关闭防火墙:/etc/init.d/iptables stop
启动机器时不启动防火墙:chkconfig iptables off
2、打开mutlicast
无须重新编译内核来打开multicast,只需要修改一个配置文件:
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
因为实际上multicast IP已经注册在网卡上了,用netstat -g可以看到
创建machine并配置相应的Nodemanager之后,使用控制台启动server时发现Nodemanager无法reachable,adminserver提示错误信息:<BEA-090476> Invalid/unknown SSL header was received from peer localhost - 127.0.0.1 during SSL handshake
后检查发现,Nodemanager的JAVA_HOME与Domain的JAVA_HOME不一致造成的,前者用了jrocket、后者是jdk。
同时,在nodemanager.properties配置文件里面生成的也是jrocket的JavaHome,需要修改为一致的jdk。
另外,在一个机器上多个domain时使用哪个用户运行Nodemanager,对目录/文件的权限有较大影响,所有用户最好设置在同一个组内,并设置好组内权限。否则,启动时会提示目录/文件无法创建等I/O错误。