oracle数据库位置迁移

由于数据库原始安装的原因造成数据库或整个操作系统的不安全或者由于磁盘空间变化再或者由于业务变化造成的I/O性能需要调整等等原因需要数据库管理员进行数据库文件位置的调整.下面通过一个WINDOWS平台的ORACLE数据文件移动为例子讨论一下数据库文件移动的方法,请大家指正.

一.移动数据文件
移动数据文件笔者目前使用的有2种办法,权作抛砖引玉.
方法一、以数据文件为单位移动
1.查看数据文件路径
SQL> select name from v$datafile;
NAME
---------------------------------------------
E:/ORACLE/ORADATA/SLUMGABAK/SYSTEM01.DBF
E:/ORACLE/ORADATA/SLUMGABAK/UNDOTBS01.DBF
E:/ORACLE/ORADATA/SLUMGA/CWMLITE01.DBF
E:/ORACLE/ORADATA/SLUMGA/DRSYS01.DBF
E:/ORACLE/ORADATA/SLUMGA/EXAMPLE01.DBF
E:/ORACLE/ORADATA/SLUMGA/INDX01.DBF
E:/ORACLE/ORADATA/SLUMGA/ODM01.DBF
E:/ORACLE/ORADATA/SLUMGA/TOOLS01.DBF
E:/ORACLE/ORADATA/SLUMGA/USERS01.DBF
E:/ORACLE/ORADATA/SLUMGA/XDB01.DBF
2.关闭数据库
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
3.MOUNT到数据库
SQL> startup mount
ORACLE instance started.
Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
Database mounted.
4.把要移动的数据文件剪切到目标目录,这里的要移动SYSTEM数据文件从'E:/oracle/oradata/slumgabak'到'E:/oracle/oradata/slumga'
4.alter database方法移动数据文件
SQL> alter database rename file 'E:/ORACLE/ORADATA/SLUMGABAK/SYSTEM01.DBF' to 'E
:/ORACLE/ORADATA/SLUMGA/SYSTEM01.DBF';
Database altered.
5.移动其他数据文件同上.但是我们要注意的是TEMP数据文件.在我们上边列出数据文件的命令里没有包含这个文件.而且我们在
SQL> alter database rename file 'E:/ORACLE/ORADATA/SLUMGA/temp01.DBF' to 'E:/ORA
CLE/ORADATA/SLUMGAbak/temp01.DBF';
alter database rename file 'E:/ORACLE/ORADATA/SLUMGA/temp01.DBF' to 'E:/ORACLE/O
RADATA/SLUMGAbak/temp01.DBF'
*
ERROR at line 1:
ORA-01511: error in renaming log/data files
ORA-01516: nonexistent log file, datafile, or tempfile
"E:/ORACLE/ORADATA/SLUMGA/temp01.DBF"
 
SQL> alter database rename tempfile 'E:/oracle/oradata/slumga/temp01.dbf' to 'E:
/oracle/oradata/slumgabak/temp01.dbf';
alter database rename tempfile 'E:/oracle/oradata/slumga/temp01.dbf' to 'E:/orac
le/oradata/slumgabak/temp01.dbf'
                      *
ERROR at line 1:
ORA-02231: missing or invalid option to ALTER DATABASE
是不可行的.具体关于TEMP数据文件我们会在下边讨论.
6.移动完以后启动数据库
SQL> alter database open;
SQL> select name,status from v$datafile;
 
方法二、以表空间为单位进行移动
1.把相应表空间offline
SQL> alter tablespace example offline;
Tablespace altered.
2.操作系统级把数据文件移动到目标目录
3.在ORACLE数据库中把该表空间的所有数据文件改名
SQL> alter tablespace example rename datafile 'E:/ORACLE/ORADATA/SLUMGABAK/examp
le01.DBF' to 'E:/ORACLE/ORADATA/SLUMGA/example01.DBF';
Tablespace altered.
4.把表空间ONLINE
SQL> alter tablespace example online;
Tablespace altered.
5.此方法对系统表空间system、undo表空间和temp表空间无法使用。
SQL> alter tablespace UNDOTBS1 offline;
alter tablespace UNDOTBS1 offline
*
ERROR at line 1:
ORA-30042: Cannot offline the undo tablespace

SQL> alter tablespace system offline;
alter tablespace system offline
*
ERROR at line 1:
ORA-01541: system tablespace cannot be brought offline; shut down if necessary

SQL> alter tablespace temp offline;
alter tablespace temp offline
*
ERROR at line 1:
ORA-03217: invalid option for alter of TEMPORARY TABLESPACE
 
如要修改temp表空间的位置,可以选择重新建立一个新的temp表空间,然后把新的表空间设置成默认的临时表空间,然后把老的DROP掉。详细语句
SQL> create temporary tablespace temp2 tempfile 'e:/oracle/tem2.dbf' size 20M reuse
autoextend on next 50m maxsize unlimited; 
关闭数据库。mount到数据库。
SQL> alter database default temporary tablespace temp2;
打开数据库
 
二、移动控制文件
1.用SPFILE启动的数据库
SQL> alter system set control_files='E:/oracle/oradata/slumgabak/CONTROL01.CTL',
'E:/oracle/oradata/slumgabak/CONTROL02.CTL','E:/oracle/oradata/slumgabak/CONTROL
03.CTL' scope=spfile;
System altered.
重启数据库。
SQL> create pfile from spfile;
File created.
2.用pfile启动的数据库
修改E:/oracle/ora92/database/init<SID>.ora 文件,修改参数CONTROL_FILES的值。重新启动数据库。如果有SPFIL重建SPFILE
SQL> create spfile from pfile;
 
三、移动联机重作日志文件。
1.停止数据库
2.把日志文件移动到新的目标目录
3.mount到数据库,修改日志文件的名字
SQL> alter database rename file 'E:/oracle/oradata/slumga/REDO01.LOG' to 'E:/ora
cle/oradata/slumgabak/REDO01.LOG';
Database altered.
SQL> alter database rename file 'E:/oracle/oradata/slumga/REDO02.LOG' to 'E:/ora
cle/oradata/slumgabak/REDO02.LOG';
Database altered.
SQL> alter database rename file 'E:/oracle/oradata/slumga/REDO03.LOG' to 'E:/ora
cle/oradata/slumgabak/REDO03.LOG';
Database altered.
4.OPEN数据库
SQL> alter database open;
 
修改完成!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值