ORACLE(113)

版权声明:本文为博主原创文章,未经博主允许不得转载。

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的状态更改掉.

二.  下面这一条语句搞定,不管用户的状态是什么:

  1. UPDATE USER$ SET ASTATUS=0 WHERE NAME='SCOTT';

原理详解:
 用户的信息都是存在user$这样一个系统表里面的

  1. SQL> select name,ASTATUS,password from user$ where name IN('SYS','SCOTT');
  2. NAME                              ASTATUS PASSWORD
  3. ------------------------------ ---------- ------------------------------
  4. SCOTT                                   1 E65E6AF62B2449CF
  5. SYS                                     0 8A8F025737A9097A
  6. SQL> select username,account_status from dba_users where username in('SYS','SCOTT');
  7. USERNAME                       ACCOUNT_STATUS
  8. ------------------------------ --------------------------------
  9. SYS                            OPEN
  10. SCOTT                          EXPIRED

而用户ASTATUS对应的表为:user_astatus_map

  1. SQL> select * from user_astatus_map;
  2. STATUS# STATUS
  3. ---------- --------------------------------
  4. 0 OPEN
  5. 1 EXPIRED
  6. 2 EXPIRED(GRACE)
  7. 4 LOCKED(TIMED)
  8. 8 LOCKED
  9. 5 EXPIRED & LOCKED(TIMED)
  10. 6 EXPIRED(GRACE) & LOCKED(TIMED)
  11. 9 EXPIRED & LOCKED
  12. 10 EXPIRED(GRACE) & LOCKED
  13. 9 rows selected.

关键是user$表本身是可以更改的, 所以此时我们就可以直接把用户的ASTATUS字段改成0就可以了

  1. SQL> UPDATE USER$ SET ASTATUS=0 WHERE NAME='SCOTT';
  2. 1 row updated.
  3. SQL> COMMIT;
  4. Commit complete.
  5. SQL> alter system flush shared_pool;
  6. System altered.

再来观察结果:

    1. SQL> select name,ASTATUS,password from user$ where name IN('SYS','SCOTT');
    2. NAME                              ASTATUS PASSWORD
    3. ------------------------------ ---------- ------------------------------
    4. SCOTT                                   0 E65E6AF62B2449CF
    5. SYS                                     0 8A8F025737A9097A
    6. SQL> select username,account_status from dba_users where username in('SYS','SCOTT');
    7. USERNAME                       ACCOUNT_STATUS
    8. ------------------------------ --------------------------------
    9. SCOTT                          OPEN
    10. SYS                            OPEN

如何更改ORACLE 用户的 expired状态的更多相关文章

  1. 更改ORACLE 用户的 expired状态

    oracle中, 经常用户的状态会变成locked, expired 等状态, 这种情况下怎么处理呢? 首先, 如果是locked状态还好办, DBA直接执行alter user scott acco ...

  2. 【oracle】解锁oracle用户,unlock

    解除oracle用户的锁定状态,例如oracle数据库建立测试实例时默认建立的scott用户,一开始是处于locked状态的,现在我们需要将其解锁,步骤如下: (1)在cmd中登录sqlplus,例如 ...

  3. Oracle用户的初始化问题

    上一篇博文介绍了关于.bashrc和.bash_profile的相关知识,在oracle的用户设置中能发挥作用. 场景:上周准备学习一下oracle,下载了安装文件后,在linux上新建了一个用户or ...

  4. 【用户状态】详细解读Oracle用户ACCOUNT_STATUS的九种状态

    转至:http://blog.itpub.net/519536/viewspace-672276/ DBA_USERS视图中ACCOUNT_STATUS记录的用户的当前状态,一般情况下在使用的正常用户 ...

  5. 【密码】Oracle用户密码系列

    [密码]Oracle用户密码系列 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识, ...

  6. Oracle用户,权限,角色以及登录管理 scoot 授权

    Oracle用户,权限,角色以及登录管理 1. sys和system用户的区别 system用户只能用normal身份登陆em.除非你对它授予了sysdba的系统权限或者syspoer系统权限. sy ...

  7. 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 ...

  8. Oracle用户权限及死锁

    Oracle用户权限表 oracle数据库中涉及到用户权限的三个表,dba_users,all_users,user_users有什么区别 dba_开头的是查全库所有的,all_开头的是查当前用户可以 ...

  9. ORACLE内存结构:PGA And UGA,ORACLE用户进程、服务器进程

    执行一个SQL语句 执行查询语句的过程: 用户进程执行一个查询语句如select * from emp where empno=7839 用户进程和服务器进程建立连接,把改用户进程的信息存储到PGA的 ...

随机推荐

  1. kvm网络虚拟化管理

    1. Linux Bridge网桥管理 一个网桥上添加多个虚拟机,虚拟机之间是可以相互通信的的,同时虚拟机也都可以通外网. kvm的网桥管理可以通过brctl命令 [root@localhost ~] ...

  2. python中强大的testdata库自动生成测试所需要的数据

    testdata是用于生成测试数据的一个安装包,它不仅提供DictFactory类来生成数据,还提供特定的扩展功能.每个Factory实例均可用于生成用户所需要的特定个数的数据,这将使我们更好地统计分 ...

  3. 关于json的dump和dumps

    首先说明基本功能: dumps是将dict转化成str格式,loads是将str转化成dict格式. dump和load也是类似的功能,只是与文件操作结合起来了. 1.把python的数据,转换为js ...

  4. LeetCode(9)Palindrome Number

    题目: Determine whether an integer is a palindrome. Do this without extra space. Some hints: Could neg ...

  5. HUD--2553 N皇后问题

    Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于给定的N, ...

  6. bash文本查看及处理工具

    文本查看及处理工具:     wc [OPTION] FILE...         -c: 字节数         -l:行数         -w: 单词数             who | w ...

  7. nw.js学习地址

    http://blog.sina.com.cn/s/blog_600e56a60102vqj2.html https://github.com/nwjs/nw.js/wiki/Manifest-For ...

  8. Android ListView子item高度定长固定值无效问题

    在项目开发中遇到一个实际问题:ListView中,打算给每个子item设定一个具体的高度值如128dp,256dp,在子item中把根布局的高度值写死写成定长,但是不管怎么样,高度一直都没变化.开始以 ...

  9. 九度oj 题目1207:质因数的个数

    题目描述: 求正整数N(N>1)的质因数的个数. 相同的质因数需要重复计算.如120=2*2*2*3*5,共有5个质因数. 输入: 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1&l ...

  10. 防火墙iptables介绍

    防火墙: netfilter/iptables是集成在Linux2.4.X版本内核中的包过滤防火墙系统.该架构可以实现数据包过滤,网络地址转换以及数据包管理功能.linux中防火墙分为两部分:netf ...