请教一个判断语句。
有一个备份数据库B,在备份好后才会向我们开放,但是有时候这一天都不会开。   
 我有一个数据库A,在A上建了到数据库B的DBLINK。   
 在A上跑了一个应用,要用到B的数据,比如: 
 select   *   from   all_tables@B   
 我要怎样判断数据库B是否已经可用,我试了用异常,如下: 
 declare    
 aa   number(10); 
 begin 
 select   count(*)   into   aa   from   all_tables@B   where   rownum <2; 
 exception 
 when   others   then 
 dbms_output.put_line( '数据库未准备好 '); 
 end;   
 但捕捉不到,报的错误是
ORA-00942:表或视图不存在。 
 不知还有什么别的办法?请教。 
------解决方案--------------------首先判断db_link是否通了?   
 select sysdate from dual@B; 
 如果有返回值,说明通了。否则需要看看是什么问题不通,有可能是网络问题,有可能是tnsnames.ora没有配置好   
 如果有返回值,需要给远程数据库的你要访问的表在本地建立公共同义词的   
 如: 
 create publis synonym tabl_name for sys.tabl_name@B;
------解决方案--------------------如楼上所说的,首先是看看你用 <@连接名> 这种方式是否有问题,包括权限;(你可以看看用B.all_tables的方式访问看看)如果没有问题,从user_tables里看看该表是否存在,然后才是记录数的比较.
------解决方案--------------------dblink不好用时确实捕获不到异常的 
 我是用返回的 'ORA-00942:表或视图不存在 '来判断数据库是否连接准备好的(前提是肯定有连接的表)