目标:数据库在Windows server上,将数据库从E盘迁移至D盘
select * from dba_data_files;
select * from dba_temp_files;
(一)系统表空间修改
(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;
(二)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;
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;
select name,creation_time,status from v$tempfile;
(5)删除原来临时表空间
SQL> drop tablespace temp including contents and datafiles;
Tablespace dropped.
-----------------------------------------------------------------------------------------
select name,creation_time,status from v$tempfile;
(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;
select name,creation_time,status from v$tempfile;
(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 ;
【1】用户表空间离线
SQL> alter tablespace TOOLS offline normal;
Tablespace altered.
--------------------------------------------------------------------------------------------------------
select name,creation_time,status from v$datafile where name like '%TOOL%';
【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';