oracle数据文件分类,Oracle移动数据文件(学习笔记)

一.为什么要移动数据文件

因为如果所有的数据文件都放在一个磁盘上,会增加I/O量,这样会影响数据库的效率。

所以如果放在不同的盘上,就可以并行传输,这样就会提高很多。

二.移动数据文件的步骤

数据库一共提供了2条语句来移动数据文件

2.1第一种,如果数据文件是没有活动的还原数据或者临时段的非系统表空间中的数据

文件,则步骤如下:

(a).使用数据字典获取所需的表空间和数据文件的相关信息;

(b).将表空间置为脱机;

(c).使用操作系统命令移动或者复制要移动的数据文件;

(d).执行alter tablespace rename datafile命令;

(e).将表空间置为联机;

(f).使用数据字典获取所需的表空间和数据文件的相关信息;

(g).如果需要,使用操作系统命令删除无用的数据文件;

2.2第二种,该语句适用于系统表空间和不能置为脱机的表空间中的数据文件。步骤如下:

(a).使用数据字典获取所需的表空间和数据文件的相关信息;

(b).关闭数据库系统;

(c).使用操作系统命令移动或者复制要移动的数据文件;

(d).将数据库置为加载状态;

(e).执行alter database rename file命令;

(f).打开数据库系统;

(g).使用数据字典获取所需的表空间和数据文件的相关信息;

(h).如果需要,使用操作系统命令删除无用的数据文件;

三.移动数据文件实例(第二种方法使用所有的类型的数据文件)

以下示例都是在我的电脑上操作的,无任何虚假。

因为第一种需要"没有活动的还原数据或者临时段的非系统表空间"的条件;

所以为了安全,用第二种方法可以使用全部的类型;

C:/Documents and Settings/jacky>sqlplus/nolog

SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 3月 24 21:46:45 2011

Copyright (c) 1982, 2005, Oracle. All rights reserved.

SQL> conn / as sysdba;

已连接。

SQL> --查看所有表空间USERS的信息,准备移动这个表空间下的数据文件;

SQL> select tablespace_name,status,contents

2 from dba_tablespaces

3 where tablespace_name='USERS';

TABLESPACE_NAME STATUS CONTENTS

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

USERS ONLINE PERMANENT

SQL> --再查看USERS下的的数据文件;

SQL> col file_name format a55;

SQL> select file_id,file_name,tablespace_name

2 from dba_data_files

3 where tablespace_name='USERS';

FILE_ID FILE_NAME

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

TABLESPACE_NAME

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

4 E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY/USERS01.DBF

USERS

SQL> shutdown immediate;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> host copy E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY/USERS01.DBF E:/ORACLE

Microsoft Windows XP

欢迎来到Jacky的工作室!!!

今天是2011-03-24 星期四

现在已经是21:57:33.50

已复制 1 个文件。

SQL> conn / as sysdba;

已连接到空闲例程。

SQL> startup nomount;

ORACLE 例程已经启动。

Total System Global Area 612368384 bytes

Fixed Size 1250428 bytes

Variable Size 192940932 bytes

Database Buffers 411041792 bytes

Redo Buffers 7135232 bytes

SQL> alter database mount;--开始输错了,现在才加载。呵呵

数据库已更改。

SQL> alter database rename file 'E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY/USERS01.

DBF' to 'E:/ORACLE/USERS01.DBF';

数据库已更改。

SQL> alter database open;--将实例完全启动;

数据库已更改。

SQL> select tablespace_name,status,contents

2 from dba_tablespaces

3 where tablespace_name='USERS';

TABLESPACE_NAME STATUS CONTENTS

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

USERS ONLINE PERMANENT

SQL> --还在,吓死我了,呵呵。

SQL> select file_id,file_name,tablespace_name

2 from dba_data_files

3 where tablespace_name='USERS';

FILE_ID FILE_NAME

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

TABLESPACE_NAME

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

4 E:/ORACLE/USERS01.DBF

USERS

SQL> --天啦,成功了,呵呵!

SQL> --不过别急,将原来的路径的没有用的数据文件删除;

SQL> host del E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY/USERS01.DBF;

Microsoft Windows XP

欢迎来到Jacky的工作室!!!

今天是2011-03-24 星期四

现在已经是22:10:31.20

SQL> --查看是否已经删除;

SQL> host dir E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY;

Microsoft Windows XP

欢迎来到Jacky的工作室!!!

今天是2011-03-24 星期四

现在已经是22:11:09.75

驱动器 E 中的卷没有标签。

卷的序列号是 20E2-F689

E:/ORACLE/PRODUCT/10.2.0/ORADATA/JACKY 的目录

2011-03-24 22:10.

2011-03-24 22:10 ..

2011-03-24 21:56 7,061,504 CONTROL01.CTL

2011-03-23 23:25 52,429,312 REDO01.LOG

2011-03-23 23:27 52,429,312 REDO02.LOG

2011-03-23 23:37 52,429,312 REDO03.LOG

2011-03-24 21:56 283,123,712 SYSAUX01.DBF

2011-03-24 21:56 503,324,672 SYSTEM01.DBF

2011-03-24 22:08 20,979,712 TEMP01.DBF

2011-03-24 21:56 26,222,592 UNDOTBS01.DBF

8 个文件 998,000,128 字节

2 个目录 12,847,595,520 可用字节

SQL> --发现已经没有了,完美。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值