一 数据文件数据字典视图
下面的数据字典和动态性能视图提供了关于数据文件的信息:
- dba_data_files;
- dba_extents / user_extents;
- dba_free_space / user_free_space;
- v$datafile / v$datafile_header;
二 创建数据文件/向表空间添加数据文件
可以使用下面的方法创建数据文件,也可以向表空间添加数据文件:
- create tablespace:创建表空间;
- create temporary tablespace:创建本地管理的临时表空间;
- alter tablespace ...add datafile:向表空间添加数据文件;
- alter tablespace ...add tempfile:向临时表空间添加数据文件;
- create database:创建数据库;
- alter database .. create datafile:创建一个新的空的数据文件;
三 更改数据文件的大小
1 启用和禁用数据文件的自动扩展
SQL> alter tablespace test2 add datafile '/u01/app/oracle/oradata/orcl/test2_02.dbf' size 30M
2 autoextend on next 512K
3 maxsize 150M;
Tablespace altered.
SQL> alter database datafile '/u01/app/oracle/oradata/orcl/test2_02.dbf' autoextend off;
Database altered.
2 手动设置数据文件大小SQL> alter database datafile '/u01/app/oracle/oradata/orcl/test1_01.dbf' resize 100M;
Database altered.
四 修改数据文件的可用性
--以下操作是数据库处于归档模式
SQL> alter database datafile '/u01/app/oracle/oradata/orcl/test2_02.dbf' offline;
Database altered.
SQL> alter database datafile '/u01/app/oracle/oradata/orcl/test2_02.dbf' online;
alter database datafile '/u01/app/oracle/oradata/orcl/test2_02.dbf' online
*
ERROR at line 1:
ORA-01113: file 8 needs media recovery
ORA-01110: data file 8: '/u01/app/oracle/oradata/orcl/test2_02.dbf'
SQL> recover datafile 8;
Media recovery complete.
SQL> alter database datafile '/u01/app/oracle/oradata/orcl/test2_02.dbf' online;
Database altered.
SQL> alter tablespace test2 datafile offline;
Tablespace altered.
SQL> alter tablespace test2 online;
alter tablespace test2 online
*
ERROR at line 1:
ORA-01113: file 7 needs media recovery
ORA-01110: data file 7: '/u01/app/oracle/oradata/orcl/test2_01.dbf'
SQL> recover tablespace test2;
Media recovery complete.
五 重命名和重定位数据文件
1 重命名数据文件(单个表空间)
--将表空间离线,数据库必须处于打开状态
SQL> alter tablespace test2 offline;
Tablespace altered.
--使用操作系统命令重命名数据文件
SQL> host mv /u01/app/oracle/oradata/orcl/test2_01.dbf /u01/app/oracle/oradata/orcl/test2_001.dbf
SQL> host mv /u01/app/oracle/oradata/orcl/test2_02.dbf /u01/app/oracle/oradata/orcl/test2_002.dbf
--使用alter tablespace的rename datafile重命名数据文件
SQL> alter tablespace test2
2 rename datafile '/u01/app/oracle/oradata/orcl/test2_01.dbf',
3 '/u01/app/oracle/oradata/orcl/test2_02.dbf'
4 to
5 '/u01/app/oracle/oradata/orcl/test2_001.dbf',
6 '/u01/app/oracle/oradata/orcl/test2_002.dbf';
Tablespace altered.
--立即对数据库进行备份(此步骤略)
--将表空间置为在线状态
SQL> alter tablespace test2 online;
Tablespace altered.
SQL>
2 重定位数据文件(单个表空间)SQL> col file_name for a50
SQL> col online_status for a10
SQL> select file_name,bytes/1024/1024 M,online_status
2 from dba_data_files
3 where tablespace_name='TEST2';
FILE_NAME M ONLINE_STA
-------------------------------------------------- ---------- ----------
/u01/app/oracle/oradata/orcl/test2_001.dbf 50 ONLINE
/u01/app/oracle/oradata/orcl/test2_002.dbf 30 ONLINE
--将表空间置为离线
SQL> alter tablespace test2 offline;
Tablespace altered.
--将数据库文件移到新的位置
SQL> host mv /u01/app/oracle/oradata/orcl/test2_001.dbf /home/oracle/
--重命名数据库文件
SQL> alter tablespace test2
2 rename datafile '/u01/app/oracle/oradata/orcl/test2_001.dbf'
3 to '/home/oracle/test2_001.dbf';
Tablespace altered.
--立即对数据库进行备份(此步骤略)
--将表空间置为在线状态
SQL> alter tablespace test2 online;
Tablespace altered.
3 重命名和重定位数据文件(多个表空间)--将表空间置为离线状态,或将数据文件置为离线状态,或将数据库至于mounted状态
SQL> alter tablespace test1 offline;
Tablespace altered.
SQL> alter tablespace test2 offline;
Tablespace altered.
--使用操作系统命令移动数据文件,并重命名
SQL> host mv /u01/app/oracle/oradata/orcl/test1_01.dbf /home/oracle/
SQL> host mv /u01/app/oracle/oradata/orcl/test2_002.dbf /home/oracle/
--使用操作系统命令重命名数据文件
SQL> host mv /home/oracle/test2_001.dbf /home/oracle/test2_01.dbf
SQL> host mv /home/oracle/test2_002.dbf /home/oracle/test2_02.dbf
--重命名数据库文件
SQL> alter database rename file '/u01/app/oracle/oradata/orcl/test1_01.dbf','/u01/app/oracle/oradata/orcl/test2_002.dbf'
2 ,'/home/oracle/test2_001.dbf'
3 to '/home/oracle/test1_01.dbf','/home/oracle/test2_02.dbf','/home/oracle/test2_01.dbf';
Database altered.
--将表空间置为在线状态
SQL> alter tablespace test1 online;
Tablespace altered.
SQL> alter tablespace test2 online;
Tablespace altered.
六 删除数据文件--当表空间只有一个数据文件时,不能使用删除文件命令删除文件
SQL> alter tablespace test1 drop datafile '/home/oracle/test1_01.dbf';
alter tablespace test1 drop datafile '/home/oracle/test1_01.dbf'
*
ERROR at line 1:
ORA-03261: the tablespace TEST1 has only one file
--删除数据文件
SQL> alter tablespace test2 drop datafile '/home/oracle/test2_02.dbf';
Tablespace altered.