Oracle rdbms Brush password
Restore database user history account password
1. 用户状态
select * from user_astatus_map;
select * from user_astatus_map; STATUS# STATUS ---------- -------------------------------- OPEN EXPIRED EXPIRED(GRACE) 4 LOCKED(TIMED) LOCKED EXPIRED & LOCKED(TIMED) EXPIRED(GRACE) & LOCKED(TIMED) EXPIRED & LOCKED EXPIRED(GRACE) & LOCKED
2. password_versions
2.1)在oracle 10g, 密码记录在sys.user$.PASSWORD列,其长度为16字符,且不区分大小写;
2.2)在oracle 11g版本后,其复杂度得到了加强,将密码同时写入到sys.user$.spare4列,并且sys.user$.spare4对大小敏感。
2.3)dba_users.password_versions的优先级大于sec_case_sensitive_logon参数,11g默认为true。
3. 下面通过语句进行刷密码操作
3.1)创建序列
start nomaxvalue nocycle nocache;
3.2)创建操作记录表
create table tb_refpwd_log( id number not null, -- 引用seq_refpwd.nextval oper_time date, -- 记录操作时间 oper_command ) -- 记录操作命令内容 );
3.3)执行语句
declare v_datetime ) := to_char(sysdate, 'yyyymmddHH24MI'); v_tbname ) := trim(concat('tb_userpwd_', v_datetime)); -- 备份表名称 v_pf_sql ) := 'create profile temp_profile limit PASSWORD_REUSE_MAX UNLIMITED PASSWORD_REUSE_TIME UNLIMITED'; -- 构造创建profile语句 v_sql ); TYPE RECORD_TYPE_USERS IS RECORD( v_username sys.user$.name%TYPE, v_user_pwd ), v_profile ), v_status sys.user$.ASTATUS%TYPE); user_rec RECORD_TYPE_USERS; cursor c_pwd_cursor is select t2.name, case trim(t1.password_versions) when '10G' then t2.password else nvl(t2.spare4, t2.password) end, t1.profile, t2.astatus from sys.dba_users t1, sys.user$ t2 where t1.user_id = t2.user# , , , , , ); invalid_option EXCEPTION; begin -- select to_char(sysdate, 'yyyymmddHH24MI') into v_datetime from dual; -- select trim(concat('tb_userpwd_',v_datetime)) into v_tbname from dual; select 'create table ' || v_tbname || ' as select name,type#,password,datats#,tempts#,ctime,ptime,exptime,ltime,resource$,astatus,lcount,spare4 from sys.user$ where astatus <> 9' into v_sql from dual; open c_pwd_cursor; fetch c_pwd_cursor into user_rec; then -- 1. create unlimited temporary profile execute immediate v_pf_sql; IF SQL%NOTFOUND THEN RAISE invalid_option; end IF; -- 2. backup user$ tables execute immediate v_sql; IF SQL%NOTFOUND THEN RAISE invalid_option; end IF; end if; while c_pwd_cursor%FOUND LOOP -- 3. reflash user password /* dbms_output.put_line('alter user ' || user_rec.v_username || ' profile temp_profile'); dbms_output.put_line('alter user ' || user_rec.v_username || ' identified by values ' || chr(39) || user_rec.v_user_pwd || chr(39)); dbms_output.put_line('alter user ' || user_rec.v_username || ' profile ' || user_rec.v_profile); */ execute immediate 'alter user ' || user_rec.v_username || ' profile temp_profile'; execute immediate 'alter user ' || user_rec.v_username || ) || user_rec.v_user_pwd ); ) )); execute immediate 'alter user ' || user_rec.v_username || ' profile ' || user_rec.v_profile; fetch c_pwd_cursor into user_rec; end loop; -- 4. delete temporary profile execute immediate 'drop profile temp_profile cascade'; insert into tb_refpwd_log(id, oper_time, oper_command) values(seq_refpwd.nextval,v_datetime,'drop profile temp_profile cascade'); commit; close c_pwd_cursor; EXCEPTION when invalid_option then , v_datetime, 'invalid opertaion, please check.'); when others then null; end; /
4. 结果确认
) cnt from (select t1.name, t1.password, t1.spare4 from sys.user$ t1 minus select t2.name, t2.password, t2.spare4 from &v_datetime t2 ); select username, account_status, lock_date, expiry_date, created, profile, password_versions,default_tablespace, temporary_tablespace from dba_users;
Oracle rdbms Brush password的更多相关文章
- 由ORACLE:ORA-28001: the password has expired(密码过期)引起ODI资料库连接失败
今天,连接ODI,出现下面的错误 oracle.odi.core.config.WorkRepositoryResourceFailureException: ODI-10182: 资料档案库访问期间 ...
- oracle:the password has expired
今天在用dbvisualizer登录数据库的时候,报了the password has expired的错误,于是上网查了一下原因,是因为数据库密码过期了,因为默认的是180天. 解决方法: 1)用系 ...
- [ORACLE]ORA-28002 The password will expire within 7 days.将不能登录系统
错误“ORA-28002 The password will expire within 7 days. Cannot logon to the database“当在进程调度器上运行AE程序可能遇 ...
- Oracle密码过期the password has expired解决办法
oracle 出现the password has expired这个问题,今天突然发现项目访问不了,一查发现用不了,也登不进去, 这个问题由是Oracle11g密码过期的原因导致的 调试Web项目的 ...
- ORACLE错误:ORA-28001: the password has expired解决方法
Oracle提示错误消息ORA-28001: the password has expired,是由于Oracle11G的新特性所致, Oracle11G创建用户时缺省密码过期限制是180天(即6个月 ...
- Oracle 11g静默安装简明版
环境:RHEL 6.5 + Oracle 11.2.0.4 1. 初步处理应答文件 2. 静默安装软件 3. 静默安装监听 4. 静默dbca建库 说明: 本文默认安装软件前的步骤已经设置完毕 如果没 ...
- vmware workstation9.0 RHEL5.8 oracle 10g RAC安装指南及问题总结
一,虚拟机规划 (1)虚拟机:添加三块网卡 eth0 eth1 eth2 ,分别用于内网,心跳,外网RAC1 内网:192.168.1.10/24 心跳:192.168.2.10/24 VIP:1 ...
- 使用BBED模拟Oracle数据库坏块
BBED(OracleBlockBrowerandEDitor Tool),用来直接查看和修改数据文件数据的一个工具,是Oracle一款内部工具,可以直接修改Oracle数据文件块的内容,在一些极端恢 ...
- Oracle EBS R12 (12.1.3) Installation Linux(64 bit)
Oracle EBS R12 (12.1.3) Installation Linux(64 bit) Contents Objective. 3 1 Download & Unzip. 3 D ...
随机推荐
- WPF备忘录(6)WPF实现打印功能
在WPF 中可以通过PrintDialog 类方便的实现应用程序打印功能,本文将使用一个简单实例进行演示.首先在VS中编辑一个图形(如下图所示). 将需要打印的内容放入同一个<Canvas> ...
- 为什么IIS的应用池回收设置默认为1740分钟-20180720
[非原创,个人收集,希望大家有感触] 你可曾留心过IIS的应用池回收设置默认值是多少?1740分钟对吗,那么为什么会是这样的数值呢? 在asp.net的某篇博客里提到了这个问题. 有关微软产品的许多决 ...
- SQL-Server多表关联查询并分页
一.多表关联查询 1,left join RelaTimeLog表 和 ValidFlight表关联查询 order by t.FlightId desc 2,与group by连用 group by ...
- 【NOI2000】 单词查找树
问题描述 在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里.为了提高查找和定位的速度,通常都画出与单词列表所对应的单词查找树,其特点如下: 根结点不包含字母,除根结点外每一个结点都仅包 ...
- JAVA动态代理基础
Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM) 彻底理解JAVA动态代理 class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中. ...
- Vue:模板&渲染函数学习
模板&渲染函数区别: 1.代码量:模板代码重复逐行拼写,渲染函数可以迭代拼接方式实现重复代码. 2.函数式组件中应用:基于模板的函数式组件需要手动添加特性和事件,给予渲染函数的函数是组件使用c ...
- openstack-on-centos7之各组件服务
认证服务keystone(安装和配置) 在配置 OpenStack 身份认证服务前,必须创建一个数据库和管理员令牌 [用数据库连接客户端以root用户连接到数据库服务] # mysql -u root ...
- lamp配置多个虚拟站点
在同一ip下添加多个域名站点! 1.查看ip 命令:ifconfig 2.添加域名 命令:vi /etc/hosts 输入域名:如 192.168.160.127 www.test.com 192 ...
- js-ES6学习笔记-修饰器
1.修饰器对类的行为的改变,是代码编译时发生的,而不是在运行时.这意味着,修饰器能在编译阶段运行代码. 2. function testable(target) { target.isTestable ...
- Tronado自定义Session
这里就不一一诉说Session和Cookie直接的关系了,下面以一张图来概括: 下面是一个简单的Tornaod自定义Session的例子,看完后你可能会明白为什么我们在Django里可以直接使用req ...