第1章 知己知彼 忘战必危 1
1.1 危机四伏,数据注定泄露 1
1.2 从罗维邓白氏案例看数据道德 4
1.3 数据库管理员出售新生儿信息 6
1.4 美国上千万信用卡信息疑遭盗取 7
1.5 数据外泄主要来自内部 8
1.6 GDPR带来的数据安全思考 9
1.7 数据库的漏洞都会重来 12
1.8 那些运维中的疏忽导致的数据风险 16
1.9 参考资料 18
第2章 运筹帷幄 三十六计 20
2.1 有效的备份重于一切 21
2.2 测试环境和生产环境隔离 24
2.3 禁止远程的和业务时间的DDL操作 26
2.4 ORACLE数据库DEVOPS的三十六计 37
2.5 参考资料 40
第3章 合抱之木 生于毫末 41
3.1 ORACLE数据库软件发布序列 42
3.2 DB LINK必须升级的预警 48
3.3 SQL语句注入和CVE-2017-10282警告 71
3.4 JAVA VM的反序列化 86
3.5 从一次UPDATE的优化讲起 94
3.6 一个逻辑坏块引发的灾难 104
3.7 参考资料 106
第4章 靡不有初 鲜克有终 107
4.1 以空间之由――恢复误删数据文件案例 109
4.2 以拯救之因――强制恢复导致ORA-600 4000错误的案例 133
4.3 以优化之名――存储优化导致表空间误删案例 152
4.4 以安全之期 159
4.5 以便利之机 175
第5章 未雨绸缪 防患未然 180
5.1 DBA四大守则 182
5.2 DBA守则外四则 183
5.3 各种惨痛的案例 187
5.4 参考资料 210
第6章 亡羊补牢 未为迟也 212
6.1 数据篡改案例解析 213
6.2 密码安全与加密 244
6.3 分析与恢复被篡改的敏感数据 266
6.4 参考资料 271
第7章 明察秋毫 见微知著 272
7.1 一次小碰撞引发的灾难――ASM保护式文件离线引发故障 273
7.2 又一次小碰撞引发的灾难――文件离线与归档日志缺失 的案例 281
7.3 空间与文件离线――离线表空间修复 303
7.4 对写文件错误的处置改进 331
第8章 心存目想 三思后行 339
8.1 TRUNCATE导致的灾难――核心字典表误操作TRUNCATE 340
8.2 脚本错误导致的灾难――数据库整体被删除故障 353
第9章 千丈之堤 溃于蚁穴 363
9.1 一个字符引发的灾难――大小写字符疏忽导致的维护故障 364
9.2 一个盘符引发的灾难――判断失误导致的误格式化故障 385
9.3 一个BEGIN引发的灾难 389
9.4 一个空格引发的事故 404
9.5 一个坏块引发的灾难 406
9.6 一个标志位的影响 422
9.7 一个磁盘添加引发的故障――通过AMDU恢复数据的 案例一则 431
第10章 物尽其用 尺有所短 439
10.1 关库与关机――强制关机导致的写丢失故障 441
10.2 从小恙到灾难――重建控制文件失误导致的故障 470
10.3 尺有所短,物有不足――硬件故障导致的灾难一则 480
10.4 由性能问题而追溯的磁盘故障 483
10.5 静默错误引起的数据灾难 488
10.6 ORACLE的写丢失检测特性 496
10.7 ORACLE 12.2的写丢失检测增强 503
10.8 参考资料 507
附录A:BBED的说明 509
附录B:函数F_GET_FROM_DUMP: 512
数据驱动,成就未来 517