我有两个使用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行
- 00000 - “无法识别文件\”%s \“”
醇>*原因:调用识别文件返回错误
*操作:检查其他消息,并检查文件是否存在
有没有办法使用数据库链接?有没有其他解决方案可以将Bfile从一个数据库移动到另一个数据库?
答案 0 :(得分:1)
ora-27046通常表示在文件传输过程中文件已被更改。这可能是由防火墙引起的。您是否验证过该文件是否相同。
另外,当你得到ora-27046时,它不是唯一的错误,你会收到几个错误的错误堆栈。发布完整的错误堆栈会很好。你也没有提到你正在使用哪个oracle版本。