今天在做数据接口的时候发现了DBLINK ORA-01031的一些问题,整个场景回顾如下:一
场景一:
1、首先默认用户是没有创建DBLink的权限的,因此一般人都使用SYS创建一个PUblic 的dblink供所有用户使用。
>conn / as sysdba
>CREATE database link crmdb connect to "crm" identified by "crm" USING 'crm';
2、而创建DBLINK视图的话,则使用用户test的权限创建,这样如果直接运行如下则会报权限错误,
>conn test/test
>CREATE VIEW viewdblink as select * from tab_a@crmdb;
ORA-01031:权限不足
虽然用户可以使用DBLINK进行数据查询,如下
> select * from tab_a@crmdb;
但是无法创建在视图中使用该dblink,要解决该问题,有2中方法:
(1)给用户赋予create any view 权限
grant create database link to test;
grant create any view to test;
(2)用sys用户来建立该视图
>CREATE VIEW test.viewdblink as select * from tab_a@crmdb;
场景二:
由于权限问题,规定该dblink只能被该用户使用,而其它用户则不能使用和查看,注意以下几者的区别:
grant create database link to test;
grant create database link to user ; --只有user用户能使用的dblink
grant create public database link to user ;--所有用户都可以使用的dblink
grant drop public database link to user; --删除dblink的权限