zoukankan      html  css  js  c++  java
  • ORA-01017

    ORA-01017

    1 错误信息

    不管是在sqlplus 命令下,还是在程序连接都有可能会遇到这个问题, 特别是在数据库升级后, 或者是老程序连接新安装的Oracle12C 及以后版本的数据库。基本都会遇到这个问题。

    ORA-01017:invalid username/password; logon denied
    

    2 分析

     

    2.1 sqlplus环境登录

    oracle 12C 以后,数据库分为container 和 pdb 两个层面。在Container 里建用户与pdb 中建用户有所区别。 在Container 中建用户,需要以 'C##' 开头。如下:

    SQL> create user test identified by test;
    create user test identified by test
                *
    ERROR at line 1:
    ORA-65096: invalid common user or role name
    
    
    SQL> create user C##test identified by test;
    
    User created.
    

    而在pdb 中建用户则不需要:

    SQL> alter session set container=amscenter;
    
    Session altered.
    
    SQL> create user test identified by test;
    
    User created.
    
    

    对于这种,我们首先要确认的是,我们想要登录的是cdb,还是pdb。

    • 登录cdb

      登录cdb,则在用户名前加上 C##:

      SQL> grant connect,resource to c##test;
      
      Grant succeeded.
      
      SQL> conn c##test/test;
      Connected.
      
    • 登录pdb

      登录pdb,有两种方法,一种是使用tnsname,一种是先把当前环境切换到 pdb :

      -- 通过tns 可以正常登录
      SQL> conn scott/tiger@pdbboss
      Connected.
      -- 或者
      sqlplus test/test@amscenter
      

    2.2 密码加密解析错误

    Oracle 的密码加密方式,在不同的数据库版本中,是不尽相同的。 12C 以后的加密方式,无法识别过低版本驱动提供的加密后的密码。

    针对这种情况,需要在数据库层面做如下操作:

    • 第一步:修改sqlnet.ora,加入以下两个参数:

      SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
      SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
      
      - 第二步:修改用户密码,生成支持低版本密码加密格式。
        #+BEGIN_EXAMPLE
      alter user &username identified by &password;
      

    Author: halberd.lee

    Created: 2020-08-14 Fri 14:18

    Validate

  • 相关阅读:
    关于React的入门级安装和最浅显解释
    Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传
    AWS S3 CLI的安装和配置
    用Node完成AWS S3的Upload流程之全世界最简版
    在Web应用中接入微信支付的流程之极简清晰版
    storm metrics
    hadoop 2.2.0 centos 6.4 x64 编译
    如何打造核心竞争力(经验总结)
    mysql event scheduler机制 与 动态表名创建
    hadoop 2.2.0 安装
  • 原文地址:https://www.cnblogs.com/halberd-lee/p/13086910.html
Copyright © 2011-2022 走看看