Oracle 常见错误
Oracle"ORA-00054"错误
错误场景
中文:
英文:
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired错误原因
资源忙,被占用了。
解决方案
1.检查哪个用户占用资源
select loc.session_id,obj.owner,obj.object_name from v$locked_object loc,dba_objects obj where loc.object_id=obj.object_id;
2.利用查出来占用资源的session_id,查出更加详细的信息
SELECT * FROM v$session where sid = 997;
3、根据上面查出来的 SID,SERIAL# 杀掉占用资源的会话:
alter system kill session '997,21423' immediate;
重新执行sql即可
Oracle"ORA-00904"错误
ORA-00904 表示“无效的列名”
Oracle"ORA-28002"错误
错误场景
当使用sqlplus进行登录时报错:ORA-28002 密码过期。
错误原因
由于oracle 在默认在default概要文件中设置了密码过期天数,
PASSWORD_LIFE_TIME=180
,密码过期后就会报此提示。解决方案
1、查看用户的概要文件名,一般为default
sql> SELECT username,PROFILE FROM dba_users;
2、查看指定概要文件(如default)的密码有效期设置
sql> SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
3、将密码有效期由默认的180天修改成“无限制”,立即生效,修改后没有提示过期的用户将不会再提示
sql> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
4.检查已经密码过期的用户
账号的状态大致被分为:OPEN(正常),LOCKED(通过SQL语句进行的锁定),LOCKED(TIMED)(超过最大错误登录次数被动锁定),EXPIRED或者EXPIRED(GRACE)(密码过期状态),EXPIRED & LOCKED(TIMED)(密码过期并超过了限制次数被锁定)等。sql> SELECT username,account_status FROM dba_users;
5.修改后,还没有被提示ORA-28002警告的帐户不会再有同样的提示,已经被提示的帐户必须修改密码
sql> ALTER user 用户名 identified BY `密码`