DBA生存警示:系统级误删除案例及防范建议

编辑手记:对于资深的老DBA们,他们在漫长的职业生涯中养成了很多稀奇古怪的守则,以在复杂多变的环境中“幸存”,这源于无数血泪的教训,我曾经在《数据安全警示录》一书收录了大量现实案例,现在整理分享给大家,共为警示。


案例分享



误删除Oracle软件

硬件维护人员删除归档日志的时候,把节点2的整个ORACLE_HOME都删除了。在删除的时候没有注意到目录改变了,还键盘做了一个向上的动作,刚好就是刚刚使用的 rm -rf *,然后一个下意识的动作回车就这么按下去了。

空格导致的误删除

我最难忘的:root用户在根目录下rm -rf abc *,abc和*之间有个空格,结果把OS删除了。已经成为佳话。什么事情都可能发生的。从此,整个人好像变了一样,做什么事情,都三思而后行了。

空格导致的误删除

偶的教训不是很深刻,不过意义很重大:

删除一些 trace 文件,然后就直接删除rm orcl*, 结果通过VPN到生产的,网络太慢,命令刚刚慢慢的显示出来,看都没看直接按回车,结果执行的命令却是rm orcl *,因为orcl和星号中间有个空格,所以把这个目录下面所有的内容全部删除了。出了一身冷汗,试想,如过是删除数据文件目录下的内容,那立马死翘翘了到现在为止,每次都要等命令完全显示出来,从头到尾看一遍再执行。不过大多数错误都是在很繁忙或者很疲劳的情况下发生的,呵呵,看来DBA应该多休息才是。

空格导致的误授权

安装数据库的时候su - chmod 777 -R /oracle ,多输入一个空格变成chmod 777 -R / oracle ,许多系统文件属性变坏,Unix瘫痪这个错误犯了两次,用系统恢复磁带重做系统,幸好是测试机。从此以后系统部门的同事不肯给root口令。

误删除数据文件

當時,那幾天都是很疲勞的。在開發環境作數據文件分佈調整時,先cp完某個表空間所有文件到其他地方,然後作*匹配rm了此表空間在此目錄的數據文件。但是rename時發現居然有一數據文件沒cp過來,忘了說了,此表空間是system表空間。沒辦法,開發人員明天還要使用這個環境。幸虧之前有一備份,不過當時磁盤空間不是很充裕,足足折騰了一夜才搞定!想起來都後怕哦,幸虧不是正式環境了!再以後,就很少用cp,rm了,特別是rm *,一般是此類操作用mv來完成。需要rm的東西,一般mv到一臨時目錄了,再rm了!呵呵,可能都有點謹慎過頭了哦。

脚本中误删除文件

自己写了个rman备份以及备份成功后rm旧log的shell脚本,log的目录赋值給变量,结果执行時目录赋值沒成功,该变量指向了另一個目录,结果下面的东东全没了,系统立即报错(把用户的home目录删了)。幸好当时头脑还很清醒,也没误删什么重要的数据,很快就搞定了。以后脚本中要rm某个目录的东东再也不敢用变量表示了,直接hardcode进去算了,这样也放心。另外出问题后一定要冷静,定位出问题原因后再动。



误删除目录中挂载

一次生产环境linux系统,做整个项目目录的移植,cp一份确认正常执行后直接rm原来的目录,没想到子目录中居然有mount到其他server的XX目录,结果可想而知...linux啊......

误删除数据文件

刚进现在的公司不久时,做一个数据仓库项目,同事周日加了一天班把数据抽到一个大表空间里,大概 100G,第二天因为临时表空间增长很快,决定重建,这个 临时表空间的开头和那个大表空间名字是一样的,只是后面加了一个_temp,当时也是因为事情比较多,认为这是很简单的,结果输入名字就忘了输入_temp,把大表空间删除了,同事白加了一个星期天,虽然没影响什么进度(数据可以重抽),但这次教训是深刻的。个人教训:

1.rm的时候一定不要用*之类的,要用的话要看好再用,否则会有意想不到的效果。

