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
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'));
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
请帮我找到解决方案:)您说
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),但这表明这样的用户并不存在。