安全研究 >> 安全研究详情

oracle如何改数据文件的名字?

作者: 美创运维中心数据库服务团队发布日期: 07月13日
最近呢,有个客户的非重要系统库,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
Copyright ©2005-2020 杭州美创科技有限公司. All Rights Reserved. 浙ICP备12021012号-1 网站地图