【ASK_ORACLE】你需要知道的对数据文件dbf的一些基础操作

来源:这里教程网 时间:2026-03-03 18:14:01 作者:

实验环境

搭建平台:VMware Workstation

OS:OL 7.5

DB:Oracle 12.2.0.1 一些操作命令 我们知道在操作系统OS层面对文件的操作有复制、移动、重命名、覆盖一些操作,在对Oracle数据库的数据文件也能实现同样的操作,只不过区别是使用Oracle的命令而不是OS的命令。 1. 移动dbf在OS里,移动命令是mv, Oracle的命令是 move … to …,举个例子: (1)创建一个测试表空间

SQL> create tablespace testtbs datafile '/u01/app/oracle/oradata/orcl/testtbs01.dbf' size 100m;

 然后再检查一下OS里只有这一个文件:

$ updatedb
$ locate testtbs01.dbf
/u01/app/oracle/oradata/orcl/testtbs01.dbf  ##已经确定只有一个

  (2)移动新建的dbf文件到新目录

SQL> alter database move datafile '/u01/app/oracle/oradata/orcl/testtbs01.dbf' to '/home/oracle/orcl/testtbs01.dbf';

 再次检查一下:

$ updated && locate testtbs01.dbf
/home/oracle/orcl/testtbs01.dbf  ##已经移动到新目录了

 

SQL> select file_name,online_status from dba_data_files;  ##在数据库里检查一下(这里省略了不相关的输出)
FILE_NAME
----------------------------------------------------------------------------------------------------
ONLINE_
-------
/home/oracle/orcl/testtbs01.dbf
ONLINE

  2. 重命名dbf在OS里, 移动和重名了都是mv命令,Oracle也是如此,都是使用move … to …,举个例子(由于操作一模一样,这里就仅展示命令):

SQL> alter database move datafile '/home/oracle/orcl/testtbs01.dbf' to '/home/oracle/orcl/testtbs0101.dbf';

  3. 复制dbf在OS里,复制命令是cp,Oracle的命令是move … to … KEEP,举个例子: (1)给testtbs表空间添加一个dbf文件

SQL> alter tablespace testtbs add datafile '/u01/app/oracle/oradata/orcl/testtbs02.dbf' size 100m;

 然后再检查一下OS里只有这一个文件:

$ updatedb
$ locate testtbs02.dbf
/u01/app/oracle/oradata/orcl/testtbs02.dbf  ##已经确定只有一个

  (2)复制dbf到新目录

SQL> alter database move datafile '/u01/app/oracle/oradata/orcl/testtbs02.dbf' to '/home/oracle/orcl/testtbs02.dbf' 
keep;
$ updatedb
$ locate testtbs02.dbf
/home/oracle/orcl/testtbs02.dbf
/u01/app/oracle/oradata/orcl/testtbs02.dbf  ##此时就有两个同样的文件了

 

SQL> select file_name,online_status from dba_data_files;  ##在数据库里检查一下(这里省略了不相关的输出)
FILE_NAME
----------------------------------------------------------------------------------------------------
ONLINE_
-------
/home/oracle/orcl/testtbs02.dbf
ONLINE
 
/u01/app/oracle/oradata/orcl/testtbs02.dbf
ONLINE

   4. 覆盖dbf 在OS里的覆盖命令是先cp,后rm老文件,但Oracle一条命令就能搞定move … to … REUSE,举个例子,比如我们把第3步在/home下的testtbs02.dbf给覆盖回去: (1)执行覆盖操作

SQL> alter database move datafile ‘/home/oracle/orcl/testtbs02.dbf’ to ‘/u01/app/oracle/oradata/orcl/testtbs02.dbf’ reuse;

  (2)检查检查一下OS里只有这一个文件

$ updatedb
$ locate testtbs02.dbf
/u01/app/oracle/oradata/orcl/testtbs02.dbf  ##已经确定只有一个

  (3)数据库里检查一下

SQL> select file_name,online_status from dba_data_files;  ##在数据库里检查一下(这里省略了不相关的输出)
FILE_NAME
----------------------------------------------------------------------------------------------------
ONLINE_
-------
/u01/app/oracle/oradata/orcl/testtbs02.dbf
ONLINE

  注: 如果是ASM,上面的操作是一样的,比如执行移动mv操作:

SQL> alter database move datafile '+data/data/orcl/datafile/test01.dbf' to '+data02/data/orcl/datafile/test01.dbf';

相关推荐