如何更改ORACLE 用户的 expired状态

版权声明:本文为博主原创文章,未经博主允许不得转载。
oracle中, 经常用户的状态会变成locked, expired 等状态, 这种情况下怎么处理呢?
首先, 如果是locked状态还好办, DBA直接执行alter user scott account unlock 就可以了.
但是如果变成expired状态, Oracle本身是不提供解锁的语句的, 因为账户过期,必须要用户更改密码, 账户才能重新使用. 但有些时候, 因为各种原因, 我们并不知道原密码的明文是什么,这时候就很麻烦了, 经研究发现,有两种方法可以实现:
as sysdba
- SQL>select password from dba_users where username='SCOTT';
- password
- ------------------------------
- E65E6AF62B2449CF
- SQL>alter user SCOTT identified by values 'E65E6AF62B2449CF';
这种情况下,虽然我们不知道原密码是什么,但可以用它的密文来更改密码,这样,在不知道原密码的情况下,既保持了密码不改变, 又可以把expired的状态更改掉.
二. 下面这一条语句搞定,不管用户的状态是什么:
- UPDATE USER$ SET ASTATUS=0 WHERE NAME='SCOTT';
原理详解:
用户的信息都是存在user$这样一个系统表里面的
- SQL> select name,ASTATUS,password from user$ where name IN('SYS','SCOTT');
- NAME ASTATUS PASSWORD
- ------------------------------ ---------- ------------------------------
- SCOTT 1 E65E6AF62B2449CF
- SYS 0 8A8F025737A9097A
- SQL> select username,account_status from dba_users where username in('SYS','SCOTT');
- USERNAME ACCOUNT_STATUS
- ------------------------------ --------------------------------
- SYS OPEN
- SCOTT EXPIRED
而用户ASTATUS对应的表为:user_astatus_map
- SQL> select * from user_astatus_map;
- STATUS# STATUS
- ---------- --------------------------------
- 0 OPEN
- 1 EXPIRED
- 2 EXPIRED(GRACE)
- 4 LOCKED(TIMED)
- 8 LOCKED
- 5 EXPIRED & LOCKED(TIMED)
- 6 EXPIRED(GRACE) & LOCKED(TIMED)
- 9 EXPIRED & LOCKED
- 10 EXPIRED(GRACE) & LOCKED
- 9 rows selected.
关键是user$表本身是可以更改的, 所以此时我们就可以直接把用户的ASTATUS字段改成0就可以了
- SQL> UPDATE USER$ SET ASTATUS=0 WHERE NAME='SCOTT';
- 1 row updated.
- SQL> COMMIT;
- Commit complete.
- SQL> alter system flush shared_pool;
- System altered.
再来观察结果:
- SQL> select name,ASTATUS,password from user$ where name IN('SYS','SCOTT');
- NAME ASTATUS PASSWORD
- ------------------------------ ---------- ------------------------------
- SCOTT 0 E65E6AF62B2449CF
- SYS 0 8A8F025737A9097A
- SQL> select username,account_status from dba_users where username in('SYS','SCOTT');
- USERNAME ACCOUNT_STATUS
- ------------------------------ --------------------------------
- SCOTT OPEN
- SYS OPEN
如何更改ORACLE 用户的 expired状态的更多相关文章
- 更改ORACLE 用户的 expired状态
oracle中, 经常用户的状态会变成locked, expired 等状态, 这种情况下怎么处理呢? 首先, 如果是locked状态还好办, DBA直接执行alter user scott acco ...
- 【oracle】解锁oracle用户,unlock
解除oracle用户的锁定状态,例如oracle数据库建立测试实例时默认建立的scott用户,一开始是处于locked状态的,现在我们需要将其解锁,步骤如下: (1)在cmd中登录sqlplus,例如 ...
- Oracle用户的初始化问题
上一篇博文介绍了关于.bashrc和.bash_profile的相关知识,在oracle的用户设置中能发挥作用. 场景:上周准备学习一下oracle,下载了安装文件后,在linux上新建了一个用户or ...
- 【用户状态】详细解读Oracle用户ACCOUNT_STATUS的九种状态
转至:http://blog.itpub.net/519536/viewspace-672276/ DBA_USERS视图中ACCOUNT_STATUS记录的用户的当前状态,一般情况下在使用的正常用户 ...
- 【密码】Oracle用户密码系列
[密码]Oracle用户密码系列 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...
- Oracle用户,权限,角色以及登录管理 scoot 授权
Oracle用户,权限,角色以及登录管理 1. sys和system用户的区别 system用户只能用normal身份登陆em.除非你对它授予了sysdba的系统权限或者syspoer系统权限. sy ...
- window、linux安装jdk,excel 导入oracle,WebService,window 端口查看,svn服务安装,oracle用户解锁
内存泄露分析插件http://download.eclipse.org/mat/1.3/update-site/birt插件http://download.eclipse.org//birt/upda ...
- Oracle用户权限及死锁
Oracle用户权限表 oracle数据库中涉及到用户权限的三个表,dba_users,all_users,user_users有什么区别 dba_开头的是查全库所有的,all_开头的是查当前用户可以 ...
- ORACLE内存结构:PGA And UGA,ORACLE用户进程、服务器进程
执行一个SQL语句 执行查询语句的过程: 用户进程执行一个查询语句如select * from emp where empno=7839 用户进程和服务器进程建立连接,把改用户进程的信息存储到PGA的 ...
随机推荐
- [LUOGU] P4767 [IOI2000]邮局
https://www.luogu.org/problemnew/show/P4767 四边形不等式好题! 可以设f[i][j]表示前i个村庄,建了j个邮局的最小代价. 转移:f[i][j]=min{ ...
- Spring Boot + Mybatis + Druid 动态切换多数据源
在大型应用程序中,配置主从数据库并使用读写分离是常见的设计模式. 在Spring应用程序中,要实现读写分离,最好不要对现有代码进行改动,而是在底层透明地支持. 这样,就需要我们再一个项目中,配置两个, ...
- linux centeros 通过 innoback 工具备份mysql 5.7 全库并自动压缩zip上传到备份服务器的脚本,附自动清理过期备份
innoback 安装见连接:https://blog.csdn.net/fanren224/article/details/79693863 脚本解析后续将更新 181024:更新添加定期清理备份的 ...
- 将find过滤添加到数组
array=($(find . -name "*.txt"))for i in "${array[@]}"; do echo $i; done
- 绑定用户id,用户权限认证
上面这个就是为了把user_id与文章关联起来 文章需要跟用户关联,所以要去文章模型中加以关联 这样就可以直接在模板中进行关联处理 权限认证 首先要创建policy php artisan make: ...
- I2C驱动框架(三)
参考:I2C子系统之platform_device初始化——smdk2440_machine_init() I2C驱动框架还应用了另一种总线-设备-驱动模型,平台设备总线platform_bus_ty ...
- PAT Basic 1047
1047 编程团体赛 编程团体赛的规则为:每个参赛队由若干队员组成:所有队员独立比赛:参赛队的成绩为所有队员的成绩和:成绩最高的队获胜. 现给定所有队员的比赛成绩,请你编写程序找出冠军队. 输入格式: ...
- DDoS 攻击与防御:从原理到实践(上)
欢迎访问网易云社区,了解更多网易技术产品运营经验. 可怕的 DDoS 出于打击报复.敲诈勒索.政治需要等各种原因,加上攻击成本越来越低.效果特别明显等趋势,DDoS 攻击已经演变成全球性的网络安全威胁 ...
- Charles-安装和配置
一. 安装.破解charles工具 1. 安装压缩包中的charles_setup.exe,安装完成后先不启动charles. 2. 在安装文件中找到crack文件,将文件中的charles.jar拷 ...
- numpy split()
numpy.split(ary, indices_or_sections, axis=0)[source] Split an array into multiple sub-arrays. 将一个ar ...