2.人在累的时候最容易出错误,所以每一次回车都要看好。

上面仅仅是我们摘录的一小部分误删除案例,但是这些案例带来的影响有些是深远的。如何在日常工作中避免这样的低级错误发生?有一些简单可操作的建议。

防范建议



1. 通过别名或重定义方式提示或禁用 rm 操作

或者制定一个规范,通过mv的方式进行文件转移,通过一定时间段(如一周)观察无误后,再彻底清除数据文件rm操作的危险性必须得到技术人员的充分重视。

2. 加强数据环境的空间监控

很多用户是在空间达到100%之后才去匆忙进行空间清理,匆忙常常会带来考虑不周,误操作等意外发生。所以我们建议加强数据环境的存储空间监控,不要等到100%再去应急,应当总是使空间留有阈量,提前 进行空间维护,避免手忙脚乱的应急处理。

3. 在紧急删除之前做好备份 

如果不可避免的要进行紧急的文件删除工作,那么在条件允许的情况下,应当做好备份转移到其他主机或存储,避免无法回退恢复的灾难。通常文件的转移并不会花费太多的时间,在可能情况下用转移替代删除,在必须删除时,也要考虑能否保留最后一个备份。

4. 避免在持续工作或者凌晨仓促的进行文件删除等工作

人在疲劳和不清醒的状态下极易犯下错误,所以应当尽量避免在连续工作的疲惫状态下,或者在梦中惊醒的凌晨迷糊状态下进行维护工作,比如文件删除,在这种状态下,极易出现误判,造成误操作。另外,在操作之前确认你的当前路径,很多灾难是由于当前路径错误导致的,在 Unix/Linux下,可以通过pwd命令来确认。

5. 重要的操作实现人员备份

前面提到过这点建议,再次重申,在执行重要操作时,最好有两个人同时在场,互相监督审核,避免一个人草率或者考虑不周导致的误操作。

以上内容摘录自盖国强《Oracle DBA手记4 数据安全警示录》。


文章转自数据和云公众号,原文链接

时间: 2024-11-29 03:31:03

DBA生存警示:系统级误删除案例及防范建议的相关文章

DBA生存警示:防范频发的数据误删除操作

编辑手记:对于资深的老DBA们,他们在漫长的职业生涯中养成了很多稀奇古怪的守则,以在复杂多变的环境中"幸存",这源于无数血泪的教训,我曾经在<数据安全警示录>一书收录了大量现实案例,现在整理分享给大家,共为警示. 在数据库日常管理过程中,有些威胁来自数据库外部,而有些威胁则来自数据库内部,对于数据库外部,破坏性的操作有rm,而在数据库内部,同样有破坏性操作,如Truncate. 案例分享 误删除数据表 原来接手一个部门的所有数据库,结果漏了一个,也没人告诉我,所以我不知道这

DBA生存警示:主备环境误操作案例及防范建议

编辑手记:对于资深的老DBA们,他们在漫长的职业生涯中养成了很多稀奇古怪的守则,以在复杂多变的环境中"幸存",这源于无数血泪的教训,我曾经在<数据安全警示录>一书收录了大量现实案例,现在整理分享给大家,共为警示. 在数据库日常管理过程中,有些威胁来自数据库外部,而有些威胁则来自数据库内部,对于数据库外部,破坏性的操作有rm,而在数据库内部,同样有破坏性操作,如Truncate. 案例分享 生产与测试环境错误 开了两个PL/SQL DEVELOPE窗口,一个生产的,一

DBA生存警示:保护现场不要让事情更糟

张乐奕 云和恩墨副总经理 Oracle ACE 总监 ITPUB Oracle数据库管理版版主.Oracle高可用版版主.ACOUG联合创始人 今天收到一个发过来请求帮助的 case,Oracle 数据库无法启动,请求帮助恢复.仔细阅读了发过来的告警日志,这是一个典型的"事情越弄越糟"的案例. 作为一个专业的DBA,在遇到问题时,一定要思考:如何保护现场,不让事情变得更糟.这是基本要求,保护现场以使得其他人接手工作时,可以从原有状态开始. 以下就来根据告警日志,一条一条地回顾这位 DB

