DB Link是连接本地数据库与远程源数据库的关键通道,需先配置源数据库与目标数据库的网络连通性(如tnsnames.ora中配置服务名、listener.ora中开启监听),再创建DB Link。
CREATE DATABASE LINK link_name
CONNECT TO remote_user IDENTIFIED BY password
USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=source_host)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=source_service_name)))';
CREATE PUBLIC DATABASE LINK link_name
CONNECT TO remote_user IDENTIFIED BY password
USING 'remote_database';
通过查询远程表的记录数确认连接是否正常:
SELECT COUNT(1) FROM your_source_db.your_biz_table@link_name;
若返回结果与远程表实际记录数一致,则说明DB Link创建成功。
数据备份的核心是利用expdp(数据泵导出工具)结合DB Link,将远程源数据库的数据导出至本地目录(或直接导入本地数据库)。常见场景包括备份远程表/用户数据、不落盘恢复(直接导入本地)。
在本地数据库执行expdp命令,通过network_link参数指定DB Link,将远程数据导出至本地目录:
expdp system/LocalPassword@127.0.0.1/LocalSid
DIRECTORY=Localdir
LOGFILE=expdpFromRemote.txt
NETWORK_LINK=LinkToSource
SCHEMAS=SchemasInSource
DUMPFILE=exp01.dmp;
DIRECTORY:本地存储导出日志的目录(需提前创建并授权);LOGFILE:导出日志文件名;NETWORK_LINK:指向远程源数据库的DB Link;SCHEMAS:需备份的远程用户(模式);DUMPFILE:导出的数据文件(可选,若省略则默认生成.dmp文件)。若需备份远程用户的完整数据(包括表、索引、约束等),可直接通过expdp结合network_link导出,后续通过impdp导入本地:
expdp scott/tiger@127.0.0.1/LocalSid
DIRECTORY=Localdir
LOGFILE=full_exp.log
NETWORK_LINK=LinkToSource
FULL=Y; -- 备份整个数据库(需有exp_full_database权限)
此方式适用于需要完整恢复远程数据库的场景。
数据恢复的目标是将备份的远程数据导入至本地数据库,支持从本地目录导入(常规恢复)和**直接从远程导入(不落盘)**两种方式。
若远程数据已通过expdp导出至本地目录,可通过impdp从本地目录导入:
impdp system/LocalPassword@127.0.0.1/LocalSid
DIRECTORY=Localdir
LOGFILE=impdpToLocal.txt
DUMPFILE=exp01.dmp
SCHEMAS=SchemasInSource;
若无需将远程数据保存为本地文件,可直接通过impdp结合network_link将远程数据导入本地:
impdp system/LocalPassword@127.0.0.1/LocalSid
DIRECTORY=Localdir
LOGFILE=impdpFromRemote.txt
NETWORK_LINK=LinkToSource
SCHEMAS=SchemasInSource
REMAP_SCHEMA=SchemasInSource:SchemasInLocal -- 映射远程用户到本地用户(需提前创建本地用户)
REMAP_TABLESPACE=SchemasInSource:SchemasInLocal -- 映射远程表空间到本地表空间(需提前创建本地表空间)
EXCLUDE=STATISTICS; -- 排除统计信息,加快导入速度
REMAP_SCHEMA:将远程用户(如SchemasInSource)映射到本地用户(如SchemasInLocal),需确保本地用户已存在;REMAP_TABLESPACE:将远程表空间(如SchemasInSource)映射到本地表空间(如SchemasInLocal),需提前创建本地表空间;EXCLUDE=STATISTICS:排除统计信息(如表的分析数据),减少导入时间(可选)。CREATE USER local_user IDENTIFIED BY password DEFAULT TABLESPACE local_tablespace;)和表空间(CREATE TABLESPACE local_tablespace DATAFILE '/path/to/datafile.dbf' SIZE 1024M AUTOEXTEND ON;);imp_full_database权限(GRANT imp_full_database TO local_user;),impdp会自动处理用户创建和授权。权限配置:
exp_full_database用于导出、SELECT_CATALOG_ROLE用于访问数据字典);imp_full_database用于导入、CREATE USER/ALTER USER用于创建用户)。网络与连通性:
tnsnames.ora中的服务名配置正确,listener.ora中已开启对应端口的监听;SELECT COUNT(1) FROM remote_table@link_name;)后再执行备份/恢复操作。数据一致性:
LOCK TABLE remote_table IN SHARE MODE;)或在低峰期执行,避免数据修改导致备份不一致;日志与监控:
expdpFromRemote.txt、impdpFromRemote.txt),便于排查问题;V$SESSION_LONGOPS视图查看任务完成百分比)。通过以上流程,可利用DB Link实现远程数据的备份与恢复,满足数据安全与业务连续性的需求。实际操作中需根据环境调整参数(如路径、用户名、表空间),并在测试环境中验证步骤的正确性。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。