修改Oracle数据库密码和相关报错处理

修改Oracle数据库密码和相关报错处理

  • 一般的Oracle数据库修改密码只需执行一条SQL就行
--NEWPWD为想要修改的密码
ALTER USER USERNAME IDENTIFIED BY "NEWPWD";
--或者,OLDPWD为旧密码
ALTER USER USERNAME IDENTIFIED BY "NEWPWD" REPLACE "OLDPWD";
  • 修改密码SQL报错及处理方法
    • 在处理报错之前我们先熟悉Oracle数据库密码的profile
      执行下面这段代码:
SELECT * FROM DBA_PROFILES WHERE PROFILE = 'DEFAULT' AND RESOURCE_TYPE = 'PASSWORD';

得到结果:
在这里插入图片描述
这里面有很多参数,参数代表的意思分别为:
FAILED_LOGIN_ATTEMPTS -> 密码输入错误数次,达到改次数则锁定账户
PASSWORD_LIFE_TIME -> 密码有效期
PASSWORD_REUSE_TIME -> 限制N天内密码不能设置和旧密码一样
PASSWORD_REUSE_MAX -> 想要在PASSWORD_REUSE_TIME限制的时间内使用回旧密码,至少要修改密码的次数
PASSWORD_VERIFY_FUNCTION -> 密码校验规则
PASSWORD_LOCK_TIME -> 账户被锁之后,自动解锁的时间
PASSWORD_GRACE_TIME -> 如果PASSWORD_LIFE_TIME设置的期限快到,提前N天提示用户(一般为:ORA-28002: the password will expire within N days)

注:以上参数的值均为一个整数或者UNLIMITED(无限制)

  • 报错:
    1. ORA-28002: the password will expire within N days
    2. ORA-28007: 无法重新使用口令
    3. ORA-20001:等
  • 处理方法
    1.先确定账户所用的profile
--USERNAME为用户名称,一般为DEFAULT
SELECT USERNAME,PROFILE FROM DBA_USERS WHERE USERNAME = 'USERNAME'; 

2.得到profile之后再查看对应的配置

--注意如果步骤一查出来的值不为DEFAULT,需要替换。
--记得记录下相关参数的值, 方便修改密码后还原配置
SELECT * FROM DBA_PROFILES WHERE PROFILE ='DEFAULT' AND RESOURCE_TYPE = 'PASSWORD';

3.处理方法

--a先将PASSWORD_LIFE_TIME(密码有效期)这个参数的值改成UNLIMITED(无限制)
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
--b去掉密码校验规则
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL;
--c不限制密码重复使用
ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_TIME UNLIMITED;
ALTER PROFILE DEFAULT LIMIT PASSWORD_REUSE_MAX UNLIMITED;
--一般报错1无需执行bc,本人比较懒,不想考虑太多, 每次全部执行一边, 肯定能修改密码了
--再执行修改密码的语句
--NEWPWD为想要修改的密码
ALTER USER USERNAME IDENTIFIED BY "NEWPWD";
--或者,OLDPWD为旧密码
ALTER USER USERNAME IDENTIFIED BY "NEWPWD" REPLACE "OLDPWD";

根据提供的引用内容,切换到Oracle数据库报错Error querying database. Cause: java.lang.NullPointerException,这种错误通常是由于连接Oracle数据库出现问题导致的。以下是可能导致此错误的一些原因和解决方法: 1. 检查连接Oracle数据库的URL、用户名和密码是否正确,可以尝试重新输入或更改它们。 2. 检查Oracle数据库是否已启动,如果没有启动,启动它。 3. 检查Oracle数据库的防火墙设置,确保允许从应用程序服务器访问Oracle数据库。 4. 检查应用程序服务器上的Oracle JDBC驱动程序版本是否与Oracle数据库版本兼容,如果不兼容,升级驱动程序版本。 5. 检查应用程序服务器上的JDK版本是否与Oracle JDBC驱动程序版本兼容,如果不兼容,升级JDK版本。 6. 检查应用程序服务器上的数据库连接池配置是否正确,可以尝试重新配置连接池。 7. 检查应用程序服务器上的防火墙设置,确保允许从应用程序服务器访问Oracle数据库。 8. 检查应用程序服务器上的Oracle JDBC驱动程序是否正确安装,如果没有安装,安装它。 以下是一个可能的解决方案: ```java // 导入Oracle JDBC驱动程序 import oracle.jdbc.driver.OracleDriver; // 连接Oracle数据库 Connection conn = null; try { // 注册Oracle JDBC驱动程序 DriverManager.registerDriver(new OracleDriver()); // 连接Oracle数据库 conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL", "username", "password"); } catch (SQLException e) { e.printStackTrace(); } // 执行SQL查询 Statement stmt = null; ResultSet rs = null; try { stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT * FROM table_name"); while (rs.next()) { // 处理查询结果 } } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭数据库连接 try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值