ORA-01012:not logged on
关闭数据库的时候直接使用了shutdown 或者是直接关闭了虚拟机 没有将数据库shutdown导致
[oracle@eno33 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Sep 25 17:16:26 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected.
SQL> startup;
ORA-01012: not logged on
Process ID: 0
Session ID: 0 Serial number: 0
解决途径:
网上搜了一下说这个 ORA-01012:not logged on 的原因Oracle文件被lock,当再次startup时,操作失败,因为文件依然被锁定状态。
不太了解,尝试一下
ps -ef|grep ora_dbw0_$ORACLE_SID
kill -9 pid
没什么用,再次启动的时候开始报错,ORA-01012:not logged on
[oracle@eno33 ~]$ ps -ef |grep ora_dbw0_
oracle 32641 1 0 13:13 ? 00:00:01 ora_dbw0_ORCLCDB
oracle 104424 104280 0 17:18 pts/2 00:00:00 grep --color=auto ora_dbw0_
[oracle@eno33 ~]$ kill -9 104280
已杀死
[oracle@eno33 ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Sep 25 17:20:23 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected.
SQL> select count(*) from v$process;
select count(*) from v$process
*
ERROR at line 1:
ORA-01012: not logged on
Process ID: 0
Session ID: 0 Serial number: 0
继续找方法,尝试直接在sqlplus中,直接执行shutdown abort; 再次启动成功了,(我是自己的虚拟机,正式环境的话,搞这个最好备个份)
SQL> startup;
ORA-01012: not logged on
Process ID: 0
Session ID: 0 Serial number: 0
SQL> shutdown abort;
ORACLE instance shut down.
临时解决,但是退出后,下次还是存在,继续找,
问题变成了shutdown abort了,接下来恢复就可以了.
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1593832624 bytes
Fixed Size 9135280 bytes
Variable Size 956301312 bytes
Database Buffers 620756992 bytes
Redo Buffers 7639040 bytes
Database mounted.
SQL> recover database;
Media recovery complete.
SQL> alter database open;
Database altered.
SQL> shutdown immediate ;
成功,总结,如果问题类型和我这种是一样的,先将数据库abort形式关闭,然后启动数据库实例,运行实例恢复命令,将数据库恢复到一致状态,打开数据库以允许用户连接.正常关闭,重启一下就可以了.
1.sqlplus关闭数据库
shutdown abort;
2.启动数据库实例
startup mount;
3.运行实例恢复命令,将数据库恢复到一致状态
recover database;
4.打开数据库以允许用户连接
alter database open;
5.重新关闭
shutdown immediate;
6.重启
startup;