本方式是利用已有的建立好的数据库,直接改相关配置文件到新的盘符。
前提,数据库已正常运行。
可以考虑:用不同的sid在d盘建好库。
以下内容弄明白了以后可以直接制作sql文件,用sqlplus直接调用
一、连接数据库
sqlplus /nolog
SQL>connect /as sysdba
二、create pfile from spfile;
备注:这是会生成一个文件,在$oracle_home/dbs中,文件名称是init<SID>.ora
三、查询相关要复制的文件
SQL> select name from v$datafile;
SQL> select name from v$tempfile;
SQL> select name from v$controlfile;
SQL> select member from v$logfile;
(1)SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/example01.dbf
/u01/app/oracle/oradata/orcl/BEIWAIONLINEV4.dbf
6 rows selected.
(2)SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/temp01.dbf
(3)SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/control01.ctl
/u01/app/oracle/oradata/orcl/control02.ctl
/u01/app/oracle/oradata/orcl/control03.ctl
(4)SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/redo03.log
/u01/app/oracle/oradata/orcl/redo02.log
/u01/app/oracle/oradata/orcl/redo01.log
四、关闭数据库
shutdown immediate
五、拷贝第三步运行结果中的所有文件到你的新目录中,这里假设新目录是:/u02/oradata/
备注:这里所指的所有文件是第三步运行那几个命令列出来的文件。
六、修改第二步生成的那个init<SID>.ora文件,在$oracle_home/dbs中。把在三步中用select name from v$controlfile;查出来的文件路径都改为新的路径。这里假设的路径是/u02/oradata/$controlfile.
七、按照下面操作启动数据库
SQL>startup mount pfile=<file name>
命令:SQL>startup mount pfile=$oracle_home/dbs/init<SID>.ora(备注:就是第二步生成的那个文件名和文件路径。)
八、更新文件系统
I:\DBFAS\DATA\SYSTEM01.DBF
I:\DBFAS\DATA\SYSAUX01.DBF
I:\DBFAS\DATA\UNDOTBS01.DBF
I:\DBFAS\DATA\USERS01.DBF
I:\DBFAS\DATA\INDX01.DBF
alter database rename file 'H:\DBFAS\DATA\SYSTEM01.DBF' to 'D:\DBFAS\DATA\SYSTEM01.DBF';
alter database rename file 'H:\DBFAS\DATA\SYSAUX01.DBF' to 'D:\DBFAS\DATA\SYSAUX01.DBF';
alter database rename file 'H:\DBFAS\DATA\UNDOTBS01.DBF' to 'D:\DBFAS\DATA\UNDOTBS01.DBF';
alter database rename file 'H:\DBFAS\DATA\USERS01.DBF' to 'D:\DBFAS\DATA\USERS01.DBF';
alter database rename file 'H:\DBFAS\DATA\INDX01.DBF' to 'D:\DBFAS\DATA\INDX01.DBF';
#SQL>alter database rename file 'I:\DBFAS\DATA\TEMP01.DBF' to 'D:\DBFAS\DATA\TEMP01.DBF';
#SQL>alter database rename file '/u01/app/oracle/oradata/orcl/temp01.dbf' to '/u02/oradata/temp01.dbf';
alter database rename file 'I:\DBFAS\LOG\REDO01.LOG' to 'D:\DBFAS\LOG\REDO01.LOG';
alter database rename file 'I:\DBFAS\LOG\REDO02.LOG' to 'D:\DBFAS\LOG\REDO02.LOG';
alter database rename file 'I:\DBFAS\LOG\REDO03.LOG' to 'D:\DBFAS\LOG\REDO03.LOG';
#SQL>alter database rename file '/u01/app/oracle/oradata/orcl/redo01.log' to '/u02/oradata/redo01.log';
#SQL>alter database rename file '/u01/app/oracle/oradata/orcl/redo02.log' to '/u02/oradata/redo02.log';
#SQL>alter database rename file '/u01/app/oracle/oradata/orcl/redo03.log' to '/u02/oradata/redo03.log';
备注:这里是更新第三步查询出来的所有文件,但是select name from v$controlfile;查询出来的文件不用命令更新。
九、查看文件是否更新成功
SQL> select name from v$datafile;
SQL> select name from v$tempfile;
SQL> select name from v$controlfile;
SQL> select member from v$logfile;
select name from v$datafile;
select name from v$tempfile;
select name from v$controlfile;
select member from v$logfile;
运行结果所有指向了/u02/oradata/的话,证明更新成功
十、打开数据库
SQL> alter database open;
十一、创建一个新的spfile,运行下面命令
SQL> create spfile from pfile;
注释:如果不放心可以把原来路径下的文件换到别的目录,或者删除。关闭数据库后重新启动一次数据库查询一下看看........