【数据库管理】Oracle 11g管理数据文件和临时文件

一 数据文件数据字典视图
下面的数据字典和动态性能视图提供了关于数据文件的信息:
  • 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.



你可能感兴趣的:(Oracle系列)