提交需求
*
*

*
*
*
立即提交
点击”立即提交”,表明我理解并同意 《美创科技隐私条款》

logo

    产品与服务
    解决方案
    技术支持
    合作发展
    关于美创

    申请试用
      oracle如何改数据文件的名字?
      发布时间:2020-07-13 阅读次数: 302 次
      最近呢,有个客户的非重要系统库,linux操作系统,但是他里面的数据文件名字命名成了windows的形式。

      比如/app/oracle/F:apporadatauser02.DBF这种形式。这个文件夹在linux操作系统里面要多奇怪就有多奇怪。

      后来和客户聊了之后,确认了是应用方加的,按照windows加数据文件的方法。这样做呢,没有问题,但是作为一个略微强迫症患者来说,就顺手给他改成标准的格式吧!

      下面呢,来介绍下三种修改数据文件的方法

      1 重启数据库至mount 状态,然后rename file;
      2 offline表空间(可以 alter tablespace XXX rename file a to b;这个只要b在就行)
      3 offline数据文件 ( alter database rename file a to b;这个要求a/b有)


      处理方法1


      SHUTDOWN数据库 --> 修改操作系统上的文件名 --> 数据库启动到MOUNT --> 修改数据库中的文件名 --> OPEN数据库

      `oracle@prod app`$ sqlplus / as sysdba
      SQL> shutdown immediate;
      Database closed.
      Database dismounted.
      ORACLE instance shut down.

      $ cp F:apporadatauser03.DBF user03.dbf
      $ sqlplus / as sysdba
      SQL> alter database rename file '/app/F:apporadatauser03.DBF' to '/app/user03.dbf';
      Database altered.

      SQL> alter database open;
      Database altered.

      方法处理2


      OFFLINE表空间 --> 修改操作系统上的文件名 --> 修改数据库中的文件名 --> ONLINE表空间

      SQL> alter tablespace users offline;
      Tablespace altered.
      SQL> select file_name from dba_data_files;

      FILE_NAME
      --------------------------------------------------------
      /app/F:apporadatauser04.dbf

      SQL> exit

      #cp /app/F:apporadatauser04.dbf /app/user04.dbf
      #sqlplus / as sysdba
      SQL> alter database rename file '/app/F:apporadatauser04.dbf' to '/app/user04.dbf';
      Database altered.
      SQL> alter tablespace users online;
      Tablespace altered.

      处理方法3


      OFFLINE数据文件 --> 修改操作系统上的文件名 --> 修改数据库中的文件名 --> 对数据文件进行恢复 --> ONLINE数据文件

      注意:需要归档模式!因为需要对数据文件进行恢复

      SQL>  select file_name from dba_data_files;
      FILE_NAME
      ------------------------------------------------
      /app/oracle/product/11.2.0/db_1/dbs/F:apporadatauser02.DBF

      #cd /app/oracle/product/11.2.0/db_1/dbs/
      #cp F:apporadatauser02.DBF /app/user02.dbf

      SQL> alter database datafile '/app/oracle/product/11.2.0/db_1/dbs/F:apporadatauser02.DBF' offline;
      Database altered.

      SQL> alter database rename file '/app/oracle/product/11.2.0/db_1/dbs/F:apporadatauser02.DBF' to '/app/user02.DBF';
      Database altered.

      ###此处尝试直接online datafile,会发现报错,一定要先recover数据文件!
      SQL> alter database datafile '/app/user02.DBF' online;
      alter database datafile '/app/user02.DBF' online
      *
      ERROR at line 1:
      ORA-01113: file 8 needs media recovery
      ORA-01110: data file 8: '/app/user02.DBF'

      SQL> recover datafile 8; 或者 recover datafile '/app/user02.DBF';
      Media recovery complete.

      SQL> alter database datafile '/app/user02.DBF' online;
      Database altered.

      总结


      总的来说,从下至上对业务影响越来越越小,但是要注意的时候,即便选用第三种方法,也不建议在业务高峰期进行,还是建议停下相关表空间的业务,最好还是停下业务,万无一失!


      套路是一样的套路,但是看到这里的朋友是否还能想到其他的场景可以使用这篇文的中的方法解决问题呢?


      比如说,
      RAC数据库的数据文件一不小心加成了本地数据文件
      数据库的asm的磁盘组冗余程度在创建的时候弄错了

      ……



      免费试用
      服务热线

      马上咨询

      400-811-3777

      回到顶部