DBA生存指南:以严谨防范事故

每逢假期,我们总会接收到很多数据库故障救急请求,因此我甚至经常发出以前的一个总结:警惕数据库假期综合症,呼吁大家提高警惕,防范疏忽下发生的故障和问题. 在这个元旦假期中,我们同样收到了很多的紧急援助请求,这其中大多是熟悉的问题,包括: 数据库回滚段问题导致的ORA-01555错误: SYSTEM表空间坏块导致的BootStrap失败,2662错误: 误删除导致的数据丢失: 空间不足导致的归档挂起: 阳光之下,并无新事,这些问题大都是我们以前曾经面对过的,很多专家已经写过了很多案例,如果大家对类似

高通宣布推出基站系统级芯片

2014年6月12日,中国北京讯――美国高通公司(NASDAQ: QCOM)今日宣布,其子公司美国高通技术公司为小区和中小企业(SMB)小型基站推出Qualcomm FSM90xx系统级芯片(SoC).从初期研发到实现,FSM90xx的设计与优化可满足小区和中小企业对于成本目标及性能的需求.FSM90xx的设计可提供特定功能,原始设备制造商(OEM)可针对目标用户案例提供适合的产品外型和应用程序.FSM90xx充分运用去年推出并已经在市场销售的FSM99xx的LTE功能.通过这款以全新小型基站系

移动- 系统级WIFI-&amp;amp;gt;Data切换警如何实现?哪位大神提供个思路

问题描述 系统级WIFI->Data切换警如何实现?哪位大神提供个思路 触发条件:1.wifi 和数据流量都打开 2.处于wifi上网状态,但由于wifi信号太弱而连接丢失系统行为: 1. 弹出对话框,"无可用WIFI连接,是否切换到移动数据?",有三个按钮"仅此一次""始终"以及"关闭移动数据"2. 用户点击"仅此一次"则发起数据连接,点击"始终"则发起数据连接并且以后不再询问,

系统级编程语言性能比较

C/C++已经统治系统编程很久,除了ObjectiveC之外语言都无法获得很高的关注.有人用多种系统级语言编写了同样的地图生成工具来测试他们的性能,包括D(DMD,LDC,GDC).Go(GCC-Go,6g).Haskell(GHC)和Rust.相比C/C++,这些语言都原生支持了诸如垃圾回收这些高级特性,也因此无一能达到C/C++的运行速度. 其中表现最好的是基于LLVM的D语言编译器LDC,与同样基于LLVM的C编译器Clang相比,可以达到它96%的速度.其次是基于LLVM的Rust编译器

CentOS中如何设置系统级代理

  YUM代理设置 编辑/etc/yum.conf,在最后加入 # Proxy proxy=http://username:password@proxy_ip:port/ 也可以使用proxy_username和proxy_password来配置代理的用户名和密码 这样的配置完成后,所有的用户在使用yum时,都会使用代理,可以说是全局代理. 如果需要为单独的用户配置代理,可以在用户的~/.bash_profile中设置. Wget的代理设置 编辑/etc/wgetrc,在最后加入 # Proxy

win8系统手误删除磁贴快捷方式的解决方法

  win8系统手误删除磁贴快捷方式的解决方法.最近一些网友和小编反馈说win8系统手误删除磁贴快捷方式,这可怎么办呢?Win8开始屏幕上的磁贴就是存放在磁贴文件夹中的快捷方式,有时候因为手误操作不小心删除磁贴快捷方式,有什么方法可以修复吗?网上查找很多相关的资讯,但是都没办法解决,本文教程小编整理出解决方法,大家可参考修复. 解决方法: 1.找和自己同版本的系统,打开该文件夹,如下图.注意ProgramData是隐藏文件夹,须在显示隐藏文件夹前提下才能看到; 2.然后复制相关的文件,粘贴到自己