此时情绪此时天,无事小神仙
好好生活,平平淡淡每一天

编辑

Oracle 常见错误

Oracle"xxx"错误代码模板

错误场景

xxx

错误原因

xxx。

解决方案

xxx

lsnrctl:command not found

错误场景

Linux 服务器切换oracle用户后执行 lsnrctl start 或者lsnrctl stop 时出现

错误原因

切换oracle用户时,su 后少了-

解决方案

su - oracle

suoracle 中间一定要加上 -

sqlplus:command not found

错误场景

Linux 服务器执行oracle sql 脚本时出现:sqlplus:command not found

错误原因一:在非oracle服务器上执行sql命令脚本

解决方案

切换成oracle所在服务器执行sql命令脚本即可

错误原因二:检查相关配置文件

解决方案

1.检查 vi ~/.bash_profile 文件,若没有oracle相关配置则追加配置
注意:部分参数替换为自己的配置参数

image

2.在.bash_profile文件中追加oracle相关配置后,执行:source .bash_profile

3.若是还是不行则重启oracle数据库

Oracle"ORA-00054"错误

错误场景

中文:
image

英文:
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;

image

2.利用查出来占用资源的session_id,查出更加详细的信息

SELECT * FROM v$session where sid = 997;

image

3、根据上面查出来的 SID,SERIAL# 杀掉占用资源的会话:

alter system kill session '997,21423' immediate;

image

重新执行sql即可

Oracle"ORA-00904"错误
ORA-00904 表示“无效的列名”
Oracle"ORA-12541"错误

错误场景

ORA-12541:TNS:no listener

错误原因

oracle配置的hostname与服务器不一致。

解决方案

1.检查当前服务的hostname是什么
image

2.更新oracle的监听配置文件中的ip配置
更新/opt/oracle/product/19c/dbhome_1/network/admin目录下的listener.oratnsnames.ora与hostname一致
image

listener.ora 文件内容
image

tnsnames.ora 文件内容
image

3.若是还是不行则重启oracle数据库

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 `密码`
Oracle"ORA-65066"错误

错误场景

Oracle"ORA-65066"错误:执行修改密码命令时报错
image

错误原因

当前会话必须指定所有容器。

解决方案

改变当前会话的权限为cdb后再次执行

alter session set container=cdb$root;

image

posted @ 2024-05-08 16:42  踏步  阅读(565)  评论(0编辑  收藏  举报