oracle 实例正在初始化或者关闭

时间:2022-05-31 02:10:43
oracle 实例正在初始化或者关闭

在连接oracle数据库的时候出现这个错误,环境是solaris。原因可能是我把一个dbf文件移走导致的。请问这个问题该怎么解决?

谢谢!

12 个解决方案

#1


你只移走了dbf文件,没改控制文件?
请你们的DBA出马吧,自己不要瞎折腾了。

#2


你只移走了dbf文件,没改控制文件? 

#3


恢复数据库吧。

#4



楼主可以先看下alert文件,确实下是否是这个原因导致的错误,在把移走的文件在还原后在重启下看看。 

Oracle 的文件都是位置都是写在控制文件里的,不可随意移动。 

#5


用sys可以登录,但用system的时候系统就报了这个错误了。因为我就对数据库做了移动dbf文件的操作,数据库就挂了,所以应该是这个的原因。现在在家里没有Solaris环境,单位的环境也不能轻易试验啊,试一下环境估计就瘫痪了。。
恢复数据库怎么恢复呢?

新手,请各位多多指教。谢谢!

#6


引用 5 楼 wxl789 的回复:
用sys可以登录,但用system的时候系统就报了这个错误了。因为我就对数据库做了移动dbf文件的操作,数据库就挂了,所以应该是这个的原因。现在在家里没有Solaris环境,单位的环境也不能轻易试验啊,试一下环境估计就瘫痪了。。
 恢复数据库怎么恢复呢?

 新手,请各位多多指教。谢谢!


用sysdba登录,是因为sysdba不需要数据库open,而system登录需要到dba_users表里进行校验,所以必须数据库open

你可以sysdba登录

select status from v$instance;
看看你数据库现在的状态不是open的,应该是mounted状态

所以需要恢复你的数据库先。

#7


这个已经试过了,先关掉,然后再启动,结果还是一样。

#8


在mount 状态,修改控制文件,
SQL>shutdown abort;
SQL>startup mount;

找到你改动位置文件对应的tablespace,这里假设为testts,假设你移动的文件是 testts01.dbf
SQL>alter tablespace  testts  rename datafile‘/opt/oracle/oradata/orcl/ testts01.dbf 
to ‘/opt/oracle/oradata/test/ testts01.dbf’;

SQL> alter tablespace testts  online;
SQL>alter database open;

#9


SQL>alter tablespace testts  rename datafil‘/opt/oracle/oradata/orcl/testts01.dbf ’ 
to ‘/opt/oracle/oradata/test/testts01.dbf’; 

上面这句应该可以替换成
SQL>alter database rename file‘/opt/oracle/oradata/orcl/testts01.dbf ’ 
to ‘/opt/oracle/oradata/test/testts01.dbf’; 

#10


很详尽,非常感谢,明天上班了试试。。

#11


8楼正解

#12


昨天去看了一下,师兄已经把实例重装了。按照这个方法,应该可以吧。多谢各位。

#1


你只移走了dbf文件,没改控制文件?
请你们的DBA出马吧,自己不要瞎折腾了。

#2


你只移走了dbf文件,没改控制文件? 

#3


恢复数据库吧。

#4



楼主可以先看下alert文件,确实下是否是这个原因导致的错误,在把移走的文件在还原后在重启下看看。 

Oracle 的文件都是位置都是写在控制文件里的,不可随意移动。 

#5


用sys可以登录,但用system的时候系统就报了这个错误了。因为我就对数据库做了移动dbf文件的操作,数据库就挂了,所以应该是这个的原因。现在在家里没有Solaris环境,单位的环境也不能轻易试验啊,试一下环境估计就瘫痪了。。
恢复数据库怎么恢复呢?

新手,请各位多多指教。谢谢!

#6


引用 5 楼 wxl789 的回复:
用sys可以登录,但用system的时候系统就报了这个错误了。因为我就对数据库做了移动dbf文件的操作,数据库就挂了,所以应该是这个的原因。现在在家里没有Solaris环境,单位的环境也不能轻易试验啊,试一下环境估计就瘫痪了。。
 恢复数据库怎么恢复呢?

 新手,请各位多多指教。谢谢!


用sysdba登录,是因为sysdba不需要数据库open,而system登录需要到dba_users表里进行校验,所以必须数据库open

你可以sysdba登录

select status from v$instance;
看看你数据库现在的状态不是open的,应该是mounted状态

所以需要恢复你的数据库先。

#7


这个已经试过了,先关掉,然后再启动,结果还是一样。

#8


在mount 状态,修改控制文件,
SQL>shutdown abort;
SQL>startup mount;

找到你改动位置文件对应的tablespace,这里假设为testts,假设你移动的文件是 testts01.dbf
SQL>alter tablespace  testts  rename datafile‘/opt/oracle/oradata/orcl/ testts01.dbf 
to ‘/opt/oracle/oradata/test/ testts01.dbf’;

SQL> alter tablespace testts  online;
SQL>alter database open;

#9


SQL>alter tablespace testts  rename datafil‘/opt/oracle/oradata/orcl/testts01.dbf ’ 
to ‘/opt/oracle/oradata/test/testts01.dbf’; 

上面这句应该可以替换成
SQL>alter database rename file‘/opt/oracle/oradata/orcl/testts01.dbf ’ 
to ‘/opt/oracle/oradata/test/testts01.dbf’; 

#10


很详尽,非常感谢,明天上班了试试。。

#11


8楼正解

#12


昨天去看了一下,师兄已经把实例重装了。按照这个方法,应该可以吧。多谢各位。