问题
用数据库连接工具发现数据库连接不上了,登陆服务器一看发现数据库满了
- 登陆
root
或oracle
用户;登陆root
需要切换到oracle
:su - oracle
; - 使用
sqlplus / as sysdba
命令切换到sqlplus
; - 在
sqlplus
模式下使用startup
命令,开启数据库。发现启动报错:
问题原因
在网上简单搜了一下,原因是Oracle
数据库归档日志满了。用df -h
命令看了一下磁盘空间占用情况,磁盘已经满了:
问题解决
因为我的磁盘挂载空间已经满了,我可以删除一些归档日志或扩大挂载的磁盘空间来解决该问题。
删除归档日志
1.使用 shutdown immediate
关闭数据库实例进程
2.再使用 startup mount
启动
3.查看当前数据库实例:select instance_name from v$instance;
4.重开一个窗口,切换到oracle
用户,进入 rman
:
- 指定实例:
set oracle_sid = 查询出的实例名称
- 进入
rman
:rman target /
5.在rman
模式下输入以下命令:
- 查看所有的日志及日志地址:
list archivelog all;
- 查看已经失效的日志:
crosscheck archivelog all;
- 删除所有的无效日志:
delete expired archivelog all;
- 如果删除所有无效的日志不好用,可以删除指定天数的日志,例如删除三天前的日志:
delete noprompt archivelog until time "sysdate -3";
6.再次使用df -h
查看磁盘占用情况:
7.切回到之前sqlplus
窗口,启动数据库:alter database open;
、startup
启动实例即可
增加归档日志空间
如果你的磁盘空间没满,也可以选择增加归档日志空间来解决改问题。
1.查看下归档日志空间情况:select * from v$recovery_file_dest;
2. 增加归档日志空间大小: alter system set db_recovery_file_dest_size=20G scope=both;
这里增加20G,可以自行调整.
3. 启动数据库:alter database open;
、startup
启动实例即可
参考文章
- https://jingyan.baidu.com/article/851fbc378521e83e1f15ab1c.html