天天看点

在ORACLE中移动数据库文件

在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命令将数据文件改名:

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:

sql> alter tablespace test offline;

step2. 用操作系统命令移动数据文件:

将数据文件 'test.ora' 从/ora/oracle/

data1目录移动到/ora/oracle/data2目录下:

step3. 用alter tablespace命令改数据文件名:

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 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. 重启动数据库:

sql> startup;

sql>select name from v$controlfile;

三. 移动联机日志文件:

step 1. 停数据库:

step 2. 用操作系统命令移动联机日志文件:

--将联机日志文件'redolog1.ora' 从/ora/oracle/data1目录移动到/ora/oracle/data2目录下:

$ mv /ora/oracle/data1/redolog1.ora /ora/oracle/data2

step 3. mount数据库,用alter database 命令改联机日志文件名:.

sql> startup mount ;

sql> alter database rename file '/ora/oracle/data1/redolog1.ora' to '/ora/oracle/data2/redolog1.ora';

step 4.重启动数据库: .

sql>select member from v$logfile