Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Oracle12c:外部表无法打开文件_Database_Windows_Oracle_Oracle12c_External Tables - Fatal编程技术网

Database Oracle12c:外部表无法打开文件

Database Oracle12c:外部表无法打开文件,database,windows,oracle,oracle12c,external-tables,Database,Windows,Oracle,Oracle12c,External Tables,我已经检查了关于相同问题的问题,但没有帮助我 我已经使用usertpch1创建了外部表 CREATE TABLE region_ext (r_regionkey NUMBER, r_name VARCHAR2(25), r_comment VARCHAR2(152)) ORGANIZATION EXTERNAL ( TYPE oracle_loader DEFAULT DIRECTORY tpch1_dir ACCESS PARAMETERS ( RECORDS DELIMITED BY NE

我已经检查了关于相同问题的问题,但没有帮助我

  • 我已经使用usertpch1创建了外部表

    CREATE TABLE region_ext (r_regionkey  NUMBER,
    r_name VARCHAR2(25),
    r_comment VARCHAR2(152))
    ORGANIZATION EXTERNAL (
    TYPE oracle_loader
    DEFAULT DIRECTORY tpch1_dir
    ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE
    PREPROCESSOR zcat_dir:'zcat'
    NOBADFILE NODISCARDFILE NOLOGFILE
    FIELDS TERMINATED BY '|'
    MISSING FIELD VALUES ARE NULL
    )     
    LOCATION ('region.tbl.gz'));
    
  • 用户tpch1创建了目录:zcat和tpch1_dir,并对它们拥有读写权限

  • 正在尝试在此表上选择我得到的

    select count(*) region_count from region_ext
    *
    ERROR at line 1:
    ORA-29913: error in executing ODCIEXTTABLEFETCH callout
    ORA-29400: data cartridge error
    KUP-04001: error opening file E:\mgr\datadir\region.tbl.gz
    
  • 我正在使用Windows7和Oracle 12c。它是在学习期间使用的,所以我可以改变一切

  • 我还更改了这些目录的属性。现在每个人都可以充分利用它,所有者也是每个人


  • 请帮我找到解决方案:)

    您说
    zcat
    是一个目录,但
    zcat
    似乎是一个可执行文件的名称。我假设
    zcat\u dir
    是一个目录。哪个Windows用户正在运行Oracle服务?该Windows用户需要访问相关的Windows驱动器。E:\驱动器是本地的还是网络共享的?如果这是网络共享,则运行Oracle服务的Windows用户可能看不到它。使用UNC路径可能会有所帮助(不过,同样,Windows用户需要适当的访问权限)。@是的,你是对的。我想到了zcat_dir。这是一个本地驱动器。如何检查哪个用户运行oracle?但我认为每个用户都可以访问这个驱动器。如果您查看“控制面板”中的“服务”并找到Oracle服务,您就可以看到它是作为什么用户运行的。很可能,它不是以域用户身份运行的(假设您的Windows计算机位于域上)。“assuce”是指“假定”吗?还是“保证”?还是别的什么?您是否暗示该驱动器是网络共享而不是本地驱动器?您确定“每个用户”都包括非人工本地服务帐户吗?那个非人类真的挂载了E:\驱动器吗?还是只有在您登录时才挂载?我在Windows上没有这样做,所以只是一个随机的想法;预处理器命令是否必须包含后缀,即
    zcat\u dir:'zcat.exe'
    ?@AlexPoole aa。。。我在那里没有这个命令。因此,现在我创建了类似于
    @echo off“C:\Program Files\7-Zip\7z.exe”的东西,e%1
    @JustinCave应该有一个假设。很抱歉这是一个本地驱动器。运行oracle的用户显示为。\mgr,其中mgr是在my db创建过程中创建的主要oracle用户。奇怪的是,我想授予它特权(使用sqlplus),但它表明这样的用户并不存在。你说
    zcat
    是一个目录,而
    zcat
    似乎是一个可执行文件的名称。我假设
    zcat\u dir
    是一个目录。哪个Windows用户正在运行Oracle服务?该Windows用户需要访问相关的Windows驱动器。E:\驱动器是本地的还是网络共享的?如果这是网络共享,则运行Oracle服务的Windows用户可能看不到它。使用UNC路径可能会有所帮助(不过,同样,Windows用户需要适当的访问权限)。@是的,你是对的。我想到了zcat_dir。这是一个本地驱动器。如何检查哪个用户运行oracle?但我认为每个用户都可以访问这个驱动器。如果您查看“控制面板”中的“服务”并找到Oracle服务,您就可以看到它是作为什么用户运行的。很可能,它不是以域用户身份运行的(假设您的Windows计算机位于域上)。“assuce”是指“假定”吗?还是“保证”?还是别的什么?您是否暗示该驱动器是网络共享而不是本地驱动器?您确定“每个用户”都包括非人工本地服务帐户吗?那个非人类真的挂载了E:\驱动器吗?还是只有在您登录时才挂载?我在Windows上没有这样做,所以只是一个随机的想法;预处理器命令是否必须包含后缀,即
    zcat\u dir:'zcat.exe'
    ?@AlexPoole aa。。。我在那里没有这个命令。因此,现在我创建了类似于
    @echo off“C:\Program Files\7-Zip\7z.exe”的东西,e%1
    @JustinCave应该有一个假设。很抱歉这是一个本地驱动器。运行oracle的用户显示为。\mgr,其中mgr是在my db创建过程中创建的主要oracle用户。奇怪的是,我想授予它特权(使用sqlplus),但这表明这样的用户并不存在。