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

Oracle 12c导入DDL脚本遇ORA-02153错误的解决咨询

解决Oracle 12c数据库链接导入时的ORA-02153错误

这个问题我之前帮团队处理过,核心原因是Oracle 12c对密码哈希的存储格式做了升级,你只替换单个哈希值的方式不符合新格式要求。下面给你几个可行的解决方案:

方案1:改用明文密码导入(快速解决,适合测试环境)

如果是测试环境,不用纠结加密哈希,直接把数据库链接的创建语句改成明文密码形式:

CREATE DATABASE LINK "DBINTERNET2T" CONNECT TO "CATALOG" IDENTIFIED BY 'catalog' USING 'DBINTERNET2T';

⚠️ 注意:生产环境不建议这么做,因为明文密码会留在脚本里,存在安全风险。

方案2:使用12c兼容的加密密码字符串(生产环境推荐)

Oracle 12c及以后,IDENTIFIED BY VALUES需要同时包含spare4和password字段的哈希值,格式为S:<spare4值>;H:<password值>。你可以按以下步骤操作:

  1. 在目标数据库中,用SYSDBA权限执行以下SQL,获取正确的加密字符串:
    SELECT 'IDENTIFIED BY VALUES '''||spare4||';'||password||'''' 
    FROM sys.user$ 
    WHERE name='CATALOG';
    
  2. 把查询结果替换到你的CREATE语句中,比如查询结果是IDENTIFIED BY VALUES 'S:ABC123DEF;H:XYZ789',那么最终语句是:
    CREATE DATABASE LINK "DBINTERNET2T" CONNECT TO "CATALOG" IDENTIFIED BY VALUES 'S:ABC123DEF;H:XYZ789' USING 'DBINTERNET2T';
    

这样就能完全符合Oracle 12c的密码验证要求了。

方案3:重新导出DDL时调整SQL Developer设置

如果以后还要导出类似的脚本,可以在SQL Developer里调整导出选项,从根源避免这个问题:

  • 打开导出DDL的向导,找到Database Links相关设置
  • 选择「Use plaintext passwords」(如果允许的话),导出的脚本直接用明文密码,导入时无需处理哈希
  • 或者选择「Include full password hashes」选项,确保导出的哈希是12c兼容的组合格式

额外注意事项

  • 确保执行CREATE DATABASE LINK的用户拥有CREATE DATABASE LINK(或CREATE PUBLIC DATABASE LINK)的权限
  • 目标库的CATALOG用户必须已经存在,且密码和你生成哈希时的密码一致
  • 如果还是报错,可以检查目标库的remote_login_passwordfile参数是否设置为EXCLUSIVE或SHARED,不过这个参数一般不影响数据库链接的密码验证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:14:14