暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 将sql loader用于仅通过非默认角色具有插入权限的表

ASKTOM 2019-02-13
321

问题描述

团队,

我正在尝试使用Sql Loader将文本文件加载到普通的Oracle表中 (而不是外部表)。不幸的是,我只有通过非默认角色对表的插入权限。如果我只是在sql * plus/sql developer/toad/无论如何做一个简单的插入语句,我可以在运行insert命令之前做一个 “设置角色全部” 命令,但我无法在文档中找到我可以为sql loader做到这一点。

我已经包含了下面的代码,希望提出一个有效的测试用例。(对不起,Livesql似乎不允许创建用户和角色)。

关键是 “ALTER USER some_other_user默认角色连接;” 不包括 “some_role”。

CREATE TABLE some_user.SOME_TABLE(
   Col1 number(10) not null,
   col2 varchar2(100) not null,
   col3 varchar2(100) not null
);

CREATE ROLE SOME_ROLE NOT IDENTIFIED;

GRANT SELECT,  INSERT,  UPDATE, DELETE  ON some_user.SOME_TABLE TO SOME_ROLE;

CREATE USER some_other_user IDENTIFIED BY some_password DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP;

ALTER USER some_other_user QUOTA UNLIMITED ON USERS;

GRANT CONNECT TO some_other_user;
GRANT SOME_ROLE TO some_other_user;

ALTER USER some_other_user DEFAULT ROLE CONNECT ;
--notice in the above the SOME_ROLE role is not listed

GRANT CREATE SESSION TO some_other_user;



假设我的sql加载程序控制文件真的很简单,如下所示。

LOAD DATA
  INFILE 'some_file.dat'
  BADFILE 'some_file.bad'
  DISCARDFILE 'some_file.dsc'
  INSERT
  INTO TABLE some_user.SOME_TABLE
  FIELDS TERMINATED BY '|'
  TRAILING NULLCOLS
 (
      col1 SEQUENCE(1,1),
      col2,
      col3
)



假设some_file.dat如下:

some text|some other text


专家解答

抱歉,我不知道在SQL * Loader命令行/parfile中启用非默认角色的选项。

所以你的选择是:

-创建一个登录触发器,启用您需要的角色
-使您需要的角色成为默认角色
-创建另一个具有此 (并且只有此) 角色的用户
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论