创建一个远程外部表

时间:2018-11-20 13:24:35

标签: sql oracle remote-access external-tables

我具有以下基础结构:

装有Windows操作系统的本地计算机,名为A,安装了Oracle 12c。 具有Windows操作系统的远程计算机(名为B)映射到计算机A。

我正在尝试从Oracle(计算机A)的内部表在B上创建一个外部表“ AS SELECT”。

为此:

  1. 我在Oracle中创建了一个目录:

    创建或替换目录external_test_dir为'h:\ external_test_dir';

  2. 我在Oracle中创建了一个内部表:

    创建表TEST_INT(ID号,文本varchar2(100));

  3. 在TEST_INT表中插入值:

    插入TEST_INT值(1,“测试1”);

    插入TEST_INT值(2,“测试2”);

  4. 尝试从远程位置的TEST_INT表中选择创建外部表TEST_EXT。

并且我收到以下错误消息:

Error starting at line 58 in command:
create table TEST_EXT
organization external 
  (
      type ORACLE_DATAPUMP
      default directory EXTERNAL_TEST_DIR 
      location ('TEST_EXT_FILE.csv')
   )
   parallel 2
   as
   select *
    from TEST_INT
Error at Command Line:58 Column:1
Error report:
SQL Error: ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-04001: error opening file h:\external_test_dir\TEST_EXT_2480_11532.log
29913. 00000 -  "error in executing %s callout"
*Cause:    The execution of the specified callout caused an error.
*Action:   Examine the error messages take appropriate action.

请问有人可以解决该错误吗?

PS:我在具有DB Server的同一台机器上尝试了一个外部表的相同示例,并且工作正常。

谢谢

1 个答案:

答案 0 :(得分:1)

您需要确保Oracle具有对EXTERNAL_TEST_DIR的读/写访问权限,因为它必须能够将日志写到同一目录中。有关更多详细信息,请参见this link