【问题标题】:How to test read/write filesystem permissions of directory Oracle?如何测试目录Oracle的读/写文件系统权限?
【发布时间】:2012-04-06 02:14:21
【问题描述】:

假设您创建了一个目录,例如:

CREATE OR REPLACE DIRECTORY 
EXT_DATA_FILES AS 
'/data/ext_data_files';
GRANT READ, WRITE ON DIRECTORY SYS.EXT_DATA_FILES TO MYAPPUSER;

我想知道 Oracle 是否能够在该路径中读取和写入文件。我该如何测试它?

在创建外部表以避免与权限错误无关的晦涩错误消息时,这对我有很大帮助。

【问题讨论】:

    标签: oracle permissions directory


    【解决方案1】:

    您可以使用UTL_FILE 包。例如,这将验证您可以在目录中创建一个名为some_new_file_name.txt 的新文件并向其写入数据

    DECLARE
      l_file utl_file.file_type;
    BEGIN
      l_file := utl_file.fopen( 'EXT_DATA_FILES', 'some_new_file_name.txt', 'W' );
      utl_file.put_line( l_file, 'Here is some text' );
      utl_file.fclose( l_file );
    END;
    

    这将验证名为 existing_file_name.txt 的文件是否存在并且可读

    DECLARE
      l_exists     boolean;
      l_size       integer;
      l_block_size integer;
    BEGIN
      utl_file.fgetattr( 'EXT_DATA_FILES', 
                         'existing_file_name.txt', 
                         l_exists, 
                         l_size, 
                         l_block_size );
       if( l_exists )
       then
         dbms_output.put_line( 'The file exists and has a size of ' || l_size );
       else
         dbms_output.put_line( 'The file does not exist or is not visible to Oracle' );
       end if;
    END;
    

    【讨论】:

      【解决方案2】:

      您(或管理员)必须在盒子上以 oracle 身份登录才能对其进行测试。

      或者...只需以 root 身份登录并检查目录的权限。 oracle 在我们商店的主要小组是“oinstall”。如果该目录不属于oracle,则应将该目录的组设为oinstall。

      我最近在获取有关外部表的权限时感到头疼,我在这里详细介绍了:sqlplus error on select from external table: ORA-29913: error in executing ODCIEXTTABLEOPEN callout

      【讨论】:

      • -1; OP 询问如何检查 来自 Oracle 而不是操作系统是否一切正常。
      • @Ben - 来自 Oracle 此处未具体定义。 “我想知道 Oracle 是否能够在该路径中读取和写入文件”很大程度上取决于 oracle 用户是否能够访问操作系统上的文件,不是吗?
      猜你喜欢
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 2013-10-17
      • 2012-07-12
      • 1970-01-01
      • 2014-08-28
      相关资源
      最近更新 更多