freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

运维日记|oracle如何改数据文件的名字?
FreeBuf_345712 2020-07-13 10:12:44 34468

最近呢,有个客户的非重要系统库,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、达梦等主流商业和开源数据库。并成为首批国内达梦战略合作伙伴之一,拥有海量经验和完善的人员培养体系。并同时提供超融合,私有云整体解决方案。

# 运维安全 # oracle # 数据库运维 # 自动化运维
本文为 FreeBuf_345712 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
数据库运维
FreeBuf_345712 LV.1
这家伙太懒了,还未填写个人描述!
  • 69 文章数
  • 2 关注者
运维日记|SQL server 那点事
2020-09-03
运维日记|做一个查找机器
2020-08-26
运维日记|做一个优雅搬运工
2020-08-25