内容简介
基础篇
ORACLE RAC数据库安装
1 虚拟机安装
2 创建虚拟设备
3 安装Linux系统
3.1 光盘挂载
3.2 安装操作系统
3.3 系统设置
4 安装设置Linux操作系统
4.1 增加网卡以及共享存储
4.2 登录系统
4.3 网络配置
4.4 Linux安装Oracle RAC补丁包
4.5 共享存储配置
4.6 修改主机名
4.7 修改/etc/hosts
4.8 偶数机配置
5 安装Oracle集群软件
5.1 建安装目录
5.2 上传软件
5.3 ssh配置
5.4 环境变量设置
5.5 xmanager设置
5.6 集群安装
6 数据库安装
6.1 软件安装
6.2 Netca网络配置
6.3 Dbca建数据存储Asm
6.4 安装数据库实例
6.5 实例启动
7 启动和停止RAC数据库
7.1 停止数据库
7.2 启动数据库
7.3 停止CRS
7.4 启动CRS
ORACLE GRID CONTROL安装
1 Grid Control功能
1.1 概述
1.2 GC功能实现
1.3 对数据库实例维护
1.4 使用GC创建表空间
2 数据库安装
2.1 单实例数据库软件安装
2.2 建库
2.3 监听配置
3 GC Server安装
3.1 系统修改
3.2 GC软件安装
3.3 GC安装完成
4 GC Agent安装
4.1 客户端修改dbsnmp用户状态及口令
4.2 修改server端hosts
4.3 获取agent安装文件
4.4 agent端配置jar文件执行路径
4.5 修改agent端dbsnmp用户状态及口令
4.6 安装agent端软件
5 GC使用
5.1 连接地址
5.2 添加被监控数据
5.3 相同方式RAC2安装GC agent
ORACLE RMAN备份恢复
1 数据库备份概念
1.1 数据备份意义
1.2 数据库备份方式
1.3 备份策略
2 数据库备份的实施
2.1 冷备份实施
2.2 热备份实施
3 文件丢失后的数据库恢复
3.1 SPFILE丢失
3.2 控制文件丢失
3.3 Redolog file丢失
3.4 数据文件丢失
3.5 表空间丢失
4 数据库不完全恢复
4.1 基于SCN的恢复
4.2 基于日志序列的恢复
4.3 基于时间点的恢复
ORACLE DATAGUARD部署
1 ORACLE DATAGUARD概述
1.1 Oracle数据库故障切换与高可用特点
1.2 Data Guard系统架构图
1.3 Data Guard的资源需求
2 命令行配置方法与技术特点
2.1 Data Guard的配置步骤
3 DataGuard OEM配置
3.1 基于RMAN的DataGuard的实施
3.2 使用DGBROKER维护DataGuard
3.3 使用OEM对数据库维护DataGuard
ORACLE数据库管理
1 Oracle 10G数据泵EXPDP和IMPDP
1.1 expdp使用
1.2 调用IMPDP
2 传输表空间
3 Flashback闪回技术
4 Oracle网络配置
5 表空间管理
5.1 UNDO空间管理
5.2 用户表空间管理
5.3 日志管理
5.4 控制文件管理
6 Oracle JOB使用
6.1 设置初始化参数job_queue_processes
6.2 dbms_job package用法介绍
6.3 查看相关job信息
6.4 相关注意事项
7 分区表的使用
7.1 分区表介绍
7.2 分区表类型
7.3 维护分区表
8 分区索引
8.1 全局索引
8.2 全局分区索引
8.3 本地分区索引
9 带有LOB字段的表
9.1 LOB字段类型特征
9.2 LOB类型
9.3 Internal LOBs-External LOBs
9.4 LOB字段属性
9.5 创建带有LOB字段的表
9.6 LOB字段在SQL环境操作
9.7 LOB字段表空间迁移
10 ORACLE SQL*LOADER
10.1 SQL*LOADER概念
10.2 SQL*LOADER控制文件
10.3 SQL*LOADER举例
优化篇
SQL优化器概述
1 SQL优化器介绍
2 SQL优化器发展
2.1 基于规则的优化方式RBO
2.2 基于代价优化器CBO
2.3 RBO与CBO对比
2.4 SQL优化器模式
2.5 修改优化器
解读执行计划
1 如何获取执行计划
1.1 V$SQL_PLAN
1.2 EXPLAIN PLAN
1.3 AUTOTRACE
1.4 DBMS_XPLAN
1.5 AWR SQL REPORT
1.6 访问路径
1.7 连接方式
1.8 星型转换(star transformation)
1.9 排序合并和HASH连接参数
1.10 连接顺序
1.11 数据库统计信息
1.12 解读执行计划
1.13 CBO执行成本评估
1.14 使用HINT改变SQL执行
调优工具
1 SQL相关动态性能视图
1.1 v$sql
1.2 v$sqlarea
1.3 v$sqltext
1.4 v$sqlstats
1.5 v$sql_plan
1.6 10046,tkprof
1.7 10053
1.8 AWR
1.9 ASH
1.10 ADDM
优化案例
1 SQL调优的目标
2 缺少索引
3 索引设计不合理
4 组合索引的使用
5 绑定变量造成的执行计划异常
6 使用提示固定执行计划
7 优化存储过程(dbms_profiler/dbms_trace)
8 改写SQL语句
SQL优化实践
1 SQL优化类型
2 SQL语句详情
2.1 SQL#1
2.2 SQL#2
2.3 SQL#3
2.4 SQL#4
2.5 SQL#5
2.6 SQL#6
2.7 SQL#7
2.8 SQL#8
2.9 SQL#9
2.10 SQL#10
2.11 SQL#11
2.12 SQL#12
2.13 SQL#13
2.14 SQL#14
2.15 SQL#15
2.16 SQL#16
2.17 SQL#18
2.18 SQL#20
2.19 SQL#21
2.20 SQL#22
2.21 SQL#23
2.22 SQL#24
2.23 SQL#25
2.24 SQL#26
2.25 SQL#27
2.26 SQL#30
2.27 SQL#32
2.28 SQL#37
2.29 SQL#38
2.30 SQL#39
2.31 SQL#40
2.32 SQL#41
2.33 SQL#42
3 SQL语句详情
3.1 BSYZDB_SQL_001
3.2 BSYZDB_SQL_002
3.3 BSYZDB_SQL_003
3.4 BSYZDB_SQL_004
3.5 BSYZDB_SQL_005
3.6 BSYZDB_SQL_006
3.7 BSYZDB_SQL_007
3.8 BSYZDB_SQL_008
3.9 BSYZDB_SQL_009
3.10 BSYZDB_SQL_010
3.11 BSYZDB_SQL_011
3.12 BSYZDB_SQL_012
3.13 BSYZDB_SQL_013
3.14 BSYZDB_SQL_014
3.15 BSYZDB_SQL_015
3.16 BSYZDB_SQL_016
3.17 BSYZDB_SQL_017
3.18 BSYZDB_SQL_018
3.19 BSYZDB_SQL_019
3.20 BSYZDB_SQL_020
3.21 BSYZDB_SQL_021*
3.22 BSYZDB_SQL_022*
3.23 BSYZDB_SQL_023*
3.24 BSYZDB_SQL_024*
3.25 CRMDB_SQL_001
3.26 CRMDB_SQL_002
3.27 CRMDB_SQL_003
3.28 CRMDB_SQL_004
3.29 CRMDB_SQL_005
3.30 CRMDB_SQL_006
3.31 CRMDB_SQL_007
3.32 CRMDB_SQL_008
3.33 CRMDB_SQL_009
3.34 CRMDB_SQL_010
3.35 CRMDB_SQL_011
3.36 CRMDB_SQL_012
3.37 CRMDB_SQL_013
3.38 CRMDB_SQL_014
3.39 CRMDB_SQL_015
3.40 CRMDB_SQL_016
3.41 CRMDB_SQL_017
3.42 CRMDB_SQL_018
3.43 CRMDB_SQL_019
3.44 CRMDB_SQL_020
3.45 CRMDB_SQL_021
3.46 CRMDB_SQL_022
3.47 CRMDB_SQL_023
3.48 CRMDB_SQL_024
3.49 CRMDB_SQL_025
3.50 CRMDB_SQL_026
3.51 CRMDB_SQL_027
运维篇
ORACLE最佳实践要求和注意事项
1 实践要求
1.1 应用设计
1.2 部署
1.3 SQL语句编写
1.4 操作系统和主机
2 注意事项
2.1 一般设计注意事项
2.2 网络注意事项
2.3 存储注意事项(包括ASM)
2.4 虚拟化注意事项
2.5 安装注意事项
2.6 补丁安装注意事项
2.7 升级注意事项
2.8 RAC的数据库配置注意事项
2.9 性能优化注意事项
2.10 数据库网络注意事项
2.11 一般数据库注意事项
2.12 诊断和故障排除
ORACLE体系架构
1 ORACLE单实例体系架构
1.1 ORACLE体系结构
1.2 ORACLE内存结构
1.3 ORACLE逻辑结构
2 ORACLE RAC体系架构
2.1 Oracle RAC/Clusterware的结构和组件
2.2 第三方集群
2.3 Oracle支持的RAC环境
2.4 Oracle Clusterware的心跳
2.5 Clusterware的私有网络
2.6 Oracle实例的私有网络
2.7 常见安装、管理错误
ORACLE维护守则
1 DBA chechlist
2 数据生命周期管理
2.1 概要说明
2.2 数据生命周期管理建议
2.3 数据库数据生命周期管理
2.4 实施计划及步骤说明
ORACLE ERROR和参数
1 ORACLE ERROR概述
2 用Oracle表查看报警日志错误
3 ORA_ERROR分析
4 ORACLE参数设置
4.1 PROFILE参数
4.2 ORACLE系统参数
4.3 ORACLE隐含参数
ORACLE中常见等待事件
1 等待事件的相关知识
1.1 等待事件分类
1.2 查看v$event_name视图的字段结构
1.3 查看等待事件总数
1.4 查看等待事件分类情况
1.5 相关的几个视图
2 常见的等待事件
ORACLE内存管理
1 Oracle的内存架构组成
1.1 SGA(System Global Area)
1.2 PGA(The Process Global Area)
1.3 UGA(The User Global Area)
1.4 CGA (The Call Global Area)
1.5 软件代码区(Software Code Area)
2 Oracle的内存管理
2.1 Oracle内存管理基础
2.2 Oracle的内存的分配、回收
2.3 Oracle在UNIX下的内存管理
3 内存错误处理
3.1 分析定位ORA-4030
3.2 分析定位ORA-4031
4 SHARED POOL配置
4.1 共享SQL语句
4.2 shared pool的设置优化
4.3 shared pool的统计信息
4.4 shared pool的等待事件
5 Latch原理
6 Mutex原理
6.1 Mutex的用途
6.2 Mutex替代library cache pin来保护cursor heap
6.3 Mutex的统计信息
6.5 Mutex的Get和Sleep
6.6 理解Mutex相关的等待
6.7 Mutex相关的等待事件
6.8 Mutex的相关统计视图
7 cursor pin S wait on X模拟
7.1 场景模拟
7.2 解决方法
8 Cache buffer chain模拟
8.1 实验一
8.2 实验二
8.3 实验三
9 Library Cache Lock/Pin模拟
9.1 概念
9.2 实验
9.3 原因
10 buffer busy waits模拟
11 绑定变量使用
11.1 为什么使用绑定变量
11.2 怎样使用绑定变量
11.3 怎样知道正在使用绑定变量的方法
11.4 绑定变量使用限制条件
11.5 查询系统未使用绑定变量
12 ORACLE HIT RATIO
13 生产系统Latch问题
13.1 问题描述
13.2 原因分析
13.3 解决方法
14 ORACLE稳定SQL执行计划
14.1 DBMS_SQLTUNE详解---sql_profile
14.2 使用SQL Profile固定执行计划示例
14.3 生产系统使用SQL Profile固定执行计划实践
ORACLE IO使用机制
1 Oracle IO使用
1.1 Oracle中IO的产生
1.2 逻辑读
2 db file sequential read产生
3 TEMP表空间满的问题
4 ORA-1652:unable to extend temp segment诊断以及解决
5 Archive log归档日志文件已满情况的处理
6 ORA-00313 ORA-00312联机日志文件丢失或损坏的处理方法
7 10g LOGMINER使用方法
ORACLE RAC GC问题
1 Oracle rac架构
2 模拟gc buffer busy等待事件
3 GC问题分析
3.1 原因
3.2 解决方法
4 引用案例分享
4.1 gcbufferbusy acquire案例
5 生产系统gc buffer busy案例
5.1 问题分析
5.2 解决建议
6 RAC gc buffer busy热点块查找
6.1 通过ASH方法查找热点块
6.2 通过AWR方法查找热点块
6.3 减少GC应用分类方法
7 RAC GC性能监控
7.1 监控GC事件级别的变化
7.2 监控GC的性能
7.3 监控GC处理时间
8 DRM案例与分析
8.1 DRM原理
8.2 DRM参数
8.3 UNDO AFFINITY
ORACLE RAC FAILOVER配置
1 ORACLE Failover原理
1.1 Client-Side Connect Time Failover
1 2 TAF(Transparent Application Failover)
1.3 Service-Side TAF
1.4 srvctl命令测试实例
2 生产系统ORACLE Failover配置实践
2.1 Service配置步骤
2.2 Service启动停止操作
2.3 注意事项
2.4 测试场景
ORACLE RAC修改IP/VIP及VIP漂移
1 修改IP
2 Oracle rac vip漂移处理
3 Oracle RAC更改VIP/IP地址2节点的实验
ORACLE RAC OCR/VOTING DISK管理
1 10g RAC下OCR和Voting disk的管理
2 11g RAC中OCR及Voting Disk管理
3 10g RAC更换共享磁盘(ocr,voting disk)的方法
4 10g OCR及Voting disk的备份
ORACLE的锁机制与问题
1 锁的概念
1.1 作用
1.2 分类
1.3 表级锁(TM锁)
1.4 行级锁(TX锁)
1.5 锁阻塞模拟
1.6 监控系统中的锁
1.7 死锁的产生与避免
2 Enqueue概念
3 Enqueue TX模拟
3.1 模拟enq:TX-contention
3.2 模拟enq:TX-index contention wait
3.3 模拟enq:TX-row lock contention
3.4 模拟enq:TX-allocate ITL entry
4 生产系统enq:CF-contention问题
4.1 问题描述
4.2 原因分析
4.3 解决方法
5 生产系统enqueue问题及解决方法
5.1 ORACLE内部锁
5.2 enq:TX-row lock contention处理方法
5.3 enq:TX-allocate ITL entry处理方法
5.4 enq:SQ-contention处理
ORACLE UNDO机制与使用
1 Oracle undo机制
1.1 undo原理
1.2 undo作用
2 Oracle undo管理
2.1 Undo的方式
2.2 管理undo tablespace
2.3 管理回滚段
3 Oracle undo监控
3.1 监控UNDO I/O性能
3.2 优化undo segment
3.3 典型错误:ORA-01555 SNAPSHOT TOO OLD
4 Oracle undo过度使用案例
4.1 问题描述
4.2 解决步骤
4.3 UNDO表空间100%
4.4 Undo tablespace使用率100%原因
4.5 enq:US-contention
5 Oracle undo IMU机制
6 大事务回滚
6.1 大事务回滚监控
6.2 大事务回滚案例
6.3 Oracle前滚/后滚
ORACLE表碎片查看及处理
1 ORACLE表碎片
1.1 水位线
1.2 行链接(Row Chaining)与行迁移(Row Migration)
2 ORACLE索引碎片
2.1 查看系统表中的用户索引
2.2 索引的存储情况检查
2.3 索引的选择性
2.4 确定索引的实际碎片
3 生产系统ORACLE对象碎片处理方法
3.1 空间管理
3.2 生产数据库表情况
3.3 数据库表消除碎片
ORACLE数据块损坏的处理
1 数据库数据坏块常用处理方法
1.1 坏块产生的原因
1.2 坏块的预防
1.3 坏块故障的识别
1.4 Oracle数据块损坏恢复总结
1.5 如何查找坏块所含的数据表名称和数据的rowid
1.6 如何模拟坏块
1.7 用dbms_repair来处理
1.8 设置内部事件使exp跳过坏块
2 BBED工具
2.1 BBED工具介绍
2.2 BBED工具实验
3 生产系统数据库数据坏块处理实践
3.1 故障描述
3.2 原因分析
3.3 解决方法
ORACLE维护常用的脚本
1 检查补丁冲突
2 ORA600-7445 TRACE分析
3 隐含参数
4 session_cache_cursor,open_cursor
5 检查SHARED_POOL
6 检查PGA
7 日志信息
8 检查大事务
9 检查latch
10 检查enqueue
11 SESSION INFO
12 Wait info
13 段信息
14 表空间信息
15 排序信息
16 library cache
17 统计数据变化量
18 管理schedule
19 ASH
20 统计信息
21 RMAN
22 案例总结
23 HPUX内核参数监控