2009年5月22日星期五

NetBeans IDE and Groovy On Grails

1、近来在使用NetBeans 这个 IDE 写Grails程序玩,我用的是6.7的每日构建开发版
2、就是想赞扬一下它的强大。
3、多国语言版,界面自动切换为中文。
4、对Grails支持非常好,左边的文件树里面把grails的目录结构也翻译成中文了,反倒不习惯。比如,把英文的domain显示成"领域对象"。猛的一下不习惯,然后就顺爽的习惯了。
5、对语法高亮、代码补全做的非常好。
6、支持代码调试,不错。
7、不需要先建立工程,可以直接打开一个Grails的目录,自己扫描,比ecllipes爽利太多了。
8、项目根目录上的右键全面支持Grails的所有命令,不用再去手工去终端模式敲命令了(虽然我很喜欢快速、欢快的敲命令的爽利感觉),非常方便。
9、Grails比JRuby好的地方在于,你可以直接使用Java的语法、JDK库的所有功能,一切都是直接使用。我遇到的一个问题是grails从GORM中返回的整数自动加了分节号,形如"10,000",要转换成数字得去掉分节号,想也没有想直接用String类的replace方法去掉,运行OK。爽利至极。如果用JRuby,你得考虑在Java和Ruby语法之间做转换,脑袋是不是得"咯噔"一下。
10、Grails和Rails有相似的地方,也有不同的地方。
11、选择Grails平台,选择NetBeans作为开发工具,是一件很爽利的事情。

Blogger继续被GFW封锁中,本文通过email post.

郎啊郎别太忙 | langalang.blogspot.com

2009年5月19日星期二

陈升-我的明天

<embed src="http://www.xiami.com/widget/140799_384424/singlePlayer.swf" type="application/x-shockwave-flash" width="257" height="33" wmode="transparent"></embed>

http://www.xiami.com/widget/140799_384424/singlePlayer.swf

blogger无法登陆,通过email发布。

郎啊郎别太忙 | langalang.blogspot.com

2009年5月12日星期二

Unix Linx 平台 Oracle 自动备份 指南 crontab

一、把文档末尾的脚本保存为”oracle_auto_exp.sh”文件。

二、把文件上传至服务器,比如/home/oracle

三、用oracle用户登陆unix/linux系统
a) 设置文件的执行属性:chmod 777 /home/oracle/oracle_auto_exp.sh
b) 建立一个autoback的目录:#mkdir /home/oracle/autoback
c) 用vi命令修改oracle_auto_exp.sh里面的相关参数,注释里面有详细说明。
d) 修改脚本后保存;
e) 手工执行一次/home/oracle/oracle_auto_exp.sh,看是否在/home/oracle/autoback里面备份成功了。详细的信息可以看这个目录里面生成的文字。如果执行成功,说明备份脚本正确无误。

四、建立一个oracle用户的每天2点执行备份脚本的任务
a) 确认是用oracle用户登陆系统;执行如下命令:
b) #crontab –e oracle
c) 在编辑界面输入如下任务参数:
d) 0 2 * * * /home/oracle/oracle_auto_exp.sh
e) 这个界面就是vi界面,注意前面五个标志中间必须空格。保存退出。
f) 如果执行crontab –e oracle时报错,那说明oracle用户还没有被允许建立cron任务;
g) 用su – root切换到root用户,在/var/adm/cron/cron.allow文件中增加oracle用户名“oralce”。如果不存在/var/adm/cron/cron.allow,就建立这个文件。
h) 确保/var/adm/cron/cron.deny中没有oracle字样
i) Su – oracle 切换回oracle用户,重复执行b\c\d\e这几个步骤。

五、可以先把cron时间设置为当前时间5分钟以后的时间,看10分钟后是否备份成功。考虑备份本身也要耗用时间,可以稍微等一个比较长的时间去查看备份目录。


脚本内容:

#!/bin/bash
#Oracle环境参数,根据实际更改
export ORACLE_HOME=/oracle/product/10g/db_1
export ORACLE_BASE=/oracle
export ORACLE_SID=ncdb
PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:$ORACLE_HOME/bin:$PATH:.:
export PATH

