近来遇到一个很麻烦的问题. 使用公司软件查看备份出来的数据.
oracle版本为9204, 目前已经有相应的备份版本, 使用公司的产品把备份出来的数据打开. 由于整个数据库在2.3t左右, 公司的产品工作起来很是麻烦, 我们已经测试了好久, 上星期已经有一位工程人员测试一星期的, 结果是没打开, 产品到一定的时候就不动没响应了.
我要说的注意sql输入是, 我们打开的主要步骤为:
sql>startup mount pfile=dbname.ora
sql>recover database cancel using backup controlfile
sql>输入回滚日志
sql>cancel
sql>alter databse open resetlogs
由于数据库太大, 产生的日志log文件也很大, 所以做一次"输入回滚日志"回滚的时间很长, 大概在50分钟左右. 假设我们已经知道某个版本回滚到某个日志就可以打开了, 这个时候就可以输入cancel再"alter database open resetlogs"就可以了. 但问题出现的让我们自己也莫名其妙.
我们是通过一个telnet工具登录到hp unix上操作的, 这个工具有个问题就是, 很长时间没有对该界面做任何操作, 他将关闭该telnet连接. 我们为了防止telnet断开, 就不时的切换到telnet的窗口下敲一些回车. 假设我们只要回滚到log3.dbf文件就可以打开了, 结果我们输入完cancel后oracle既然还会接着回滚log4.bdf, 我们想了很长时间感觉oracle真的不应该这样操作. 但就是找不到为什么.
后来终于发现原来sql时oracle就更本没有使用我们输入的cancel数据,而是接受了回车.回车表示oracle将自动查看log文件,所以将会继续向下查找.为什么没有接受我们输入的cancel呢?不知道大家使用sql时有没有遇到个这样的情况,当你在等待如:
select count(*) from table_name;
如果该表数据很大,在100万左右时,这个时间将会有一个等待的时间,如果你感觉很慢就多输入了几个回车,你将会在该查询完成后看到如:sql>sql>sql>这样的东西..原来是oracle将你输入的数据进行了提前缓存了.怪不得输入cancel也没办法停止,也就是oracle看到的实际是输入了回车!
阅读(1275) | 评论(0) | 转发(0) |