数据库存储管理——数据文件管理

数据文件管理

Oracle数据文件包含全部数据库数据。改变数据文件属性、增加数据文件、查看数据文件的数据字典等操作都只能由DBA完成,普通用户无此权限。

1.查看数据文件信息
  在Oracle Enterprise Manager中可以查看数据文件信息。以SYSDBA身份登录到Oracle Enterprise Manager,在“服务器”——>“存储”栏目中单击“数据文件”超链接,打开“数据文件”管理页面,如图所示:


  列表中显示了当前数据库实例中所有数据文件的基本信息。单击一个数据文件超链接,可以查看它的明细信息,如图所示:

  文件的状态有4种,包括OFFLINE、ONLINE、SYSTEM、RECOVER和SYSOFF(表示SYSTEM表空间中的脱机文件)
  也可以从视图VDATAFILE中查看数据文件信息。视图VDATAFILE中有一个字段ENABLED,表示从SQL语句中如何访问文件:DISABLED表示不允许SQL访问;READ ONLY表示不允许更新访问;READ WRITE表示允许完全访问;UNKNOWN表示文件被破坏。

2.创建数据文件
  数据文件是和表空间一起创建的。在使用CREATE TABLESPACE语句创建表空间时,可以使用DATAFILE关键字来制定同时创建的数据文件。
  使用ALTER TABLESPACE语句修改表空间时,可以使用ADD DATAFILE关键字向表空间中添加数据文件。

【示例】对tbs2表空间添加一个数据文件tbs01.dbf,大小为5MB:

alter tablespace tbs2 
add datafile 'e:\oradata\tbs02.dfs' size 5m;

3.修改数据文件属性

①修改数据文件的大小
  使用ALTER DATABASE语句可以修改数据文件的大小,语法如下:

-- 数据文件名必须为数据文件的物理绝对路径
ALTER DATABASE DATAFILE 数据文件名 RESIZE 数据文件大小;

②修改数据文件的在线状态

-- 数据文件名必须为数据文件的物理绝对路径
ALTER DATABASE DATAFILE 数据文件名 ONLINE|OFFLINE;

③改变数据文件自动增长属性

-- MAXSIZE表示允许数据文件增长的最大限度
ALTER DATABASE DATAFILE 数据文件名
    AUTOEXTENT ON NEXT 整数[单位]
    MAXSIZE 整数[单位];

4.删除数据文件
  在删除表空间时,可以指定删除表空间中的数据文件。
  注意,从表空间中删除数据文件时,当数据文件处于以下3种情况时是不能被删除的:

  • 数据文件中存在数据。
  • 数据文件是表空间中唯一的或第一个数据文件。因为第一个数据文件是表空间创建时生成的表空间文件,如果需要删除第一个文件,就需要把表空间删除掉。
  • 数据文件或数据文件所在的表空间处于只读状态。

可以使用ALTER DATABASE命令删除指定的数据文件。语法如下:

-- 数据文件名必须为数据文件的物理绝对路径
ALTER DATABASE DATAFILE 数据文件名 OFFLINE DROP;

但上面的命令不会删除数据文件,只是将数据文件的状态更改为RECOVER。 OFFLINE DROP命令相当于把一个数据文件至于离线状态,并且需要恢复,并非删除数据文件,数据文件的相关信息还会存在数据字典和控制文件中。
  如果想删除磁盘上的文件,可以使用下面的命令:

ALTER TABLESPACE 表空间名 DROP DATAFILE 数据文件名;

上面的命令会删除控制文件和磁盘上的文件,删除之后的原数据文件序列号可以重用。注意,该语句只能是datafile online的时候才可以使用。

5.移动数据文件
  移动数据文件有两个办法:

  • 方法一:先是把表空间脱机,然后在操作系统上移动数据文件,并修改数据库对此文件路径的记载,再把表空间联机,这种方法不用重启数据库。
  • 方法二:重启数据库到mount状态,然后在操作系统上移动数据文件,并修改数据库对此文件路径的记载,再把数据库打开到正常状态。

两个方法都可以同时移动多个文件,第一个方法只能移动一个表空间内的数据文件;第二个方法可以移动数据库内的任意多个文件,这些文件不必属于同一个表空间,只要在操作系统中移动多个数据文件,并在上面的命令中,用逗号分隔多个文件即可。

【示例】把newtbs的数据文件e:\newtbs01.dbf移动到c:\newtbd01.dbf

(1)方法一操作示例
首先把表空间设置为脱机状态:

SQL>alter tablespace newtbs offline;

在操作系统上移动数据文件:

C:\>move e:\newtbs01.dbf c:\newtbd01.dbf

在数据库中重命名移动的数据文件:

SQL>alter tablespace newtbs rename datafile 'e:\newtbs01.dbf' to 'c:\newtbd01.dbf';

最后把表空间联机:

SQL>alter tablespace newtbs online;

确认数据文件移动成功:

SQL>select tablespace_name,file_name from dba_data_files 
where tablespace_name='NEWTBS';

(2)方法二操作示例
重启数据库至mount状态:

SQL>shutdown immediate
数据库已经关闭。
已经卸载数据库
ORACLE例程已经关闭。
SQL>startup mount

在操作系统上移动数据文件:

C:\>move e:\newtbs01.dbf c:\newtbd01.dbf

在数据库中重命名移动的数据文件:

-- 注意,这里和第一个方法不一样之处在于这里用的是file关键字而非datafile关键字
SQL>alter tablespace newtbs rename file 'e:\newtbs01.dbf' to 'c:\newtbd01.dbf';

最后启动数据库到open状态:

SQL>alter database open;

6.重命名数据文件
(1)使表空间处于脱机状态。

SQL>ALTER TABLESPACE my_tbs1 OFFLINE NORMAL;

(2)用操作系统命令重命名数据文件。

SQL>HOST RENAME D:\my_tablespace\my_tbs1.dbf my_tbs2.dbf 

HOST表示需要在SQL PLUS中执行操作系统命令RENAME
(3)使用带RENAME DATAFILE子句的ALTER TABLESPACE语句改变数据文件名称。

SQL>ALTER TABLESPACE my_tbs1 
RENAME DATAFILE 'D:\my_tablespace\my_tbs1.dbf'
TO
'D:\my_tablespace\my_tbs2.dbf'

(4)将表空间重新设置为联机状态

SQL>ALTER TABLESPACE my_tbs1 ONLINE;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容