实验环境
搭建平台: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';
