生产库revoke和grant影响

昨天看了三少的帖子,关于在生产库进行用户系统或者对象权限的重新授予的风险,今天在群里讨论了下:

结论主要有一下:

重新授予权限将导致 SHARE POOL里的SQL重新解析,也就说重新授于对象权限,将导致缓冲里的涉及到该对象的SQL失效,其实这点很容易里理解,明白SQL执行的过程就能理解,判断:

根据Oracle官方的说法,SQL语句的执行有以下步骤:

[1] Syntactic                - 语法检查l[2] Semantic                 - 确认所有对象都是存在并且可以访问 

[3] View Merging             - 进行查询重写优化[4] Statement Transformation – 将复杂的查询分

[5] Optimization             - 确定访问方式,选择优化策略

[6] QEP Generation           - 形成执行计划[7] QEP Execution            - 执行

可见在第2步时就要重新确认,

具体可以参照白老大的:http://www.oraclefans.cn/forum/showblog.jsp?rootid=5597文章

所以结论就是:

1:如果是系统权限,对运行影响不大

2:如果是对象权限,会导致使用该对象的所有sql重新解析,产生严重的latch free等待,系统越繁忙影响越大.

所以操作时,尽量在事务比较少的时候做,解析主要影响的就是CPU。



评论暂缺