我们有一个 Oracle 11g 模式,我们的应用程序使用它来选择、插入和更新,但是我们的一位客户要求我们提供对应用程序拥有的相同基表和视图的只读访问。
除了将所有应用程序拥有的表同义到一个新帐户(或公开同义词)之外,我将如何去做呢?
任何有关我应该查看的方法或 Oracle 功能的帮助或指示将不胜感激,谢谢!
我们有一个 Oracle 11g 模式,我们的应用程序使用它来选择、插入和更新,但是我们的一位客户要求我们提供对应用程序拥有的相同基表和视图的只读访问。
除了将所有应用程序拥有的表同义到一个新帐户(或公开同义词)之外,我将如何去做呢?
任何有关我应该查看的方法或 Oracle 功能的帮助或指示将不胜感激,谢谢!
您需要一个单独的帐户来授予只读访问权限。我建议添加一个您也授予只读访问权限的角色 - 如果将来有更多用户需要此访问权限,您可以重新使用该角色。
完成后,新帐户将需要在表名称前加上模式名称的前缀以选择数据。或者,您可以为每个对象创建公共同义词(您可以在上面的代码中为每个循环添加另一个 EXECUTE IMMEDIATE)。或者你可以让用户运行命令
登录时。您还可以在新帐户中创建一个自动执行此操作的登录触发器。这将导致
<<schema name>>
被隐式添加为模式前缀。它不影响会话的权限——用户仍然具有只读权限,默认模式名称刚刚更改。我创建了没有配额的 new_customer_account 作为 sysdba:
application_user 授予相关视图(和/或表)的选择权限:
之后,new_customer_account 创建新的同义词:
我很确定您必须创建一个新帐户,并且只向该用户授予选择权限。