首页 > 数据库 > Oracle > 工作记录2015.3.23
工作非常简单,把某一台数据库上的一个用户下的所有对象,在另一台数据库上,让一个用户只有查询的权限。
说白了,就是把某一台数据库上的业务用户下的所有对象,以只查询的方式开放给另一个数据库,不想让其他人操作,或者知道业务数据库的信息。可以找一台空间的,性能比较低机器做前置机。让那些只有查询权限的用户来访问这台前置的机器。
实现的步骤如下:
业务数据库我们命名为A,查询前置机命名为B.
1.在B上创建dblink
create public database link dblink名字
connect to 用户名 identified by 密码
using '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ip地址)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 实例服务名)
)
)';
用户名:业务数据库A中的业务用户名。
using的部分其实就是我们平时连接业务数据库A的tnsname文件中的信息。
2. 在B上创建一个表空间。
CREATE TABLESPACE 表空间名 DATAFILE '/app/oracle/oradata/DATA01.dbf' SIZE 1G EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
3.在B上创建用户
create user 用户名 default tablespace LISDATA identified by 密码;
grant connect to 用户名;
grant create session to 用户名;
GRANT CREATE SYNONYM TO 用户名;
4.在A上生产一个创建同义词的脚本
select 'create or replace synonym '||synonym_name ||' for A上的业务名.'||synonym_name||'@dblink名字;' from dba_synonyms where owner='A上的业务名';
把生产的脚本在B上执行。
ok
到此我们就是实现了把A数据库下用户的数据对象,以只读的方式,开放给了B数据库。这样我们只告诉业务人员链接B数据库就可以了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12798004/viewspace-1470605/ ,如需转载,请注明出处,否则将追究法律责任。