在ORACLE中移动数据库文件
a.shutdown immediate关闭数据库
b.在os下拷贝数据文件到新的地点
c.Startup mount 启动到mount下
d.Alter database rename datafile ‘老文件’ to ‘新文件’;
e.Alter database open; 打开数据库
2、利用Rman联机操作
RMAN> sql "alter database datafile ''file name'' offline"; RMAN> run { 2> copy datafile 'old file location' 3> to 'new file location'; 4> switch datafile ' old file location' 5> to datafilecopy ' new file location'; 6> } RMAN> sql "alter database datafile ''file name'' online";
说明:利用OS拷贝也可以联机操作,不关闭数据库,与rman的步骤一样,利用rman与利用os拷贝的原理一样,在rman中copy是拷贝数据文件,相当于OS的cp,而switch则相当于alter database rename,用来更新控制文件。
–ORACLE数据库由数据文件,控制文件和联机日志文件三种文件组成。
–由于磁盘空间的变化,或者基于数据库磁盘I/O性能的调整等,
–我們可能会考虑移动数据库文件。
–下面以LUNIX平台为例,分别讨论三种数据库文件的移动方法。
一.移动数据文件:
— 可以用ALTER DATABASE,ALTER TABLESPACE两种方法移动数据文件。
1. ALTER DATABASE方法;
— 用此方法,可以移动任何表空间的数据文件。
STEP 1. 下数据库:
$ sqlplus /nolog SQL> conn / as sysdba SQL> SHUTDOWN; SQL> EXIT;
STEP 2.用操作系统命令移动数据文件:
— 将数据文件 ‘test.ora’ 从/ora/oracle/data1目录移动到/ora/oracle/data2目录下:
$ mv /ora/oracle/data1/test.ora /ora/oracle/data2
STEP 3. Mount数据库,用ALTER DATABASE命令将数据文件改名:
$ sqlplus /nolog SQL> conn / as sysdba; SQL> STARTUP MOUNT; SQL> ALTER DATABASE RENAME FILE '/ora/oracle/data1/test.ora' TO '/ora/oracle/data2/test.ora';
STEP 4. 打开数据库:.
SQL> ALTER DATABASE OPEN; SQL>SELECT NAME,STATUS FROM V$DATAFILE;
2. ALTER TABLESPACE方法:
— 用此方法,要求此数据文件既不属于SYSTEM表空间,也不属于含有ACTIVE回滚段或临时段的表空间。
STEP1. 将此数据文件所在的表空间OFFLINE:
$ sqlplus /nolog SQL> conn / as sysdba; SQL> ALTER TABLESPACE test OFFLINE; SQL> EXIT;
STEP2. 用操作系统命令移动数据文件:
将数据文件 ‘test.ora’ 从/ora/oracle/
data1目录移动到/ora/oracle/data2目录下:
$ mv /ora/oracle/data1/test.ora /ora/oracle/data2
STEP3. 用ALTER TABLESPACE命令改数据文件名:
$ sqlplus /nolog SQL> conn / as sysdba; SQL> ALTER TABLESPACE test RENAME DATAFILE '/ora/oracle/data1/test.ora' TO '/ora/oracle/data2/test.ora';
STEP4. 将此数据文件所在的表空间ONLINE:
SQL> ALTER TABLESPACE test ONLINE; SQL> SELECT NAME,STATUS FROM V$DATAFILE;
二. 移动控制文件:
— 控制文件 在 INIT.ORA文件中指定。移动控制文件相对比较简单,下数据库,
— 编辑INIT.ORA,移动控制文件,重启动数据库。
STEP 1. 下数据库:
$ sqlplus /nolog SQL> conn / as sysdba; SQL> SHUTDOWN; SQL> EXIT;
STEP 2.用操作系统命令 移动控制文件:
–将控制文件’ctl3orcl.ora’ 从/ora/oracle/data1目录移动到/ora/oracle/data2目录下:
$ mv /ora/oracle/data1/ctrlorcl3.ora /ora/oracle/data2
STEP 3. 编辑INIT.ORA文件:
INIT.ORA文件的在$ORACLE_HOME/dbs目录下,
修改参数 “control_files”,其中指定移动后的控制文件:
control_files = (/ora/oracle/data1/ctrlorcl1.ora,/ora/oracle/data1/ctrlorcl2.ora,/ora/oracle/data2/ctrlorcl3.ora)
STEP 4. 重启动数据库:
$ sqlplus /nolog SQL> conn / as sysdba; SQL> STARTUP; SQL>SELECT name FROM V$CONTROLFILE; SQL> EXIT;
三. 移动联机日志文件:
STEP 1. 停数据库:
$ sqlplus /nolog SQL> conn / as sysdba; SQL> SHUTDOWN; SQL> EXIT;
STEP 2. 用操作系统命令移动联机日志文件:
–将联机日志文件’redolog1.ora’ 从/ora/oracle/data1目录移动到/ora/oracle/data2目录下:
$ mv /ora/oracle/data1/redolog1.ora /ora/oracle/data2
STEP 3. Mount数据库,用ALTER DATABASE 命令改联机日志文件名:.
$ sqlplus /nolog SQL> conn / as sysdba; SQL> STARTUP MOUNT ; SQL> ALTER DATABASE RENAME FILE '/ora/oracle/data1/redolog1.ora' TO '/ora/oracle/data2/redolog1.ora';
STEP 4.重启动数据库: .
SQL> ALTER DATABASE OPEN; SQL>SELECT MEMBER FROM V$LOGFILE