作者:雨竹清风
数据文件的移动可能是因为I/O过于繁忙,这样会影响到系统的效率,为了平衡I/O会引起数据文件的移动。也可能是因为某个磁盘已经毁掉,为了使数据库顺利运行,为此会引起数据文件的移动。
移动数据文件有两种情况:一种是可以脱机的数据文件,一种是不可以脱机的数据文件。因此系统提供了两条命令。
可以脱机的数据文件,如:上面没有活动的还原数据或临时段的非系统表空间的数据文件。
命令为:
alter tablespace 表空间名rename
datafile ‘数据文件名’to ‘数据文件名’;
不可以脱机的数据文件,如:系统表空间,默认表空间。
命令为:
Alter database rename file ‘数据文件名’ to ‘数据文件名’;
示例如下:
1.查看数据字典结构
SQL> desc dba_data_files
名称 是否为空? 类型
------------------------------------ -------- ------------------
FILE_NAME VARCHAR2(513)
FILE_ID NUMBER
TABLESPACE_NAME VARCHAR2(30)
BYTES NUMBER
BLOCKS NUMBER
STATUS VARCHAR2(9)
RELATIVE_FNO NUMBER
AUTOEXTENSIBLE VARCHAR2(3)
MAXBYTES NUMBER
MAXBLOCKS NUMBER
INCREMENT_BY NUMBER
USER_BYTES NUMBER
USER_BLOCKS NUMBER
ONLINE_STATUS VARCHAR2(7)
2.查询具体数据文件情况。
SQL> col file_name for a51
SQL> col tablespace_name for a20
SQL> select FILE_ID, FILE_NAME, TABLESPACE_NAME from dba_data_files
2 where file_name like '%ORADATA%'
3 order by file_id;
FILE_ID FILE_NAME TABLESPACE_NAME
--------- ------------------------------------------ -------------
1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM
2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1
3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX
4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF USERS
5 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE
3.查询数据文件的状态
SQL> desc dba_tablespaces;
名称 是否为空? 类型
---------------------------------------- -------- --------------
TABLESPACE_NAME NOT NULL VARCHAR2(30)
BLOCK_SIZE NOT NULL NUMBER
INITIAL_EXTENT NUMBER
NEXT_EXTENT NUMBER
MIN_EXTENTS NOT NULL NUMBER
MAX_EXTENTS NUMBER
PCT_INCREASE NUMBER
MIN_EXTLEN NUMBER
STATUS VARCHAR2(9)
CONTENTS VARCHAR2(9)
LOGGING VARCHAR2(9)
FORCE_LOGGING VARCHAR2(3)
EXTENT_MANAGEMENT VARCHAR2(10)
ALLOCATION_TYPE VARCHAR2(9)
PLUGGED_IN VARCHAR2(3)
SEGMENT_SPACE_MANAGEMENT VARCHAR2(6)
DEF_TAB_COMPRESSION VARCHAR2(8)
RETENTION VARCHAR2(11)
BIGFILE VARCHAR2(3)
SQL> select TABLESPACE_NAME, STATUS,CONTENTS from dba_tablespaces;
TABLESPACE_NAME STATUS CONTENTS
-------------------- --------- ---------
SYSTEM ONLINE PERMANENT
UNDOTBS1 ONLINE UNDO
SYSAUX ONLINE PERMANENT
TEMP ONLINE TEMPORARY
USERS ONLINE PERMANENT
EXAMPLE ONLINE PERMANENT
FANLU ONLINE PERMANENT
LULU ONLINE PERMANENT
XIXI_TEMP ONLINE TEMPORARY
XUANXUAN ONLINE PERMANENT
已选择10行。
4.将users数据文件进行脱机
SQL> alter tablespace users offline;
表空间已更改。
5.查询是否成功
SQL> select TABLESPACE_NAME, STATUS,CONTENTS from dba_tablespaces ;
TABLESPACE_NAME STATUS CONTENTS
-------------------- --------- ---------
SYSTEM ONLINE PERMANENT
UNDOTBS1 ONLINE UNDO
SYSAUX ONLINE PERMANENT
TEMP ONLINE TEMPORARY
USERS OFFLINE PERMANENT
EXAMPLE ONLINE PERMANENT
FANLU ONLINE PERMANENT
LULU ONLINE PERMANENT
XIXI_TEMP ONLINE TEMPORARY
XUANXUAN ONLINE PERMANENT
已选择10行。
5.将物理文件进行复制
SQL> host copy D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF C:\disk1\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL
6.使用命令进行数据文件的移动/重命名
SQL> alter tablespace users rename
2 datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF'
3 to 'C:\disk1\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF';
表空间已更改。
7.将数据文件进行联机
SQL> alter tablespace users online;
表空间已更改。
8.查询是否成功
SQL> select TABLESPACE_NAME, STATUS,CONTENTS from dba_tablespaces ;
TABLESPACE_NAME STATUS CONTENTS
-------------------- --------- ---------
SYSTEM ONLINE PERMANENT
UNDOTBS1 ONLINE UNDO
SYSAUX ONLINE PERMANENT
TEMP ONLINE TEMPORARY
USERS ONLINE PERMANENT
EXAMPLE ONLINE PERMANENT
FANLU ONLINE PERMANENT
LULU ONLINE PERMANENT
XIXI_TEMP ONLINE TEMPORARY
XUANXUAN ONLINE PERMANENT
已选择10行。
SQL> col file_name for a51
SQL> col tablespace_name for a19
SQL> select FILE_ID, FILE_NAME, TABLESPACE_NAME from dba_data_files
2 where file_name like '%ORADATA%'
3 order by file_id;
FILE_ID FILE_NAME TABLESPACE_NAME
---------- ----------------------------------- -------------------
1 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF SYSTEM
2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1
3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX
4 C:\DISK1\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01 USERS.DBF
5 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE
9.删除物理文件
10.关闭数据库,准备对系统数据文件进行移动
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 167772160 bytes
Fixed Size 1247900 bytes
Variable Size 75498852 bytes
Database Buffers 88080384 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
11.复制文件
SQL> host copy D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF C:\disk2\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL
12.使用命令进行移动数据文件
SQL> alter database rename
2 file 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'
3 to 'C:\disk2\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF';
数据库已更改。
13.打开数据库
SQL> alter database open;
数据库已更改。
14.查询数据文件情况
SQL> col file_name for a51
SQL> col tablespace_name for a18
SQL> select FILE_ID, FILE_NAME, TABLESPACE_NAME from dba_data_files
2 where file_name like '%ORADATA%'
3 order by file_id;
FILE_ID FILE_NAME TABLESPACE_NAME
---------- ----------------------------------- ------------------
1 C:\DISK2\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM0 SYSTEM.DBF
2 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1
3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF SYSAUX
4 C:\DISK1\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01 USERS.DBF
5 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE