《ORACLE运维点滴》PDF下载

  • 购买积分:21 如何计算积分?
  • 作  者:孟利青,常润梅主编
  • 出 版 社:长春:吉林大学出版社
  • 出版年份:2015
  • ISBN:9787567736818
  • 页数:784 页
图书介绍:本书主要介绍ORACLE在实际生产中运维方法及问题处理案例。对ORACLE的数据管理原理通过实验模拟、理论分析也加以介绍,从ORACLE产品安装、基础管理、SQL优化、体系架构、运维案例、问题处理等方面,全面的阐述了ORACLE运维知识,运维方法。结合各行各业ORACLE使用的最佳实践,介绍了ORACLE RAC的安装,界面化管理ORACLE的GRID CONTROL工具的安装及使用,RMAN备份恢复工具的使用,结合了ORACLE认证考试内容。对SQL优化、系统优化理论介绍,结合生产实践实例化从多个维度介绍案例。从运维实践过程的问题介绍、解决方法、原理分析,包括ORACLE使用的IO、内存、CPU、网络等常见问题及ORACLE自身缺陷等。附加了日常工作常用的巡检工具、常用定位问题脚本。

基础篇 2

ORACLE RAC数据库安装 2

1 虚拟机安装 2

2 创建虚拟设备 5

3 安装Linux系统 7

3.1 光盘挂载 7

3.2 安装操作系统 9

3.3 系统设置 14

4 安装设置Linux操作系统 18

4.1 增加网卡以及共享存储 18

4.2 登录系统 21

4.3 网络配置 22

4.4 Linux安装Oracle RAC补丁包 23

4.5 共享存储配置 23

4.6 修改主机名 26

4.7 修改/etc/hosts 26

4.8 偶数机配置 26

5 安装Oracle集群软件 27

5.1 建安装目录 27

5.2 上传软件 27

5.3 ssh配置 27

5.4 环境变量设置 27

5.5 xmanager设置 28

5.6 集群安装 28

6 数据库安装 34

6.1 软件安装 34

6.2 Netca网络配置 36

6.3 Dbca建数据存储Asm 37

6.4 安装数据库实例 38

6.5 实例启动 41

7 启动和停止RAC数据库 41

7.1 停止数据库 41

7.2 启动数据库 41

7.3 停止CRS 41

7.4 启动CRS 42

ORACLE GRID CONTROL安装 43

1 Grid Control功能 43

1.1 概述 43

1.2 GC功能实现 43

1.3 对数据库实例维护 44

1.4 使用GC创建表空间 46

2 数据库安装 48

2.1 单实例数据库软件安装 48

2.2 建库 50

2.3 监听配置 52

3 GC Server安装 54

3.1 系统修改 54

3.2 GC软件安装 54

3.3 GC安装完成 59

4 GC Agent安装 60

4.1 客户端修改dbsnmp用户状态及口令 60

4.2 修改server端hosts 60

4.3 获取agent安装文件 61

4.4 agent端配置jar文件执行路径 61

4.5 修改agent端dbsnmp用户状态及口令 61

4.6 安装agent端软件 61

5 GC使用 62

5.1 连接地址 62

5.2 添加被监控数据 62

5.3 相同方式RAC2安装GC agent 63

ORACLE RMAN备份恢复 64

1 数据库备份概念 64

1.1 数据备份意义 64

1.2 数据库备份方式 64

1.3 备份策略 64

2 数据库备份的实施 65

2.1 冷备份实施 65

2.2 热备份实施 65

3 文件丢失后的数据库恢复 77

3.1 SPFILE丢失 77

3.2 控制文件丢失 78

3.3 Redolog file丢失 83

3.4 数据文件丢失 84

3.5 表空间丢失 86

4 数据库不完全恢复 86

4.1 基于SCN的恢复 86

4.2 基于日志序列的恢复 87

4.3 基于时间点的恢复 87

ORACLE DATAGUARD部署 89

1 ORACLE DATAGUARD概述 89

1.1 Oracle数据库故障切换与高可用特点 89

1.2 Data Guard系统架构图 89

1.3 Data Guard的资源需求 89

2 命令行配置方法与技术特点 90

2.1 Data Guard的配置步骤 90

3 DataGuard OEM配置 97

