将表空间和数据文件从一个位置移动到另一个位置的操作方法

一. OFFLINE

 

按表空间来:

1.先将相应的表空间offline

SQL>altertablespacetestoffline;

2.把数据文件 copy 到新位置
3. alter tablespace TEST rename datafile 'D:/TEST01.DBF' to'D:/ORACLE/ORADATA/DBA/TEST01.DBF'

4. 将表空间 online 

SQL>altertablespacetestonline;

 

 

 

 

 

二. Shutdown 数据库

1. 关闭数据库

C:>set ORACLE_SID=DBA

C:>sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 11月 29 11:14:02 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn sys/admin as sysdba

已连接。

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL>


2. 把数据文件 copy 到新位置

3. rename datafile

 

SQL> startup mount

ORACLE 例程已经启动。

Total System Global Area 289406976 bytes

Fixed Size 1248576 bytes

Variable Size 71303872 bytes

Database Buffers 209715200 bytes

Redo Buffers 7139328 bytes

数据库装载完毕。

SQL> alter database rename file 'D:/ORACLE/ORADATA/DBA/TEST01.DBF' to 'D:/TEST01

.DBF';

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> select file#,name,status from v$datafile;

 

FILE# NAME STATUS

-------- ----------------------------------------------------------------------

D:/ORACLE/ORADATA/DBA/SYSTEM01 SYSTEM

D:/ORACLE/ORADATA/DBA/UNDOTBS0ONLINE

D:/ORACLE/ORADATA/DBA/SYSAUX01 ONLINE

D:/ORACLE/ORADATA/DBA/USERS01. ONLINE

D:/TEST01.DBF ONLINE

 

日志文件移动

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> ! mv /u01/app/oracle/oradata/redo0[1-3].log /u04/oradata
SQL> startup mount
ORACLE instance started.
Total System Global Area 422670336 bytes
Fixed Size 1299112 bytes
Variable Size 230690136 bytes
Database Buffers 184549376 bytes
Redo Buffers 6131712 bytes
Database mounted.
SQL> alter database rename file '/u01/app/oracle/oradata/redo01.log'
2 to '/u04/oradata/redo01.log';
Database altered.
SQL> alter database rename file '/u01/app/oracle/oradata/redo02.log'
2 to '/u04/oradata/redo02.log';
Database altered.
SQL> alter database rename file '/u01/app/oracle/oradata/redo03.log'
2 to '/u04/oradata/redo03.log';
Database altered.
SQL> alter database open;
Database altered.
SQL> select group#, member from v$logfile
2 order by group#, member;
GROUP# MEMBER
---------- ------------------------------------------
1 /u04/oradata/redo01.log
1 /u05/oradata/redo01.log
2 /u04/oradata/redo02.log
2 /u05/oradata/redo02.log
3 /u04/oradata/redo03.log
3 /u05/oradata/redo03.log
6 rows selected.

 

 

 

控制文件移动

 

 

 

移动控制文件
在使用初始参数文件时,移动控制文件的步骤类似于前面移动数据文件和重做日志文件的过程。过程
如下:关闭实例,使用操作系统命令移动文件,然后重新启动实例。
然而,在使用服务器参数文件(SPFILE)时,该过程稍有不同。当实例正在运行,或者实例已经关闭,
但以NOMOUNT 模式打开时,应使用alter system…scope=spfile 改变初始文件参数CONTROL_FILES。由于
CONTROL_FILES 参数不是动态参数,因此无论何种情况都必须先关闭实例,然后重新启动它。
在本示例中,数据库中有控制文件的3 个副本,但没有在不同的磁盘上实现多元复用。编辑SPFILE
以使用新的位置,关闭实例,移动控制文件到不同的磁盘,然后再重新启动实例。

 

SQL> select name, value from v$spparameter
2 where name = 'control_files';
NAME VALUE
--------------- --------------------------------------------------
control_files /u01/app/oracle/oradata/control01.ctl
control_files /u01/app/oracle/oradata/control02.ctl
control_files /u01/app/oracle/oradata/control03.ctl
SQL> show parameter control_files
NAME TYPE VALUE
--------------- --------- ------------------------------
control_files string /u01/app/oracle/oradata/contro
l01.ctl, /u01/app/orac le/orad
ata/control02.ctl, /u01/app/or
acle/oradata/control03.ctl
SQL> alter system set control_files =
2 '/u02/oradata/control01.ctl',
3 '/u03/oradata/control02.ctl',
4 '/u04/oradata/control03.ctl'
5 scope = spfile;
System altered.
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> ! mv /u01/app/oracle/oradata/control01.ctl /u02/oradata
SQL> ! mv /u01/app/oracle/oradata/control02.ctl /u03/oradata
SQL> ! mv /u01/app/oracle/oradata/control03.ctl /u04/oradata
SQL> startup
ORACLE instance started.
Total