将表空间和数据文件从一个位置移动到另一个位置的操作方法
一.OFFLINE
按表空间来:
1.先将相应的表空间offline
SQL>altertablespacetestoffline;
2.把数据文件 copy 到新位置3.alter tablespaceTESTrename 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# NAMESTATUS
-------- ----------------------------------------------------------------------
1D:/ORACLE/ORADATA/DBA/SYSTEM01SYSTEM
2D:/ORACLE/ORADATA/DBA/UNDOTBS0ONLINE
3D:/ORACLE/ORADATA/DBA/SYSAUX01ONLINE
4D:/ORACLE/ORADATA/DBA/USERS01.ONLINE
5D:/TEST01.DBFONLINE
日志文件移动
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