目标:数据库在Windows server上,将数据库从E盘迁移至D盘

select * from dba_data_files;

image

select * from dba_temp_files;

image

 

(一)系统表空间修改

(1)数据库关闭

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

 

(2)将数据库冷备份至D盘

即直接copy数据库物理文件

(3)系统数据库文件修改

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.
SQL> alter database rename file  'E:\ORACLE\ORADATA\BITC\SYSTEM01.DBF' to 'D:\or
acle\oradata\BITC\SYSTEM01.DBF';

Database altered.

SQL> alter database rename file  'E:\ORACLE\ORADATA\BITC\UNDOTBS01.DBF' to 'D:\o
racle\oradata\BITC\UNDOTBS01.DBF';

Database altered.

SQL> alter database rename file  'E:\ORACLE\ORADATA\BITC\TEMP01.DBF' to 'D:\orac
le\oradata\BITC\TEMP01.DBF';
alter database rename file  'E:\ORACLE\ORADATA\BITC\TEMP01.DBF' to 'D:\oracle\or
adata\BITC\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\BITC\TEMP01.DBF"

#---------------------temp表不可修改

(4)数据文件介质恢复

SQL> recover datafile 'D:\oracle\oradata\BITC\SYSTEM01.DBF'
Media recovery complete.
SQL> recover datafile 'D:\oracle\oradata\BITC\UNDOTBS01.DBF'
Media recovery complete.

(5)数据库启动

SQL> alter database open
  2  ;

Database altered.

--------------------------------------------结果----------------------------------

select * from dba_data_files;

image

 

(二)TEMP表空间重建

TEMP表空间不能迁移,只能删除后重建

(1)查看一下认谁在用临时段

SELECT  se.username,sid,serial#, sql_address,
machine,program,tablespace,segtype,contents 
FROM v$session se,v$sort_usage su
WHERE se.saddr=su.session_addr ;

 

(2)那些正在使用临时段的进程

SQL>Alter system kill session 'sid,serial#';

 

(3)创建中转临时表空间

select * from dba_temp_files;

image

SQL> create temporary tablespace TEMP1
  2  tempfile 'D:\ORACLE\ORADATA\BITC\TEMP02.DBF'
  3  size 50M
  4  REUSE
  5  autoextend on
  6  next 10M maxsize UNLIMITED
  7  ;

Tablespace created.

 

(4)改变缺省临时表空间 为刚刚创建的新临时表空间temp1

SQL> alter database default temporary tablespace temp1;

Database altered.

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

select * from dba_temp_files;

image

select name,creation_time,status from v$tempfile;

image

 

(5)删除原来临时表空间

SQL> drop tablespace temp including contents and datafiles;

Tablespace dropped.

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

select name,creation_time,status from v$tempfile;

image

 

(6)重新创建临时表空间

SQL> create temporary tablespace TEMP
  2  tempfile 'D:\ORACLE\ORADATA\BITC\TEMP01.DBF'
  3  size 50M
  4  REUSE
  5  autoextend on
  6  next 10M maxsize UNLIMITED
  7  extent management local
  8  ;

Tablespace created.

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

select * from dba_temp_files;

image

select name,creation_time,status from v$tempfile;

image

 

(7)重置缺省临时表空间为新建的temp表空间

SQL> alter database default temporary tablespace temp;

Database altered.

 

(8)删除中转用临时表空间

SQL> drop tablespace temp1 including contents and datafiles;

Tablespace dropped.

 

(9)如果有必要,那么重新指定用户表空间为重建的临时表空间

 

(三)用户表空间迁移

(1)步骤:

第一步:登陆数据库

第二步:启动数据库

第三步:将数据文件脱机

第四步:打开数据库

第五步:将表空间和数据文件关联

      第六步:使表空间online(会报错)

第七步:将数据文件介质恢复。

第八步:将表空间联机,提交,OK,完成。

 

(2)表空间offline 的选项:

normal

如果表空间数据文件没有任何的错误可以正常的offline。写入错误导致该表空间所有的数据文件

都不能offline。当使用normal 选项offline 的时候会产生一个检查点。默认的offline方式是normal。

temporary

一个表空间可以临时的offline。即使一个或者多个数据文件遇到了写错误。将会对没有offline的

数据文件offline,并执行一个检查点。如果没有数据文件脱机,使用temporary 选项在表空间online

的时候不需要使用介质恢复。如果有数据文件因为写错误而脱机,在表空间online 的时候需要执行

介质恢复。

immediate

表空间将会立即的offline。不会产生检查点。当使用immediate 选项的时候,在表空间online 的

时候需要执行介质恢复。如果数据库处于noarchivelog 模式将不能使用该选项。

把表空间online。

可以把一个offline 的表空间online。以便其中存放的对象能够为用户所访问。当你执行了不干净

的offline 表空间的时候,在表空间online 的时候需要执行介质恢复。然而如果online不成功

将会返回一个错误。

 

(3)执行:

select * from dba_data_files ;

image

【1】用户表空间离线

SQL> alter tablespace TOOLS offline normal;

Tablespace altered.

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

select name,creation_time,status from v$datafile where name like '%TOOL%';

image

【2】rename 表空间,使表空间物理文件移动

SQL> alter database rename file 'E:\ORACLE\ORADATA\BITC\TOOLS01.DBF' to 'D:\ORAC
LE\ORADATA\BITC\TOOLS01.DBF' ;

Database altered.

【3】恢复用户表空间

SQL> recover datafile 'D:\ORACLE\ORADATA\BITC\TOOLS01.DBF' ;
Media recovery complete.

【4】用户表空间在线

SQL> alter tablespace TOOLS online;

Tablespace altered.

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

select * from dba_data_files where tablespace_name='TOOLS';

image