在连接oracle数据库的时候出现这个错误,环境是solaris。原因可能是我把一个dbf文件移走导致的。请问这个问题该怎么解决?
谢谢!
12 个解决方案
#1
你只移走了dbf文件,没改控制文件?
请你们的DBA出马吧,自己不要瞎折腾了。
请你们的DBA出马吧,自己不要瞎折腾了。
#2
你只移走了dbf文件,没改控制文件?
#3
恢复数据库吧。
#4
楼主可以先看下alert文件,确实下是否是这个原因导致的错误,在把移走的文件在还原后在重启下看看。
Oracle 的文件都是位置都是写在控制文件里的,不可随意移动。
#5
用sys可以登录,但用system的时候系统就报了这个错误了。因为我就对数据库做了移动dbf文件的操作,数据库就挂了,所以应该是这个的原因。现在在家里没有Solaris环境,单位的环境也不能轻易试验啊,试一下环境估计就瘫痪了。。
恢复数据库怎么恢复呢?
新手,请各位多多指教。谢谢!
恢复数据库怎么恢复呢?
新手,请各位多多指教。谢谢!
#6
用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;
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’;
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出马吧,自己不要瞎折腾了。
请你们的DBA出马吧,自己不要瞎折腾了。
#2
你只移走了dbf文件,没改控制文件?
#3
恢复数据库吧。
#4
楼主可以先看下alert文件,确实下是否是这个原因导致的错误,在把移走的文件在还原后在重启下看看。
Oracle 的文件都是位置都是写在控制文件里的,不可随意移动。
#5
用sys可以登录,但用system的时候系统就报了这个错误了。因为我就对数据库做了移动dbf文件的操作,数据库就挂了,所以应该是这个的原因。现在在家里没有Solaris环境,单位的环境也不能轻易试验啊,试一下环境估计就瘫痪了。。
恢复数据库怎么恢复呢?
新手,请各位多多指教。谢谢!
恢复数据库怎么恢复呢?
新手,请各位多多指教。谢谢!
#6
用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;
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’;
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
昨天去看了一下,师兄已经把实例重装了。按照这个方法,应该可以吧。多谢各位。