最近呢,有个客户的非重要系统库,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的磁盘组冗余程度在创建的时候弄错了
……
还有其他由你来补充。
美创运维中心数据库服务团队拥有Oracle ACE 1人、OCM 10余人、数十名Oracle OCP、MySQL OCP、红帽RHCA、中间件weblogic、tuxedo认证、达梦工程师 ,著有《Oracle DBA实战攻略》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》等多本数据运维优化书籍。目前运维各类数据库合计2000余套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、达梦等主流商业和开源数据库。并成为首批国内达梦战略合作伙伴之一,拥有海量经验和完善的人员培养体系。并同时提供超融合,私有云整体解决方案。
来源:freebuf.com 2020-07-13 10:12:44 by: database
请登录后发表评论
注册