oracle如何将数据库文件(*.dbf)移到别的文件夹
2014年8月6号,公司数据库服务器磁盘sda1使用率100%,扩展sda3,挂载目录/data。将sda1中数据库中过大的dbf文件移动到/data目录。
oracle如何将数据库文件(*.dbf)移到别的文件夹?
1、关闭数据库
#sqlplus "/as sysdba";
或者
#sqlplus /nolog;
SQL>conn /as sysdba;
SQL> shutdown immediate;//关闭数据库
2、移动文件
exit到linux Shell状态
#cp srctablespacename.dbf desttablespacename.dbf;
3、以mount方式打开数据库 (Oracle系统读取控制文件中关于数据文件和重作日志文件的内容,但并不打开该文件。这种打开方式常在数据库维护操作中使用,如对数据文件的更名、改变重作日志以及打开归档方式等。)
SQL> startup mount
4、alter database命令来改变数据库中的文件名
SQL> alter database rename file 'srctablespacename.dbf' to 'desttablespacename.dbf'
如果报错如:
ERROR at line 1:
ORA-01113: file 23 needs media recovery
ORA-01110: data file 23: '/data/D:DATAXLCL_SUB6_TBSPC001.DBF'
就执行
SQL> recover datafile '/data/D:DATAXLCL_SUB1_TBSPC001.DBF';
5、启动实例.
SQL> alter database open;
6、确认无错以后,删除原数据文件
# cd /srcdir
# rm srctablspacename.dbf
7、关掉之后重启数据库,出现
ORA-01157: cannot identify/lock data file 20 - see DBWR trace file
ORA-01110: data file 20:'/u01/app/oracle/product/11.2.0/db_1/dbs/D:DATAXLCL_SUB3_TBSPC001.DBF'
解决办法:
a、运行sqlplus "/as sysdba"
SQL>shutdown immediate 停止服务
SQL>startup 启动服务,观察启动时有无数据文件加载报错,并记住出错数据文件标号
SQL>shutdown immediate 再次停止服务
SQL>startup mount
SQL> alter database rename file '/u01/app/oracle/product/11.2.0/db_1/dbs/D:DATAXLCL_SUB3_TBSPC001.DBF' to '/date/D:DATAXLCL_SUB3_TBSPC001.DBF';
SQL> recover datafile '/date/D:DATAXLCL_SUB3_TBSPC001.DBF';
SQL>shutdown immediate 再次停止服务
SQL>startup 启动服务,此次正常。
b、进入PL/SQL Developer检查,没有再提示错误。
浙公网安备 33010602011771号