从其他oracle数据库访问bfile

时间:2018-01-18 13:46:30

标签: oracle

我有两个使用Oracle Standard Edition Two 12.1,DB1和DB2的Oracle数据库。 DB1包含下表FILE_TABLE:

ColumnName  DataType
File_Id     Number
File_Ref    Bfile

我将Bfile存储到FILE_TABLE表的File_Ref中。 我想从FILE_TABLE表访问Bfile并在DB2中显示它。

我已经使用数据库链接尝试过了。使用数据库链接,我尝试这样做:

SELECT  FILE_REF FROM FILE_TABLE@dblink;

但是它给出了一个错误:ORA-22992:无法使用从远程表中选择的LOB定位器

我也尝试了DBMS_FILE_TRANSFER但是当我研究它时,我知道我们只能传输系统数据文件而不能传输Bfile。 这是真的吗? 这是我用来传输文件的语法:

DBMS_FILE_TRANSFER.put_file(
source_directory_object => 'db1_dir',
source_file_name => 'db1test.html',
destination_directory_object => 'db2_dir',
destination_file_name => 'db2test.html');
destination_database => 'db1_to_db2',
END;
/

但我收到了一个错误:

  

ORA-19505:无法识别文件“/db1_dir/db1test.html”

     

ORA-27046:文件大小不是逻辑块大小的倍数

     

其他信息:1

     

ORA-02063:来自db1_to_db2的前3行

     

ORA-06512:在“SYS.DBMS_FILE_TRANSFER”第37行

     

ORA-06512:在“SYS.DBMS_FILE_TRANSFER”,第132行

     

ORA-06512:第2行

     
      
  1. 00000 - “无法识别文件\”%s \“”
  2.         

    *原因:调用识别文件返回错误

         

    *操作:检查其他消息,并检查文件是否存在

有没有办法使用数据库链接?有没有其他解决方案可以将Bfile从一个数据库移动到另一个数据库?

1 个答案:

答案 0 :(得分:1)

ora-27046通常表示在文件传输过程中文件已被更改。这可能是由防火墙引起的。您是否验证过该文件是否相同。

另外,当你得到ora-27046时,它不是唯一的错误,你会收到几个错误的错误堆栈。发布完整的错误堆栈会很好。你也没有提到你正在使用哪个oracle版本。