新年快乐



06年的最后一天,加班中…

感觉回到了02年,当初也是在大年三十从绍兴赶回来过年,初二又回绍兴,已经好久没有这样熬夜了。

年纪也大了,熬不动了。

教训-千万不要在过年的这个月割接,会死人的。

06年对我来说实在是苦闷的一年,不顺。希望猪年能带来好运吧。

祝大家新年快乐!

Technorati : xbin999, 工作, 新年

又遇到"maximum open cursors exceeded"



昨天刚骂完娘,下午还是又被拉到学院路了。说是程序出错,提示"maximum open cursors exceeded"。电话都到老板那里了,伙计们也都急着要回家过年。

只有自己再过去看看是啥。当初曾碰到过一次,那时的原因是"远程访问序列"的问题。这里再描述一次吧:

> 在oracle的文档中给出了取sequence值的例子:schema.sequence.nextval@dblink
>
不过这里还有一个要注意的地方,就是写完整的sql语句时,应该是
> select yourseq.nextval@dblink from dual@dblink
> 而不是
> select
yourseq.nextval@dblink _from dual
> 两者有差别,这一次我的程序就犯了这个错误,使用了后一种写法,结果在后台服务程序长时间运行后出错,错误信息:
> ORA-01000 maximum open cursors exceeded
> 主要原因就是使用后一种写法,造成分布式事务,每执行一次会打开游标,而没有关闭,这样一个session长时间执行后,就可能超出OPENCURSORS的阀值。
> 如果有环境的话,大家可以一试:
> 在sqlplus中执行
> select
_seqtest.nextval@mydblink _from dual;
> 语句,然后检查
> select OPENCURSORS from v$dblink;
> 该数值持续增长。


赶到机房,看了错误,再问了一下同事的代码,感觉采用OTL时用了静态变量出了问题。写了段测试代码:

int test_open_cursors( otl_connect& dbConnect, CBSErrorMsg& cErrorMsg)
{
int16 rv;

try
{
int iOpenCursors = 0;
string strSql = "select 1 from dual@testcs2";
string strSql2 = "select OPEN_CURSORS from v$dblink";

double llSeqId;
int32 iMax = 2000;

for ( int i = 0; i < iMax; ++i)
{
static otl_stream os;
os.open( 1, strSql.c_str(), dbConnect);
os >> llSeqId;
cout << llSeqId << "t";
// os.close();

otl_stream os2( 1, strSql2.c_str(), dbConnect);
os2 >> iOpenCursors;
cout << iOpenCursors << endl;
}
}
catch(otl_exception& p)
{
cerr << string( (const char*)p.msg + string(p.stm_text) + string(p.var_info)) << endl;
return -1;
}
return 0;
}

哎,果然。静态变量os光做了open,没有close,结果导致游标打开持续增长。好了,总算问题找到了,伙计,赶紧改程序吧。

希望还能过好年。

Technorati : Oracle, xbin999, 工作, 游标

割也割了,可以过个好年



2月8日项目割接,8日、9日连续作战,差不多都快两天两夜,这也算是我参与割接的最苦的一次了。而且不同的是承担的压力更重。

整个过程感觉可以拍一部电影,中间参与人紧张的程度我想也不亚于什么什么24小时之类的了。

庆幸的是最后的结果是成功的,但说实在的那取决于老天,呵呵。

要谢谢我们项目组的兄弟,还有参与割接的人。大家的辛苦没有白费,起码能过个好年了。

Technorati : xbin999, 工作

这年头能相信啥



一直在关注艾晴晴的别针换别墅,还在等最后的结果呢。

迟迟没有消息,上面的blog都好久没更新了。却无意中看到了这样的新闻

童话还是骗局,这年头你说真还能相信谁。

再看看她博客上的留言我笑世人看不穿说:

有人疯了,有人傻了,有人被耍了;
有人哭了,有人笑了,有人上吊了;
有人来了,有人去了,有人心虚了;
有人输了,有人赢了,有人得逞了;

呵呵,我们就继续傻吧。还是希望自己的心中能有一个童话。

Technorati : xbin999, 别针换别墅, 艾晴晴