第一部分
背景
这段时间一直在忙某系统IT基础架构的整合,我负责进行数据库整合,要把一系统迁移集中到另外小机数据库中。环境描述如下:
源数据库:Oracle10.2.0.2 for sap,字符集是UTF8,操作系统是windows2003
目标数据库:Oracle10.2.0.3 RAC,字符集是ZHS16GBK,操作系统是HP-UX11.23
问题描述
源数据库中建立的几个用户权限比较大,都是DBA角色,在迁移到目标数据库中客户要求把权限设成最小权限,最多只给connect和resource角色。用imp在导入后检查导入日志发现,在导入视图时权限不足。
问题解决
以前在8i和9i不错遇到导入视图时权限不足,后来查找connect和resource角色包含的权限,发现没有create view基本权限,而在8i和9i中却包含了create view权限,可能不同版本角色包含的权限也不一定相同。于是再授予create view权限,再次导入视图创建成功。
第二部分
背景
这段时间一直在忙某系统IT基础架构的整合,我负责进行数据库整合,要把一系统迁移集中到另外小机数据库中。环境描述如下:
源数据库:Oracle10.2.0.2 for sap,字符集是UTF8,操作系统是windows2003
目标数据库:Oracle10.2.0.3 RAC,字符集是ZHS16GBK,操作系统是HP-UX11.23
问题描述
源数据库中建立的几个用户权限比较大,都是DBA角色,在迁移到目标数据库中客户要求把权限设成最小权限,最多只给connect和resource角色。用imp在导入后检查导入日志发现,在导入触发器时权限不足。
问题解决
后来检查触发器,发现触发器是跨用户建的,也就是在另外一个用户的表上建立了触发器,于是尝试授予select any table权限,但问题依旧。经过查阅相关资料发现:
使用触发器所需的权限
必须具有CREATE TRIGGER系统权限才能在自己拥有的对象上创建触发器。如果对象由另一名用户拥有,就需要那一名用户授予您对该对象的ALTER权限。还有一种办法,拥有权限的用户可以授予您ALTER ANY TABLE或CREATE ANY TRIGGER权限。
虽然您有自己的模式级组件上的定义者权限,但当调用另一个用户拥有的模式级组件时必须执行