在使用Oracle过程中,因为经常需要考虑数据库的同步备份,以及数据安全的问题。使用oracle自带的数据库备份方法比较麻烦而且不灵活,通过dblink的方法,可以比较简单的进行oracle不通机器不通表空间的数据库操作。
dblink直接的意思就是在数据库表空间中建立一个连接到其他机器的表空间。操作过程分下面几个步骤。(linux下为例)。
1. 建立其他表空间的别名信息。
需要在tnsname.ora文件中将其他服务器的信息复别名,例如:
192.168.0.81 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.81)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
创建了一个别名为standby别名的远程oracle。
创建完以后可以通过tnsping工具来测试别名是否生效
oracle$tnsping 192.168.0.81
........
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.81)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))
OK (0 msec)
表示连接成功。
2. 在本地表空间中建立远程机器的dblink
用需要同步的数据库登录名登录,并执行sql语句创建远程dblink
create database link {linkname} connect to {user} identified by {password} using '192.168.0.81';
通过查询远程数据来验证dblink是否创建成功。
select * from userinfo@linkname;
3. 同步数据库数据
insert into hdcdrinfo select * from hdcdrinfo@linkname
where logtime between TO_DATE('2016-06-07 00:00:00','yyyy-mm-dd hh24:mi:ss') and TO_DATE('2016-06-08 14:06:38','yyyy-mm-dd hh24:mi:ss')
order by logtime desc;
将指定时间段的远程数据同步到本地数据库中,完成同步。
并且可以通过job任务来定时同步远程数据,对远程库进行操作。