扫描二维码,下载手机APP
下载安卓APP箭头
客服QQ
箭头给我发消息

客服QQ:2698585038

Oracle DBA工作笔记-运维.数据迁移与性能调优

综合评级:
★★★★★

定价:
¥79.00

作者:
杨建荣

出版社:
中国铁道

出版日期:
2016/08/01

页数:
616

ISBN:
9787113218973

书籍介绍

ace成员 一线资深dba 搜狐畅游数据库专家多年运维经验凝聚成简。以工作笔记形式凝练近800天原创技术博客精华,全面再现dba工作场景以及运维故障解决思路,透彻理解oracle运维、数据迁移和性能调优。

作者简介

杨建荣DBA一枚,Oracle ACE,DBAplus社群联合发起人,YEP成员(Young Expert Program),现就职于搜狐畅游,曾负责亚太电信运营商的数据业务支持,主要负责完成数据业务升级、数据迁移和性能调优。拥有Oracle 10g OCM,MySQL OCP认证,在数据库大会和Oracle嘉年华做过主题分享。除数据库技术之外,对shell,Java也有一定的功底,平时喜好写技术博客,每天坚持一篇,现已经坚持800多天(公众号 jianrong-notes)。

目录

第1篇 数据库运维篇

第1章 数据库安装配置

1.1 安装前的准备 1

1.2 安装数据库软件 5

1.2.1方法1:oui安装 6

1.2.2方法2:静默安装 8

1.2.3方法3:克隆安装 11

1.2.4诊断案例:克隆安装后无法登录的问题 13

1.3 创建/删除数据库 16

1.3.1方法1:dbca图形建库 16

1.3.2方法2:手工建库 18

1.3.3方法3:dbca静默建库 22

1.3.4方法4:omf建库 22

1.3.5诊断案例:create database语句在10g、11g中的不同 23

1.3.6创建数据库后的补充工作 26

1.3.7删除数据库的步骤 29

1.4 关于sysdba、sysoper、dba的区别和联系 29

第2章 常用工具和问题分析

2.1sql*plus使用及常见问题 34

2.1.1sql*plus使用细则 34

2.1.2sql*plus无法启动的常见原因 41

特殊问题:乱码导致的sql*plus无法启动的问题 43

特殊问题:使用strace诊断奇怪的sql*plus登录问题 44

2.2 解析exp/imp及常见问题 47

2.2.1exp/imp使用场景及示例 47

2.2.2exp/imp使用常见问题 50

诊断案例:生产系统exp无法使用的紧急诊断和修复 55

诊断案例:外部表的导入导出问题 57

诊断案例:imp-00013 问题及解决方法 58

诊断案例:使用strace分析exp中buffer设置的奇怪问题 60

经验分享:你可能不了解的dump文件 63

2.3 解析datapump及常见问题 66

2.3.1datapump使用场景及示例 66

2.3.3只言片语分析datapump的工作原理 68

诊断案例:impdp异常中断导致的问题 70

诊断案例:使用impdp选项不当导致的数据丢失 73

第3章 服务连接配置

3.1 监听配置与客户端配置简介76

3.2 网络服务配置 78

3.2.1网络配置细则与实践 78

诊断案例:session跟踪失效的问题和原因 82

3.2.2监听配置文件格式探究——一个空格的威力 84

3.2.3rac中的taf的配置 88

3.2.4rac中的scan的配置 90

3.2.5通过单例模式模拟rac连接 93

3.3 监听器无法启动的几个原因94

诊断案例:使用strace分析tns-12543的案例 96

第4章 数据库启/停和宕机问题

4.1 数据库启停的问题分析 99

4.2 数据库无法启动案例 100

诊断案例:数据库参数设置不当导致无法启动的问题100

诊断案例:服务器增加内存后无法重启数据库的问题及解决方案 102

诊断案例:数据库shutdown之后无法启动的问题 103

诊断案例:rac节点无法启动的ora-29702问题及分析 105

诊断案例:连续出现的rac节点问题 108

4.3 数据库无法登录问题分析110

4.4 数据库无法登录案例 111

诊断案例:归档空间不足导致的数据库无法登录问题 111

诊断案例:session leak导致的数据库无法登录问题 115

诊断案例:undo缺失导致的数据库无法登录问题 118

4.5 数据库宕机问题和原因分析119

4.6 数据库宕机问题案例 119

诊断案例:一条sql语句导致的数据库宕机问题及分析 119

诊断案例:存储导致的数据库宕机问题及分析 121

诊断案例:i/o问题导致的数据库突然宕机的问题及分析 124

诊断案例:数据库导致突然宕机的问题及解决 126

第5章 容灾与备份恢复

