数据库

Oracle数据库无法启动,可能是系统问题

位置:首页 > 数据库 > Oracle教程,2017-04-16
近日,在初始化系统的时候,有报错,最后查的是因为部署在一台linux系统上的oracle数据库有异常。登陆到系统中,切换到oracle用户查看数据库状态时,报错

近日,在初始化系统的时候,有报错,最后查的是因为部署在一台linux系统上的oracle数据库有异常。登陆到系统中,切换到oracle用户查看数据库状态时,报错现象如下:

Oracle无法启动(图1)


再查看磁盘空间使用情况df –h查看,根目录磁盘空间已经满了(sda3磁盘)


Oracle无法启动(图2)


<问题分 析>

1、首先想到的是删除一些不用的文件。但是这是一台只部署了oracle数据库而没有部署其他基础件的linux系统,删除文件不会增加太多空间。如果部署了其他基础件,可以删除一些日志和core文件,可以增加很大的磁盘空间。

2、根据经验, oracle数据库用久了,它的UNDO表空间和TEMP表空间对应的物理文件会占用很大的磁盘空间。 进入对应的oradata目录使用ll –lh查看,果然,分别占用了14G和17G的磁盘空间。
Oracle无法启动(图3)

3、基于以上分析,需要对这2个文件动动手术,可以参考网上资料《UNDOTBS01.DBF太大的解决方法》和《oracle temp01.dbf太大的解决方式》

4、以上的”手术”需要在数据库启动的状态下进行,但是目前数据库因为磁盘空间不足,启动都启动不了,便想到删除一些文件先让数据库可以启动起来。

前面已经分析了,由于只部署了数据库,删除一些文件之后只多了2M的空间,数据库无法启动。便进行了系统的重启,一般重启系统会释放一些空间,可以让数据库先起起来。但是这次重启系统后,数据库还是因为磁盘空间满无法启动。


5、这种情况下,观察到业务的一些数据库文件也占用了很大的空间,可以先挪一部分物理文件到其他非根目录上去。这个环境的数据库文件一部分再/uf02/oradata/test142,这个目录是用的根目录磁盘空间,可能是数据库最开始安装时指定的数据库文件路径;一部分在/uf20/oradata/test142,这个是新挂载的磁盘sdb1,还有18G空间可用。

以上挪表空间的物理文件的过程可以在数据库没有启动的时候进行。

问题已经分析清楚,可以开始持刀操作了
一、加载新磁盘并挂载
如果没有新的磁盘,可以申请挂载新的磁盘,操作如下。如有可忽略,实际操作过程中目录名称请自己定义。
二、挪数据文件到新的磁盘目录

启动数据库,直接startup会报错刚刚移动的数据文件不存在类似。 可以在mount数据库的状态下,指定数据文件到新的位置。

▪ 已连接到空闲例程↑


▪ ORACLE 例程已经启动



▪ 数据库装载完毕


▪ 数据库已更改

SQL> alter database open;

▪ 数据库已更改
SQL> alter system register;
▪ 系统已更改


三、重做UNDO表空间
以上步骤二的操作可以解决部分问题,挪一些比较大的物理文件到新的磁盘,则根目录磁盘空间可能就已经多出了好几个G,则够用了。
*这里推荐一种方法可以让空间更多点
以SYS用户登录Oracle 自带的SQL*PLUS的方法:
sqplus “/as sysdba”
1、创建一个新的小空间的UNDO TABLESPACE




2、设置新的表空间为系统UNDO_TABLESPACE


3、在配置文件中修改undo_tablespace的设置


在本系统的位置及文件名称


即cd $ORACLE_HOME/dbs目录下
将其中的undo_tablespace=UNDOTBS1 改为 UNDOTBS2

4、重启数据库 
方法一:采用命令SHUTDOWN IMMEDIATE 关闭数据库,然后再采用命令STARTUP 重新开启数据库;
方法二:重启计算机

5、DROP 旧的表空间

查询所有表空间情况: SELECT NAME FROM V$DATAFILE;
空间得到恢复利用

<重做TEM P表空间>
文件位置请根据自己系统情况进行操作

以上操作完成,查看文件大小以及空间使用情况,感觉心情不错!



TAGS:Oracle无法启动

猜你喜欢


NewHot