3.1 基于RMAN的DataGuard的实施 98

3.2 使用DGBROKER维护DataGuard 103

3.3 使用OEM对数据库维护DataGuard 108

ORACLE数据库管理 116

1 Oracle 10G数据泵EXPDP和IMPDP 116

1.1 expdp使用 116

1.2 调用IMPDP 117

2 传输表空间 117

3 Flashback闪回技术 119

4 Oracle网络配置 121

5 表空间管理 123

5.1 UNDO空间管理 123

5.2 用户表空间管理 123

5.3 日志管理 123

5.4 控制文件管理 124

6 Oracle JOB使用 124

6.1 设置初始化参数job_queue_processes 124

6.2 dbms_job package用法介绍 124

6.3 查看相关job信息 125

6.4 相关注意事项 126

7 分区表的使用 126

7.1 分区表介绍 126

7.2 分区表类型 126

7.3 维护分区表 128

8 分区索引 132

8.1 全局索引 132

8.2 全局分区索引 133

8.3 本地分区索引 133

9 带有LOB字段的表 134

9.1 LOB字段类型特征 134

9.2 LOB类型 134

9.3 Internal LOBs-External LOBs 134

9.4 LOB字段属性 134

9.5 创建带有LOB字段的表 135

9.6 LOB字段在SQL环境操作 135

9.7 LOB字段表空间迁移 135

10 ORACLE SQL*LOADER 135

10.1 SQL*LOADER概念 135

10.2 SQL*LOADER控制文件 137

10.3 SQL*LOADER举例 137

优化篇 140

SQL优化器概述 140

1 SQL优化器介绍 140

2 SQL优化器发展 140

2.1 基于规则的优化方式RBO 140

2.2 基于代价优化器CBO 141

2.3 RBO与CBO对比 146

2.4 SQL优化器模式 148

2.5 修改优化器 149

解读执行计划 150

1 如何获取执行计划 150

1.1 V$SQL_PLAN 150

1.2 EXPLAIN PLAN 151

1.3 AUTOTRACE 151

1.4 DBMS_XPLAN 152

1.5 AWR SQL REPORT 156

1.6 访问路径 157

1.7 连接方式 160

1.8 星型转换(star transformation) 161

1.9 排序合并和HASH连接参数 162

1.10 连接顺序 163

1.11 数据库统计信息 163

1.12 解读执行计划 169

1.13 CBO执行成本评估 180

1.14 使用HINT改变SQL执行 181

调优工具 186

1 SQL相关动态性能视图 186

1.1 v$sql 186

1.2 v$sqlarea 187

1.3 v$sqltext 187

1.4 v$sqlstats 187

1.5 v$sql_plan 187

1.6 10046,tkprof 188

1.7 10053 196

1.8 AWR 204

1.9 ASH 206

1.10 ADDM 207

优化案例 210

1 SQL调优的目标 210

2 缺少索引 211

3 索引设计不合理 212

4 组合索引的使用 213

5 绑定变量造成的执行计划异常 214

6 使用提示固定执行计划 217

7 优化存储过程(dbms_profiler/dbms_trace) 219

8 改写SQL语句 221

SQL优化实践 223

1 SQL优化类型 223

2 SQL语句详情 224

2.1 SQL#1 224

2.2 SQL#2 226

2.3 SQL#3 228

2.4 SQL#4 230

2.5 SQL#5 231

2.6 SQL#6 232

2.7 SQL#7 234

2.8 SQL#8 235

2.9 SQL#9 236

2.10 SQL#10 237

2.11 SQL#11 238

2.12 SQL#12 239

2.13 SQL#13 239

2.14 SQL#14 240

2.15 SQL#15 241

2.16 SQL#16 243

2.17 SQL#18 244

2.18 SQL#20 246

2.19 SQL#21 246

2.20 SQL#22 248

2.21 SQL#23 249

2.22 SQL#24 250

2.23 SQL#25 251

2.24 SQL#26 252

2.25 SQL#27 253

2.26 SQL#30 254

2.27 SQL#32 256

2.28 SQL#37 258

2.29 SQL#38 259

2.30 SQL#39 260

2.31 SQL#40 261

2.32 SQL#41 262

2.33 SQL#42 263

3 SQL语句详情 264

3.1 BSYZDB_SQL_001 264

