首先要明确的是,这不是多路复用,这和多路复用是有区别的,但是思路到差不差。要想完成以上的工作,需要进行物理上文件的移动和逻辑上文件的移动,其中控制文件不需要进行逻辑上的移动,其它的文件要求物理移动和逻辑移动,否则数据库无法运行!
1,移动数据文件
//在移动这些文件的时候,首先要创建目的地路径,用来存放移动后的文件,我这创建了三个路径,分别用来保存数据文件,控制文件,重做日志文件。(使用root用户创建文件夹和移动文件)
//我们cd到本来存放数据文件的路径,然后使用命令将数据文件全部移动到目的地路径,要注意cp和mv的区别,cp是拷贝,mv才是移动。
//我们查看目的地路径,发现数据文件已经全部移动成功
//物理上的移动已经完成,现在是逻辑上的移动
//登录数据库,以mount状态登录
//登录后需要分别输入以下语句来进行逻辑上的更改,注意:自己的语句要对应上自己的起始路径和目的路径,包括文件名,个数
alter database rename file '/u01/app/oracle/oradata/orcl/example01.dbf' to '/u01/data/oradata/example01.dbf';
alter database rename file '/u01/app/oracle/oradata/orcl/soe1.dbf' to '/u01/data/oradata/soe1.dbf';
alter database rename file '/u01/app/oracle/oradata/orcl/sysaux01.dbf' to '/u01/data/oradata/sysaux01.dbf';
alter database rename file '/u01/app/oracle/oradata/orcl/temp01.dbf' to '/u01/data/oradata/temp01.dbf';
alter database rename file '/u01/app/oracle/oradata/orcl/temp02.dbf' to '/u01/data/oradata/temp02.dbf';
alter database rename file '/u01/app/oracle/oradata/orcl/tpcctab1.dbf' to '/u01/data/oradata/tpcctab1.dbf';
alter database rename file '/u01/app/oracle/oradata/orcl/undotbs01.dbf' to '/u01/data/oradata/undotbs01.dbf';
alter database rename file '/u01/app/oracle/oradata/orcl/undotbs1.dbf' to '/u01/data/oradata/undotbs1.dbf';
alter database rename file '/u01/app/oracle/oradata/orcl/users01.dbf' to '/u01/data/oradata/users01.dbf';
alter database rename file '/u01/app/oracle/oradata/orcl/system01.dbf' to '/u01/data/oradata/system01.dbf';
//所有逻辑上的数据文件也移动后,将数据库更改为打开状态,并执行set语句。
数据文件的移动就完成了
2,移动控制文件
//移动控制文件之前,先创建一个pfile文件,然后关闭数据库。创建后的pfile文件是init数据库名.ora。然后关闭数据库!
//然后我们将控制文件移动到我们的目的地路径,用mv
//查看目的地路径有没有,发现有
//然后找到pfile文件,修改该文件
//将原先的路径改为自己的目的地路径,退出保存
//以指定pfile文件的方式启动数据库。成功登录后,关闭数据库,方便一会重做日志文件的移动。
启动成功,控制文件的移动完成。
3,移动重做日志文件
//同样的物理移动方式,将原路径的重做日志文件移动到目的地路径
//查看目的地路径
//以mount状态启动数据库
//登录后要对重做日志文件进行逻辑上的移动,这里的路径和文件名需要和自己的对应。
//然后打开数据库 alter database open;
alter database rename file '/u01/app/oracle/oradata/orcl/redo01.log' to '/u01/data/redologs/redo01.log';
alter database rename file '/u01/app/oracle/oradata/orcl/redo02.log' to '/u01/data/redologs/redo02.log';
alter database rename file '/u01/app/oracle/oradata/orcl/redo03.log' to '/u01/data/redologs/redo03.log';
//查看重做日志文件的路径,发现逻辑上也在目的地路径了
//然后正常的关闭启动数据库就没有问题了