对于其他用户,如何隐藏表的Oracle对象所有者

对于其他用户,如何隐藏表的Oracle对象所有者,oracle,oracle11g,permissions,oracle10g,database-administration,Oracle,Oracle11g,Permissions,Oracle10g,Database Administration,DBA帐户“X”拥有一个原始“A”表 ,并向第三方帐户“Y”提供插入“a”表中的触发临时“B”表。 因为您不能给“Y”表“A”的DML权限 当“B”表的所有者被创建为“X”时 “B”的所有者如何才能对“Y”隐藏“X” 如果我不能隐藏, “A”表的所有者是“X”, “B”表的所有者是“Y”, 不将“A”表的DML权限授予“Y”, 仅为“Y”赋予“B”表的DML权限, 我想在“B”表上创建一个插入触发器。在表格中插入“A”。 也就是说,在任何情况下,“Y”都不应该知道“X”的名称。有可能吗?在Y.B

DBA帐户“X”拥有一个原始“A”表 ,并向第三方帐户“Y”提供插入“a”表中的触发临时“B”表。 因为您不能给“Y”表“A”的DML权限 当“B”表的所有者被创建为“X”时 “B”的所有者如何才能对“Y”隐藏“X”

如果我不能隐藏, “A”表的所有者是“X”, “B”表的所有者是“Y”, 不将“A”表的DML权限授予“Y”, 仅为“Y”赋予“B”表的DML权限, 我想在“B”表上创建一个插入触发器。在表格中插入“A”。
也就是说,在任何情况下,“Y”都不应该知道“X”的名称。有可能吗?

在Y.B上创建一个触发器
,但该触发器归
X
所有。这样,只有触发器才能执行
插入
,而用户
Y
对其他表没有其他访问权限

此代码创建触发器:

create or replace trigger x.b_trg
after insert on y.b
for each row
begin
    insert into x.a values(:new.some_column);
end;
/
下面是一个示例,用户
Y
可以插入
Y.B
(然后复制到
X.A
),但不能直接插入
X.A

SQL> insert into y.b values(1);

1 row created.

SQL> insert into x.a values(2);
insert into x.a values(2)
              *
ERROR at line 1:
ORA-00942: table or view does not exist
上述解决方案阻止访问,但不能完全“隐藏”它。在Oracle中隐藏代码是很困难的。我们可以对代码进行模糊处理,但这种模糊处理很容易通过在线实用程序逆转。还有其他方法可以使用数据字典找出依赖关系