连接用户无响应,查询v$locked_object视图未响应(buffer busy waits或者log file switch (archiving needed))
一、发现问题
在连接scott用户无响应(卡住),查询v$locked_object视图一直未响应(卡住)后查看/u01/app/oracle/diag/rdbms/chenmu/chenmu/trace/alert_chenmu.log文件发现没有任何错误或警告,后通过ls -lrth查询当天的chenmu_dia0_12295_base_1.trc发现以下问题,显示和阻塞相关的是sid为10,serial#为42263的会话,sql查询该会话的进程号是12301,查询进程号发现与日志写进程相关。
select username,lockwait,process from v$session where sid='10' and serial#='42263'; //查询得到process=12301 ps -ef |grep 12301; //在系统界面查询该进程,发现与日志写进程相关
发现磁盘空间没有满,查看日志归档信息,Archive destination=USE_DB_RECOVERY_FILE_DEST,即/u01/app/oracle/fast_recovery_area/CHENMU/archivelog,想起在安装数据库时开启了归档,但是没有设置归档路径,ORACLE默人归档日志路径,进入该路径发现只归档到2022-08-05,之后的没有归档。
archive log list; //Archive destination USE_DB_RECOVERY_FILE_DEST show parameter db_recovery; //显示/u01/app/oracle/fast_recovery_area cd /u01/app/oracle/fast_recovery_area/CHENMU/archivelog; //系统命令进入归档日志路径
du -sh *; //查看归档日志信息
从上面可以看出是归档日志空间不足造成的,修改日志归档路径。
二、解决问题
1、创建日志归档路径
mkdir /home/oracle/arch; ll; //查看目录所属用户和所属组,oracle和oinstall chmod -R 775 /home/oracle/arch;
2、SQL命令修改日志归档路径
alter system set log_archive_dest_1='location=/home/oracle/arch'; alter system switch logfile; //可以看到 /home/oracle/arch有文件 //还没有进行正式产生数据的时候可以不用开启归档模式 shutdown immediate; startup mount; alter database noarchivelog; alter database open;