3.2 BSYZDB_SQL_002 266

3.3 BSYZDB_SQL_003 268

3.4 BSYZDB_SQL_004 271

3.5 BSYZDB_SQL_005 273

3.6 BSYZDB_SQL_006 275

3.7 BSYZDB_SQL_007 277

3.8 BSYZDB_SQL_008 281

3.9 BSYZDB_SQL_009 283

3.10 BSYZDB_SQL_010 284

3.11 BSYZDB_SQL_011 286

3.12 BSYZDB_SQL_012 287

3.13 BSYZDB_SQL_013 288

3.14 BSYZDB_SQL_014 290

3.15 BSYZDB_SQL_015 291

3.16 BSYZDB_SQL_016 292

3.17 BSYZDB_SQL_017 293

3.18 BSYZDB_SQL_018 295

3.19 BSYZDB_SQL_019 297

3.20 BSYZDB_SQL_020 299

3.21 BSYZDB_SQL_021* 300

3.22 BSYZDB_SQL_022* 301

3.23 BSYZDB_SQL_023* 303

3.24 BSYZDB_SQL_024* 304

3.25 CRMDB_SQL_001 305

3.26 CRMDB_SQL_002 306

3.27 CRMDB_SQL_003 308

3.28 CRMDB_SQL_004 310

3.29 CRMDB_SQL_005 312

3.30 CRMDB_SQL_006 313

3.31 CRMDB_SQL_007 315

3.32 CRMDB_SQL_008 316

3.33 CRMDB_SQL_009 317

3.34 CRMDB_SQL_010 318

3.35 CRMDB_SQL_011 320

3.36 CRMDB_SQL_012 321

3.37 CRMDB_SQL_013 322

3.38 CRMDB_SQL_014 324

3.39 CRMDB_SQL_015 325

3.40 CRMDB_SQL_016 326

3.41 CRMDB_SQL_017 328

3.42 CRMDB_SQL_018 330

3.43 CRMDB_SQL_019 331

3.44 CRMDB_SQL_020 333

3.45 CRMDB_SQL_021 334

3.46 CRMDB_SQL_022 335

3.47 CRMDB_SQL_023 336

3.48 CRMDB_SQL_024 337

3.49 CRMDB_SQL_025 338

3.50 CRMDB_SQL_026 339

3.51 CRMDB_SQL_027 340

运维篇 344

ORACLE最佳实践要求和注意事项 344

1 实践要求 344

1.1 应用设计 344

1.2 部署 344

1.3 SQL语句编写 345

1.4 操作系统和主机 347

2 注意事项 347

2.1 一般设计注意事项 347

2.2 网络注意事项 348

2.3 存储注意事项(包括ASM) 348

2.4 虚拟化注意事项 349

2.5 安装注意事项 349

2.6 补丁安装注意事项 349

2.7 升级注意事项 349

2.8 RAC的数据库配置注意事项 349

2.9 性能优化注意事项 350

2.10 数据库网络注意事项 350

2.11 一般数据库注意事项 351

2.12 诊断和故障排除 351

ORACLE体系架构 359

1 ORACLE单实例体系架构 359

1.1 ORACLE体系结构 359

1.2 ORACLE内存结构 359

1.3 ORACLE逻辑结构 361

2 ORACLE RAC体系架构 365

2.1 Oracle RAC/Clusterware的结构和组件 367

2.2 第三方集群 368

2.3 Oracle支持的RAC环境 369

2.4 Oracle Clusterware的心跳 369

2.5 Clusterware的私有网络 370

2.6 Oracle实例的私有网络 370

2.7 常见安装、管理错误 372

ORACLE维护守则 375

1 DBA chechlist 375

2 数据生命周期管理 376

2.1 概要说明 376

2.2 数据生命周期管理建议 376

2.3 数据库数据生命周期管理 376

2.4 实施计划及步骤说明 380

ORACLE ERROR和参数 385

1 ORACLE ERROR概述 385

2 用Oracle表查看报警日志错误 385

3 ORA_ERROR分析 387

4 ORACLE参数设置 387

4.1 PROFILE参数 387

4.2 ORACLE系统参数 391

4.3 ORACLE隐含参数 410

ORACLE中常见等待事件 411

1 等待事件的相关知识 411

