|
|
1
2
可能一次授予组权限,以后再授予用户成员权限,而不是直接表权限。我知道答案很简单,但我给人的印象是你知道你在做什么,而且能搞清楚细节。 |
|
|
2
2
基于授权消除失效: 创建xxx_readonly角色,其中xxx是一些适当有意义的值,并授予该角色对所有适当表的select访问权,并在用户需要时向用户添加该角色。 基于触发器创建消除ddl锁: 上次我真正检查时,触发器是解释代码,而过程和包是编译代码。因此,在触发器中执行复杂的逻辑通常是不受欢迎的。可以在触发器中调用过程或包方法,并且将触发器逻辑封装在过程/包中可以减轻或消除对基表的ddl锁。 |
|
|
3
1
我可以看到添加触发器需要一个锁,或者使游标失效,或者等待所有打开的游标关闭,至少如果游标可能用于需要执行新触发器的操作。 很难理解为什么授予读权限会有类似的需求,可能只是实现的副作用。mjb的回答似乎是一个很好的解决方法(在很多情况下,这是一个很好的实践,简化了访问权限的管理)。 |
|
|
4
1
|
|
|
5
0
mjb的groups是解决赠款问题的最佳方法,对于“触发器”问题,我建议将业务逻辑分离,以便它执行神奇的“触发器”所能执行的任何操作,特别是在2000万行以上的表上。 |
|
6
0
1)我的问题是授予对表的读取访问权,为什么您直接授予对表的读取,而不创建角色,授予对表的读取,然后授予(或删除)用户角色?这将消除授予时的锁定表问题。 2)Oracle将在创建触发器时锁定表,因为触发器在安装时可以更改表。所有ddl都将锁定表,创建一个事务,以确切地知道何时可以触发(或其他更改)。我想这对助学金来说也是事实。 如果您不断地从表中添加/删除触发器,我将从触发器中删除您正在更改的代码,并将其放入一个单独的pl/sql过程中。然后根据需要更新程序。这将导致触发器无效(并需要重新编译),这是自动完成的。 我确信有一种方法可以使用oracle数据字典中的v$视图,找出针对给定表打开的游标。 |