ITPub博客

首页 > 数据库 > Oracle > 【Oracle】如何修改数据文件和日志文件的路径

【Oracle】如何修改数据文件和日志文件的路径

原创 Oracle 作者:恩强Boy 时间:2021-02-03 15:49:51 0 删除 编辑

在许多场景下,我们必须通过Oracle 内部命令来 rename 数据文件或日志文件,来为数据文件和日志文件重新定义一个新的物理名称或新的位置,例如:

- 由于某种原因,我们想移动数据库文件到一个新的磁盘

- 我们想从备份还原一个数据文件,但是它原本的磁盘已经满了,只能将数据文件恢复到新的磁盘上。

- 我们在操作系统层面移动或重命名该数据文件,导致 Oracle 找不到它。在启动时候,会报错 ORA-01157 ORA-01110 。如果数据库已经启动,我们尝试正常关闭数据库,则会得到 ORA-01116 ORA-01110

- 在同一台机器上有多个数据库,需要重新命名这些数据文件,防止冲突和混淆

本文将会帮助你解决以下三个问题

1.  在数据库开启时,重命名或移动数据文件

2.  在数据库关闭时,重命名或移动数据文件

3.  重命名或移动日志文件(redolog

注意,如果要重命名或移动system 表空间数据文件,必须关库执行。因为不能将 system 表空间 offline

一、  在数据库开启时,重命名或移动数据文件

在数据库打开时,可以重命名或移动数据文件,但是,该表空间必须是只读的。这样是为了防止用户从表空间中进行insert update delete 操作。修改只读表空间数据文件的时间取决于数据文件的大小以及将数据文件复制到其他位置所需的时间。将表空间设置为只读会冻结文件头,防止对文件头进行更新。由于该数据文件处于只读状态,所以可以在数据库 open 状态时复制该数据文件。

操作步骤如下:

1)  确定表空间有多少数据文件

SQL> SELECT FILE_NAME, STATUS FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'TEST_TBS';

FILE_NAME                                             STATUS

-------------------------------------------------- ---------

/u01/app/oracle/oradata/orcl/test01.dbf            AVAILABLE

/u01/app/oracle/oradata/orcl/test02.dbf            AVAILABLE

2)  确保所有数据文件的状态都是AVAILABLE

3)  确保表空间只读

SQL> alter tablespace test_tbs read only;

4)  查询表空间是否只读

SQL> SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'TEST_TBS';

TABLESPACE_NAME                STATUS

------------------------------ ---------

TEST_TBS                       READ ONLY

5)  使用copy 命令将数据文件复制到新位置

$ cd /u01/app/oracle/oradata/orcl/

$ cp test01.dbf test02.dbf  /u01/app/oracle/oradata/new/

6)  将数据文件复制到新位置后,将表空间offline

SQL> alter tablespace test_tbs offline;

7)  重命名数据文件到新位置,会更新控制文件里面的信息

SQL> alter database rename file  

'/u01/app/oracle/oradata/ orcl /test01.dbf' to

'/u01/app/oracle/oradata/ new /test01.dbf';

SQL> alter database rename file '/u01/app/oracle/oradata/ orcl /test02.dbf' to '/u01/app/oracle/oradata/ new /test02.dbf';

同样可以使用alter tablespace .... rename datafile 语法操作。

8)  将表空间online

SQL> alter tablespace test_tbs online;

9)  将表空间read write

SQL> alter tablespace test_tbs read write;

10)  验证控制文件是否更新

SQL> SELECT FILE_NAME, STATUS FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'TEST_TBS';

FILE_NAME                                             STATUS

-------------------------------------------------- ---------

/u01/app/oracle/oradata/new/test01.dbf             AVAILABLE

/u01/app/oracle/oradata/new/test02.dbf             AVAILABLE

11)  删除旧路径下的文件即可

二、  在数据库关闭时,移动或重命名数据文件

1)  如果数据库时open, 需要关闭

SQL> shutdown immediate;

2)  复制数据文件到新路径

$ cd /u01/app/oracle/oradata/orcl/

$ cp test01.dbf test02.dbf  /u01/app/oracle/oradata/new/

3)  开启数据库至mount

SQL> startup mount;

4)  rename 数据文件

SQL> alter database rename file

'/u01/app/oracle/oradata/ orcl /test01.dbf' to

'/u01/app/oracle/oradata/ new /test01.dbf';

SQL> alter database rename file

'/u01/app/oracle/oradata/ orcl /test02.dbf' to

'/u01/app/oracle/oradata/ new /test02.dbf';

5)  开始数据库至open

SQL> alter database open;

6)  查询数据文件是否改变

SQL> SELECT * FROM V$DBFILE;

7)  删除旧路径下的数据文件即可

三、  重命名或移动日志文件

1)  查询当前日志文件路径

SQL> select group#,member from v$logfile;

    GROUP# MEMBER

---------- ----------------------------------------

         3 /u01/app/oracle/oradata/orcl/redo03.log

         2 /u01/app/oracle/oradata/orcl/redo02.log

         1 /u01/app/oracle/oradata/orcl/redo01.log

2)  关闭数据库

SQL> shutdown immediate;

3)  复制日志文件到新路径

$ cp /u01/app/oracle/oradata/orcl/redo03.log /u01/app/oracle/oradata/new/

4)  开启数据库至mount

SQL> startup mount;

5)  rename 该日志文件

SQL> alter database rename file  

'/u01/app/oracle/oradata/orcl/redo03.log' to  

'/u01/app/oracle/oradata/new/redo03.log';

6)  开启数据库

SQL> alter database open;

7)  再次查看日志文件信息

SQL> select group#,member from v$logfile;

    GROUP# MEMBER

---------- -----------------------------------------

         3 /u01/app/oracle/oradata/new/redo03.log

         2 /u01/app/oracle/oradata/orcl/redo02.log

         1 /u01/app/oracle/oradata/orcl/redo01.log

8)  删除旧路径下的日志文件即可

 

---- end ----


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31529886/viewspace-2755803/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
勤奋,专注和练习

注册时间:2018-04-03

  • 博文量
    77
  • 访问量
    143629