Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3908456
  • 博文数量: 534
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4800
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(534)

文章存档

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(253)

2006年(73)

分类: Oracle

2007-06-15 22:35:26

     近来遇到一个很麻烦的问题. 使用公司软件查看备份出来的数据.
     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看到的实际是输入了回车!
阅读(1249) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~