5.1 备份恢复应用及实践 132

5.1.1归档模式下的四种完全恢复场景 132

5.1.2rman中三个不完全恢复场景 137

实验1:使用句柄实现特定场景的无备份恢复 141

实验2:关于dual表的破坏性测试 145

5.2 闪回应用及实践 149

5.2.1关于delete、drop、truncate异同和无备份恢复场景 149

5.2.2使用闪回查询备份数据 152

5.2.3使用flashback query巧妙抽取指定数据 154

实战案例:巧用flashback database实现灵活的数据回滚 155

实战案例:巧用flashback database实现灵活的数据切换 156

5.3data guard搭建与应用 160

5.3.1 常见的data guard隐患 161

5.3.211g data guard搭建实践 163

5.3.3论Oracle备库的设计方案 169

5.3.4实用至上的 snapshot standby特性 171

实践案例:data guard备库中的几个数据文件问题 175

实践案例:data guard备库的数据文件的迁移实战 179

诊断案例:由drop datafile导致的oracle bug 182

诊断案例:一个oracle bug的手工修复 185

诊断案例:11g备库无法开启adg的原因分析 188

第6章 监控管理和故障处理6.1zabbix、orabbix简介 191

6.2zabbix agent部署 191

6.3orabbix的部署 1946.4 浅谈zabbix和grid control的优劣 197

6.5orabbix定制监控oracle的简单配置 198

实践案例:orabbix结合Python发送图形报表 200

实践案例:zabbix中配置data guard的监控 205

6.6 两条腿走路更稳当——硬件监控很有必要 207

6.7 运维平台的建设思考——元数据管理 209

6.8 监控盲点与诊断案例 210

监控盲点:由dual导致的一个潜在的监控问题 210

诊断案例:备库cpu使用异常优化 213

诊断案例:两条报警信息结合分析dg问题 216

诊断案例:监控反被监控误——一则orabbix报警的分析 222

诊断案例:自定义监控项快速定位问题 224

诊断案例:cpu报警信息的分析 226

第2篇 数据迁移篇第7章 数据库升级

7.1 数据库升级常用方法与准备工作 230

7.2oracle10g升级至11g完整呈现 231

7.2.1准备流程图 231

7.2.210g升级至11g需要考虑的参数优化 232

7.2.3oracle10g升级至11g准备工作详细步骤 233

7.2.4升级流程示意图 236

7.2.5升级后需要考虑的补充工作 237

7.2.6实战汇总:oracle 10g 升级 11g过程中常见问题及解决方案 238

7.3 升级后常见问题与解决方案243

7.3.1问题分析:关于oracle invalid components问题的解决 243

7.3.2问题分析:10g升级至11g后数据库无法启动的问题 246

7.3.3问题分析:10g升级至11g后exp启用consistent=y的问题 248

7.3.4问题分析:查询user_synonyms超时的问题 254

7.3.5问题分析:impdp 10g/11g问题解决 255

7.3.6问题分析:升级后数据库日志里的外部表错误 257

第8章 数据迁移及问题处理

8.1 数据迁移工具和使用场景分析261

8.2 利用sql*loader进行数据迁移 263

8.2.1关于sql*loader-805问题的解决 263

8.2.2sql*loader加载性能问题的排查 265

8.2.3Excel文件内容导入数据库的问题及解决 267

诊断案例:生产环境sql*loader加载性能问题及分析 269

8.3 传输表空间 275

8.4 分区表迁移相关 277

8.4.1分区表的水平、垂直切分 278

8.4.2关于分区表的move操作 279

8.4.3批量转换分区表为普通表 281

8.5 外部表 282

8.5.1外部表简单总结 282

诊断案例:巧用外部表避免大量的insert 284

诊断案例:巧用外部表备份历史数据 286

诊断案例:通过外部表改进一个烦琐的大查询 289

8.6 其他迁移方式 292

8.6.1数据库文件的迁移 292

8.6.2data guard环境中的数据文件迁移方式对比 295

8.6.3关于move tablespace的问题总结 298

第9章 数据迁移之外部表实战

9.1 失败的经验总结:数据迁移问题汇总 300

9.1.1非空约束导致的数据加载失败 301

9.1.2外键数据差异导致的约束无法启用 301

9.1.3网络问题导致数据加载中断 301

9.1.4约束问题导致datapump加载回滚 302

9.1.5undo不足的困扰 302

9.1.6冲突数据不易展现 302

9.1.7sequence冲突检查 303

9.1.8加载lob数据的假并行 303

9.1.9数据乱码的影响 303

9.1.10数据转储文件不可读/不易读 303

9.1.11大分区表的加载性能问题 304

