如何移数据库文件?
软件环境
Windows +ORACLE
ORACLE安装路径为C:\ORACLE
实现方法
有两种移动数据库文件的方法
alter database或alter tablespace
后者仅用于不包括 SYSTEM 的表空间回滚段或临时段的数据文件
前者可用于所有数据文件
alter database方法
创建实验表空间
SQL> create tablespace test datafile
e:\testdbf size M
default storage (initial M next M pctincrease )
/
SQL>
表空间已创建
e:为硬盘上的一个逻辑分区现要把testdbf文件移到d:盘
可使用以下语句查看一下数据文件状态
SQL> select file_namefile_idtablespace_namebytesstatus from dba_data_files;
FILE_NAME FILE_ID TABLESPACE_NAME BYTES STATUS
C:\ORACLE\ORADATA\ORADB\SYSTEMDBF SYSTEM AVAILABLE
C:\ORACLE\ORADATA\ORADB\RBSDBF RBS AVAILABLE
C:\ORACLE\ORADATA\ORADB\USERSDBF USERS AVAILABLE
C:\ORACLE\ORADATA\ORADB\TEMPDBF TEMP AVAILABLE
C:\ORACLE\ORADATA\ORADB\TOOLSDBF TOOLS AVAILABLE
C:\ORACLE\ORADATA\ORADB\INDXDBF INDX AVAILABLE
C:\ORACLE\ORADATA\ORADB\DRDBF DRSYS AVAILABLE
E:\TESTORA TEST AVAILABLE
使用SERVER MANAGER关闭实例
c:\> svrmgrl
SVRMGR> connect internal
SVRMGR> shutdown;
SVRMGR> exit;
也可以在管理工具中用服务工具来关闭OracleServiceORCL
不用关闭OracleOraHomeTNSListener
使用操作系统命令来移动数据库文件位置(不关闭移动不了文件)
c:\>move e:\testdbf d:\testdbf
或在资源管理器中用鼠标剪切粘贴来完成
装载数据库并用alter database命令来改变数据库中的文件名
也可以在管理工具中用服务工具来启动OracleServiceORCL
不过这时表面上看OracleServiceORCL服务是启动了但数据库并没有打开
显示
ERROR
ORA: ORACLE initialization or shutdown in progress
这时也可用internal/oracle连入SQL*Plus
SVRMGR> connect internal
SVRMGR> shartup mount ORCL;
SVRMGR> alter database rename file
> e:\testdbf to
> d:\testdbf;
注意一定要加单引号
完成这个步骤后保留数据库日志并执行步骤
启动实例
SVRMGR> connect internal
SVRMGR> alter database open;
这时数据库真正打开可以执行各种操作
查看一下数据文件状态
SQL> select file_namefile_idtablespace_namebytesstatus from dba_data_files;
FILE_NAME FILE_ID TABLESPACE_NAME BYTES STATUS
C:\ORACLE\ORADATA\ORADB\SYSTEMDBF SYSTEM AVAILABLE
C:\ORACLE\ORADATA\ORADB\RBSDBF RBS AVAILABLE
C:\ORACLE\ORADATA\ORADB\USERSDBF USERS AVAILABLE
C:\ORACLE\ORADATA\ORADB\TEMPDBF TEMP AVAILABLE
C:\ORACLE\ORADATA\ORADB\TOOLSDBF TOOLS AVAILABLE
C:\ORACLE\ORADATA\ORADB\INDXDBF INDX AVAILABLE
C:\ORACLE\ORADATA\ORADB\DRDBF DRSYS AVAILABLE
D:\TESTORA TEST AVAILABLE