You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle同义词与Database Link差异及后续处理方案咨询

数据库操作疑问解答

我执行了以下操作:先创建Database Link,再为所需表创建Synonym,随后从生产数据库将表同步至开发数据库,具体代码如下:

CREATE DATABASE LINK my_db_link CONNECT TO user IDENTIFIED BY passwd USING 'database_name';
CREATE SYNONYM my_table FOR my_table@my_db_link;
SELECT * FROM my_table;
create table my_table as (select * from my_table@my_db_link);

技术疑问解答

1. Synonym与Database Link的区别是什么?

  • Database Link(数据库链接):是跨数据库的连接通道,定义了当前库到远程库的连接路径、认证账号密码和目标库标识,是访问远程数据库对象的基础,没有它就无法直接连接并访问远程库的内容。
  • Synonym(同义词):是远程对象(如my_table@my_db_link)的本地别名,作用是简化SQL书写,不用每次都带@my_db_link后缀。它本身没有连接能力,必须依赖对应的Database Link才能访问到远程对象。

2. 因每30天需重置密码,我常遗忘二者存在,导致数据库被锁定,需联系DBA解锁。请问应同时删除二者、仅删除Synonym还是仅删除Database Link?

优先删除Database Link,理由如下:

  • 账号锁定的根源是Database Link中保存的过期密码,当有操作(比如误执行的SQL、后台定时任务)调用这个链接时,会用旧密码尝试登录远程库,多次失败后触发账号锁定。
  • 仅删除Synonym的话,Database Link依然存在,还是会被其他操作触发密码验证错误,导致锁定问题。
  • 如果短期内不需要再同步数据,也可以同时删除二者,彻底消除风险;之后需要用的时候再重新创建即可。

3. 创建表后是否仍需保留它们?我每年仅重建一次该表,创建后已有足够数据可用。

不需要保留,原因:

  • 你已经通过create table as select将远程表的数据完整同步到本地库,本地表是独立的,后续使用完全不依赖远程库的连接。
  • 保留这两个对象不仅会有密码过期导致账号锁定的风险,还会留下无用的数据库对象,增加不必要的维护成本。
  • 明年需要重建表时,再重新创建Database Link和同义词即可,操作简单,没必要长期留存。

内容的提问来源于stack exchange,提问作者noobprogrammer1987

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:33:22