#设置shell语言编码参数,必须和Oracle所用的一致
#确认方法,用oracle用户登陆操作系统;
#运行sqlplus,执行 select * from v$nls_parameters where parameter='NLS_CHARACTERSET';语句
#sqlplus /nolog
#conn ncdb/ncdb as sysdba
#> select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
#结果所示的编码,替换下面的ZHS16GBK
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

#数据备份的路径
#mkdir /home/oracle/autoback
export EXPORT_HOME=/home/oracle/autoback
#EXP导出所用的Oracle用户名密码,必须是NC所用的用户名,根据实际更改
export ORACLEUSER=ncXXX
export ORACLEPASSWD=ncXXX
export SPLIT_SIZE=10000000
#导出文件面加上日期
export TODAY=`date +%Y%m%d%H%M`
export LOG=$ORACLEUSER-$TODAY.log
export START_TIME=`date`
export EXP_FILE=$EXPORT_HOME/$ORACLEUSER-$TODAY.dmp.gz

cd $EXPORT_HOME

#删除老管道
rm -f once_compress_pipe
#建立压缩管道
mknod once_compress_pipe p
#设置权限
chmod 660 once_compress_pipe
#压缩命令
nohup gzip <> $EXP_FILE &
#导出数据
exp $ORACLEUSER/$ORACLEPASSWD FILE=once_compress_pipe buffer=10485760 RECORDLENGTH=65535 direct=y log=$EXPORT_HOME/$LOG
echo 'Starting at ' $START_TIME '\n' >> $EXPORT_HOME/$LOG
echo 'Ending at ' `date` '\n' >> $EXPORT_HOME/$LOG
#删除管道
rm -f once_compress_pipe

自己试验通过没有问题。不完善的地方,欢迎拍砖。

2009年5月8日星期五

超过AIX单用户最大进程数导致oracle无法登陆的解决

今天需要登陆到AIX上,往Oracle里面导入一个数据。先是用root身份,然后su切换到Oracle用户,结果发现切换不过去,挂在那里,半天没有反映。等了很久,才出来一个提示:该用户进程数过多,操作失败。

咱不怕,还是用root身份,ps -ef |grep oracle。一看,大约有近百条oracle远程连接进程。因为(LOCALE=NO)。回想起来,我们的确是建立了很多测试帐套和培训帐套,每个帐套都有很多最小连接数,NC一启动,就要建立连接池的,连接就建立了。

而在unix上,Oracle有自己的专属进程,基本上每一个远程连接就启动一个进程。这样oracle进程就超多了,超过了每用户最大128个的上限。oracle用户就再无法连接和登录了。

解决办法:

先查看系统那个设置:

# lsattr -E -l sys0

显示:

maxuproc 128 Maximum number of PROCESSES allowed per user

更改为800

# chdev -l sys0 -a maxuproc=800

再看:

maxuproc 800 Maximum number of PROCESSES allowed per user

su - oracle ,一切正常。

有点好玩的,每次su,都显示[YOU HAVE NEW MAIL]

郎啊郎别太忙 | langalang.blogspot.com


2009年5月7日星期四

Grails 连接 Oralce url 的方法

在玩Grails
折腾了半天,终于连上了oracle数据库。下面是url的例子:
dataSource {
pooled = true

url = "jdbc:oracle:thin:@localhost:1521:orcl"
driverClassName = "oracle.jdbc.OracleDriver"
username = "ncstudy"
password = "ncstudy"
}

其中:thin是jdbc驱动的一种类型。orcl是实例名。

我试了sqlite数据库:

url = "jdbc:sqlite:gtunes"
//url = "jdbc:sqlite::memory"
driverClassName = "org.sqlite.JDBC"

怎么都是不成哦。

奇怪的是,NC的oralce驱动类名是oracle.jdbc.driver.OracleDriver,我试了,两个都可以。

收工,回家。
由于GAE不支持hibernate,没办法,那就很多scalforld的功能没法利用了。只能用JPA。JDBC也用不了,得换成JDO。GORM也悬了。哎呀。Grails。

郎啊郎别太忙 | langalang.blogspot.com