1.1 等待事件分类 411

1.2 查看v$event_name视图的字段结构 411

1.3 查看等待事件总数 411

1.4 查看等待事件分类情况 411

1.5 相关的几个视图 412

2 常见的等待事件 412

ORACLE内存管理 423

1 Oracle的内存架构组成 423

1.1 SGA(System Global Area) 423

1.2 PGA(The Process Global Area) 447

1.3 UGA(The User Global Area) 453

1.4 CGA (The Call Global Area) 454

1.5 软件代码区(Software Code Area) 454

2 Oracle的内存管理 454

2.1 Oracle内存管理基础 454

2.2 Oracle的内存的分配、回收 458

2.3 Oracle在UNIX下的内存管理 460

3 内存错误处理 462

3.1 分析定位ORA-4030 462

3.2 分析定位ORA-4031 464

4 SHARED POOL配置 471

4.1 共享SQL语句 471

4.2 shared pool的设置优化 479

4.3 shared pool的统计信息 480

4.4 shared pool的等待事件 480

5 Latch原理 483

6 Mutex原理 489

6.1 Mutex的用途 490

6.2 Mutex替代library cache pin来保护cursor heap 490

6.3 Mutex的统计信息 491

6.5 Mutex的Get和Sleep 492

6.6 理解Mutex相关的等待 493

6.7 Mutex相关的等待事件 493

6.8 Mutex的相关统计视图 494

7 cursor pin S wait on X模拟 494

7.1 场景模拟 494

7.2 解决方法 497

8 Cache buffer chain模拟 498

8.1 实验一 498

8.2 实验二 501

8.3 实验三 502

9 Library Cache Lock/Pin模拟 504

9.1 概念 504

9.2 实验 505

9.3 原因 507

10 buffer busy waits模拟 509

11 绑定变量使用 513

11.1 为什么使用绑定变量 513

11.2 怎样使用绑定变量 514

11.3 怎样知道正在使用绑定变量的方法 516

11.4 绑定变量使用限制条件 517

11.5 查询系统未使用绑定变量 518

12 ORACLE HIT RATIO 518

13 生产系统Latch问题 523

13.1 问题描述 523

13.2 原因分析 523

13.3 解决方法 526

14 ORACLE稳定SQL执行计划 526

14.1 DBMS_SQLTUNE详解---sql_profile 526

14.2 使用SQL Profile固定执行计划示例 528

14.3 生产系统使用SQL Profile固定执行计划实践 530

ORACLE IO使用机制 535

1 Oracle IO使用 535

1.1 Oracle中IO的产生 535

1.2 逻辑读 539

2 db file sequential read产生 574

3 TEMP表空间满的问题 577

4 ORA-1652:unable to extend temp segment诊断以及解决 580

5 Archive log归档日志文件已满情况的处理 582

6 ORA-00313 ORA-00312联机日志文件丢失或损坏的处理方法 586

7 10g LOGMINER使用方法 588

ORACLE RAC GC问题 591

1 Oracle rac架构 591

2 模拟gc buffer busy等待事件 592

3 GC问题分析 593

3.1 原因 593

3.2 解决方法 594

4 引用案例分享 594

4.1 gcbufferbusy acquire案例 594

5 生产系统gc buffer busy案例 595

5.1 问题分析 595

5.2 解决建议 599

6 RAC gc buffer busy热点块查找 600

6.1 通过ASH方法查找热点块 600

6.2 通过AWR方法查找热点块 602

6.3 减少GC应用分类方法 604

7 RAC GC性能监控 606

7.1 监控GC事件级别的变化 606

7.2 监控GC的性能 609

7.3 监控GC处理时间 612

8 DRM案例与分析 615

8.1 DRM原理 615

8.2 DRM参数 616

8.3 UNDO AFFINITY 617

ORACLE RAC FAILOVER配置 619

1 ORACLE Failover原理 619

1.1 Client-Side Connect Time Failover 619

1 2 TAF(Transparent Application Failover) 619

1.3 Service-Side TAF 620

1.4 srvctl命令测试实例 622

2 生产系统ORACLE Failover配置实践 624

2.1 Service配置步骤 624

2.2 Service启动停止操作 624

2.3 注意事项 625

2.4 测试场景 625

