从11.2开始,如果数据库链建立时用户名密码有误,或者需要更改数据库链验证设置,不需要将数据库链删除后重建了,Oracle提供了ALTER DATABASE LINK的语法。
这只是一个很小的改动,但是使得数据库链的操作方便了许多。没有必要为了输入错误或是更改了用户名密码而重建数据库链了。
SQL> create database link test
2 connect to test
3 identified by password
4 using '172.25.13.229/test08';
数据库链接已创建。
SQL> select * from global_name@test;
select * from global_name@test
*
第 1 行出现错误:
ORA-01017: invalid username/password; logon denied
ORA-02063: 紧接着 line (起自 TEST)
SQL> alter database link test
2 connect to test
3 identified by test;
alter database link test
*
第 1 行出现错误:
ORA-01031: 权限不足
SQL> select * from session_roles;
ROLE
------------------------------
CONNECT
RESOURCE
DBA
SELECT_CATALOG_ROLE
HS_ADMIN_SELECT_ROLE
EXECUTE_CATALOG_ROLE
HS_ADMIN_EXECUTE_ROLE
DELETE_CATALOG_ROLE
EXP_FULL_DATABASE
IMP_FULL_DATABASE
DATAPUMP_EXP_FULL_DATABASE
DATAPUMP_IMP_FULL_DATABASE
GATHER_SYSTEM_STATISTICS
SCHEDULER_ADMIN
WM_ADMIN_ROLE
JAVA_ADMIN
JAVA_DEPLOY
XDBADMIN
XDB_SET_INVOKER
OLAP_XS_ADMIN
OLAP_DBA
已选择21行。
SQL> select * from session_privs
2 where privilege like '%DATABASE LINK%';
PRIVILEGE
----------------------------------------
CREATE DATABASE LINK
CREATE PUBLIC DATABASE LINK
DROP PUBLIC DATABASE LINK
SQL> grant alter database link to yangtk;
授权成功。
SQL> alter database link test
2 connect to test
3 identified by test;
数据库链接已变更。
SQL> select * from global_name@test;
GLOBAL_NAME
--------------------------------------------------------------------------------
TEST08
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
奇怪的是DBA权限中竟然不包括ALTER DATABASE LINK的权限,估计由于是新增的权限,Oracle在给DBA授权的时候漏掉了这个权限。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-615830/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/4227/viewspace-615830/