9.2 外部表方案的产生 304

9.2.1sql*loader和oracle_datapump性能大比拼 304

9.2.2海量数据迁移之通过shell脚本估算数据量 305

9.2.3数据迁移前的数据库检查和建议 308

9.2.4数据迁移前的系统检查 313

小技巧:怎样突破表名30个字符的限制 315

小技巧:使用shell生成状态报表 317

9.3 数据抽取 318

9.3.1外部表切分原理 319

9.3.2抽取方式1:使用utl_file做选择性数据导出 321

9.3.3抽取方式2:海量数据迁移之外部表并行抽取 324

9.3.4抽取方式3:海量数据迁移之分区并行抽取 327

9.3.5抽取方式4:海量数据迁移之分区并行切分 331

9.3.6抽取方式5:海量数据迁移之通过rowid切分大表 332

小技巧:海量数据迁移之使用shell启用多个动态并行 336

9.4 数据预检查 338

9.4.1海量数据迁移之冲突数据筛查 339

9.4.2数据迁移判断非空约束 340

小技巧:使用shell进行日志分析 342

小技巧:使用shell脚本巧妙统计文件 344

9.5 数据加载 345

9.5.1海量数据迁移之外部表加载 345

9.5.2巧用parallel极速提升数据加载速度 348

9.5.3海量数据迁移之使用分区并行切分导入 350

9.5.4海量数据迁移之分区表批量insert性能改进 352

9.6 可能碰到的数据修复问题352

9.6.1使用错误日志修复数据的利弊 353

诊断案例:数据紧急修复之启用错误日志 355

9.6.2人为操作失误的分析和应对 356

9.7 数据迁移经验总结 358

9.7.1海量数据迁移之误操作和防范建议 358

9.7.2数据迁移需要考虑的问题 360

第3篇 数据库优化篇

第10章 优化工具简介和定制

10.1awr简介 362

10.1.1awr的常用功能 363

10.1.2解析awr中的cpu信息 367

10.1.3使用shell定制awr脚本 370

10.1.4强大的awr format 373

小技巧:使用awr来分析session leak问题 375

实例分析:一份awr报告分析的思路 376

10.2ash 380

10.2.1ash中的数据字典基表 380

10.2.2通过shell定制ash脚本 383

10.3addm 385

10.3.1使用shell定制addm脚本 385

诊断案例 通过addm明确i/o问题 387

10.4sql profile简介 389

10.4.1sql profile的使用功能 389

10.4.2使用sqlt手工创建sql profile 393

10.4.4性能下降的不定时炸弹——过旧的sql profile 400

10.5sql monitor的功劳 401

10.5.1sql monitor的使用功能 401

10.5.2osm的改进点和简单定制 403

10.6数据字典 405

10.6.1数据字典管理 405

实例诊断:数据字典中的细节问题 406

诊断案例:关于dba_data_files无法访问一个小问题 409

10.7自定义脚本 410

10.7.1关于session leak的问题分析 410

诊断案例:关于ora-00020问题的反思 413

10.7.2高级开发语言定制,量力而行 414

第11章 数据库实例调优

11.1调整数据库参数 417

诊断案例:关于修改数据库参数的测试 417

11.2内存组件调整 421

诊断案例:关于纠结的recycle pool的设置 426

诊断案例:分区表放入keep pool、recycle pool的问题及解析 427

11.3等待事件分析 430

诊断案例:关于等待事件“read by other session” 431

诊断案例:关于enq:tx - allocate itl entry的问题分析 434

11.4日志分析调优 437

诊断案例:由一条日志警告所做的调优分析 437

诊断案例:ora-17500 odm err的问题排查 440

诊断案例:alert日志中一条ora警告信息的分析 441

11.5分区表优化 443

诊断案例:通过分区键值发现性能问题 443

经验分享:修改分区表的问题总结 445

11.6需要重视的并发 447

第12章 系统调优12.1i/o问题诊断 451

12.1.1orion的简单部署和测试 452

诊断案例:启用odm极速调优i/o 455

诊断案例:一次数据库响应缓慢的问题排查 459

12.2通过Linux命令诊断性能问题 460

12.2.1那些极度危险的linux命令 461

12.2.2一些“简单”的linux命令 464

诊断案例:crontab导致cpu异常的问题分析及处理 471

诊断案例:服务器进程异常的原因分析 474

12.3内核参数优化诊断 477

诊断案例:linux kernel引发的数据库连接问题 478

诊断案例:linux kernel引发的data guard问题 481

第13章 sql优化前奏和sql审核

13.1sql优化前奏 487

13.1.1sql的查询转换 487

13.1.2通过错误的sql来测试推理sql的解析过程 494