ORACLE RAC修改IP/VIP及VIP漂移 626

1 修改IP 626

2 Oracle rac vip漂移处理 627

3 Oracle RAC更改VIP/IP地址2节点的实验 628

ORACLE RAC OCR/VOTING DISK管理 630

1 10g RAC下OCR和Voting disk的管理 630

2 11g RAC中OCR及Voting Disk管理 631

3 10g RAC更换共享磁盘(ocr,voting disk)的方法 633

4 10g OCR及Voting disk的备份 635

ORACLE的锁机制与问题 638

1 锁的概念 638

1.1 作用 638

1.2 分类 638

1.3 表级锁(TM锁) 639

1.4 行级锁(TX锁) 641

1.5 锁阻塞模拟 643

1.6 监控系统中的锁 645

1.7 死锁的产生与避免 646

2 Enqueue概念 647

3 Enqueue TX模拟 651

3.1 模拟enq:TX-contention 651

3.2 模拟enq:TX-index contention wait 653

3.3 模拟enq:TX-row lock contention 654

3.4 模拟enq:TX-allocate ITL entry 657

4 生产系统enq:CF-contention问题 662

4.1 问题描述 662

4.2 原因分析 662

4.3 解决方法 664

5 生产系统enqueue问题及解决方法 664

5.1 ORACLE内部锁 664

5.2 enq:TX-row lock contention处理方法 665

5.3 enq:TX-allocate ITL entry处理方法 668

5.4 enq:SQ-contention处理 668

ORACLE UNDO机制与使用 670

1 Oracle undo机制 670

1.1 undo原理 670

1.2 undo作用 672

2 Oracle undo管理 674

2.1 Undo的方式 674

2.2 管理undo tablespace 675

2.3 管理回滚段 676

3 Oracle undo监控 678

3.1 监控UNDO I/O性能 678

3.2 优化undo segment 679

3.3 典型错误:ORA-01555 SNAPSHOT TOO OLD 679

4 Oracle undo过度使用案例 681

4.1 问题描述 681

4.2 解决步骤 681

4.3 UNDO表空间100% 682

4.4 Undo tablespace使用率100%原因 683

4.5 enq:US-contention 684

5 Oracle undo IMU机制 684

6 大事务回滚 686

6.1 大事务回滚监控 686

6.2 大事务回滚案例 688

6.3 Oracle前滚/后滚 688

ORACLE表碎片查看及处理 691

1 ORACLE表碎片 691

1.1 水位线 691

1.2 行链接(Row Chaining)与行迁移(Row Migration) 699

2 ORACLE索引碎片 704

2.1 查看系统表中的用户索引 704

2.2 索引的存储情况检查 704

2.3 索引的选择性 705

2.4 确定索引的实际碎片 706

3 生产系统ORACLE对象碎片处理方法 706

3.1 空间管理 706

3.2 生产数据库表情况 708

3.3 数据库表消除碎片 710

ORACLE数据块损坏的处理 714

1 数据库数据坏块常用处理方法 714

1.1 坏块产生的原因 714

1.2 坏块的预防 714

1.3 坏块故障的识别 715

1.4 Oracle数据块损坏恢复总结 715

1.5 如何查找坏块所含的数据表名称和数据的rowid 716

1.6 如何模拟坏块 716

1.7 用dbms_repair来处理 717

1.8 设置内部事件使exp跳过坏块 719

2 BBED工具 720

2.1 BBED工具介绍 720

2.2 BBED工具实验 721

3 生产系统数据库数据坏块处理实践 728

3.1 故障描述 728

3.2 原因分析 728

3.3 解决方法 729

ORACLE维护常用的脚本 731

1 检查补丁冲突 731

2 ORA600-7445 TRACE分析 731

3 隐含参数 731

4 session_cache_cursor,open_cursor 732

5 检查SHARED_POOL 732

6 检查PGA 736

7 日志信息 738

8 检查大事务 739

9 检查latch 740

10 检查enqueue 742

11 SESSION INFO 749

12 Wait info 751

13 段信息 753

14 表空间信息 753

15 排序信息 757

16 library cache 757

17 统计数据变化量 761

18 管理schedule 761

19 ASH 762

20 统计信息 768

21 RMAN 768

22 案例总结 769

23 HPUX内核参数监控 782