我的个人信息
- 网名:小麦苗
- QQ:646634621
- QQ群:618766405
- 我的博客:http://blog.itpub.net/26736162/abstract/1/
- 微信公众号:xiaomaimiaolhr,二维码如下:
- 小麦苗的微信二维码如下所示,加我时请备注相关信息:
- 我的微店地址:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail
- ?小麦苗出版的数据库类丛书:http://blog.itpub.net/26736162/viewspace-2142121/
- 博客链接:http://blog.itpub.net/26736162/viewspace-2152182/
-
现有课程
课程名称
课时
上课时间(可根据情况调整)
OCP(从入门到专家)
每年1-2期,35课时左右/期
每周一、周三、周四、周六
20:00-22:00
OCM认证
每年N期,9课时/期
每周二、周五
20:00-22:00
高可用课程(rac+dg+ogg)
未定
未定
未定
注意:
- 每次上课前30分钟答疑。
- OCM实时答疑,提供和考试一样的练习环境。
- 授课方式:YY语音直播 + QQ互动答疑 + 视频复习。
- OCP课时可以根据大家学习情况进行增加或缩减。
- OCP报名可以循环听课,但最多不得超过3期课。
-
12c OCM课程私聊
-
OCM
【OCM】想考11g和12c OCM的小伙伴可以和我(lhrbestxh)私聊,非诚勿扰。11g OCM可以保证最低学费、最快训练速度和100%的通过率,非诚勿扰。
-
11g OCM考试内容思维导图
-
第一场
-
-
第二场
-
第三场
-
第四场
-
第五场
-
第六场
-
第七场
-
第八场
-
第九场
-
12c OCM
若要考12C OCM请私聊。
-
OCM培训说明连接
OCM培训说明连接:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA
-
OCP
-
OCP培训说明网络连接
OCP培训说明连接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA
-
讲课资料及视频下载地址
小麦苗OCP课程讲课资料下载地址:https://share.weiyun.com/a218681375a20d9be37f626fded2d626
小麦苗分享的其它资料: https://share.weiyun.com/5UZtOLs
永久更新地址:http://blog.itpub.net/26736162/viewspace-1624453/
-
OCP讲课文档
-
OCP第1期相关视频说明
- 小麦苗OCP 11g课程第1节--RHEL5.5的安装和基本配置(使用逻辑卷):https://v.qq.com/x/page/u0534y1g6u3.html
- 小麦苗OCP 11g课程第2节--数据库软件的图形化安装和静默安装,MD5,配置YUM源,安装rlwrap软件:https://v.qq.com/x/page/m05348z2s4v.html
- 小麦苗OCP 11g课程第3节--图形化建库、静默建库、静默删库、干净地卸载数据库软件、配置数据库资源开机启动、pmap、判断数据库位数等:https://v.qq.com/x/page/x0535r1ucah.html
- 【已加密】小麦苗OCP 11g课程第4节--SQL语句的分类,如何查看在线和离线文档、sqlplus的使用和设置(导出csv和html文件)、ERRORLOGGING的作用
- 【已加密】小麦苗OCP 11g课程第5节--基本SELECT语句的写法,NULL的注意事项,Quote (q)语法、模糊查询、WHERE子句和排序
- 小麦苗OCP 11g课程第6节--IS NULL走索引,LIKE模糊查询走索引,DUAL表详解(包括恢复),Oracle中的函数、隐式类型转换:https://v.qq.com/x/page/s0540b5ih94.html
- 小麦苗OCP 11g课程第7节--函数的高级应用,组函数,COUNT的用法和区别,MAX和MIN优化写法:http://v.qq.com/x/page/l0540f9nhgh.html
- 【已加密】小麦苗OCP 11g课程第8节--多表连接、笛卡儿积、层次查询(树形查询)、WITH语法、子查询、合并查询(集合查询)、connect by和笛卡儿积快速构造大表
- 【已加密】小麦苗OCP 11g课程第9节--创建和管理表、数据字典、数据类型介绍、操作数据(INSERT、UPDATE、DELETE、MERGE)、DML语句优化的方法
- 【已加密】小麦苗OCP 11g课程第10节--约束、视图、外键约束必须创建索引(死锁)、Top-N 分析、物化视图简介
- 【已加密】小麦苗OCP 11g课程第11节--序列、索引、同义词、DBLINK、为什么索引没有被使用、哪些操作会导致索引失效、监控索引的使用、预估索引的大小、索引的选择性
- 【已加密】小麦苗OCP 11g课程第12节--匿名块、存储过程、函数、包的开发、异常处理、自治事务、分批提交DML、利用触发器完成一些监控功能、存储过程和函数返回集合类型
- 小麦苗OCP 11g课程第13节--ASM的安装和配置、磁盘组的简单维护、创建ASM磁盘的几种常见方式(asmlib)、静默安装GRID软件、EM的创建和使用、如何查看磁盘是否包含数据、如何让crs_stat命令显示完整、kfod命令等:http://v.qq.com/x/page/s0560te3pju.html
- 【已加密】小麦苗OCP 11g课程第14节--体系结构(内存结构、进程结构、存储结构)--内存组件(SGA+PGA)、数据库和实例的区别、ASMM和AMM、归档模式的切换、多路复用控制文件等
- 小麦苗OCP 11g课程第15节--EM的维护、参数文件(spfile和pfile)、启动和关闭、告警日志、Oracle Restart(重点)等:http://v.qq.com/x/page/j06000r2u4a.html
- 【已加密】小麦苗OCP 11g课程第16节--ASM相关维护(磁盘组、OS和ASM文件格式转换)等
- 【已加密】小麦苗OCP 11g课程第17节--Oracle网络管理(动态注册和静态注册、限定IP访问、sqlnet.ora、listener.ora、tnsnames.ora文件的作用、TWO_TASK、SYS登录报权限不足、ORA-12547等)
- 【已加密】小麦苗OCP 11g课程第18节--表空间和数据文件管理(bigfile、OMF、表空间大小查询、表空间扩展、表空间配额、移动数据文件、如何删除表空间数据文件)
- 【已加密】小麦苗OCP 11g课程第19节--数据库用户管理、权限和角色、密码文件(Oracle的两种认证方式等等)
- 【已加密】小麦苗OCP 11g课程第20节--锁和会话(视图之间的关联关系、如何彻底杀掉会话等)、Undo(作用,存储内容、快清除、ORA-01555)、审计(分类,FGA审计、sysdba审计、AUD$表迁移等)
- 【已加密】小麦苗OCP 11g课程第21节--AWR(如何获取和阅读)、ASH(如何诊断系统问题)、ADDM、统计信息(学好SQL优化必修的一节课)等
- 【已加密】小麦苗OCP 11g课程第22节--exp、imp(从dmp文件获取相关信息,例如查看字符集,延迟段创建等)、数据泵expdp和impdp(彻底停止expdp,exclude、include,TTS,network_link,expdp卡死等)等
- 【已加密】小麦苗OCP 11g课程第23节--sqlldr(各种错误处理、酒店开房数据导入)、外部表(字符集设置)、补丁集更新(PSU、one-off补丁、热补丁)
- 【已加密】小麦苗OCP 11g课程第24节--故障类别、SCN(系统检查点SCN、文件检查点SCN、开始SCN和结束SCN)、实例恢复(前滚和回滚)、闪回体系(包括7种闪回技术及其原理)、DBA_SOURCE的使用
- 【已加密】小麦苗OCP 11g课程第25节--延迟段创建导致不能导出空表(只在11.2.0.1中存在)、RMAN简介及其常用命令(show all的配置、list、report、delete等)、备份恢复的类型
- 【已加密】小麦苗OCP 11g课程第26节--catalog库、RMAN备份(累积和差异增量备份)、块改变跟踪、备份脚本分享、定时任务(crontab + windows下的任务计划)
- 【已加密】小麦苗OCP 11g课程第27节--密码文件恢复、spfile恢复、控制文件恢复、在线redo和归档文件的恢复、v$archived_log的清理
- 【已加密】小麦苗OCP 11g课程第28节--数据文件恢复、表空间恢复(Undo表空间的恢复)、DRA(数据恢复顾问)、rm -rf误操作的恢复过程、TRUNCATE恢复方法、在丢失归档的情况下如何进行数据文件的恢复
- 【已加密】小麦苗OCP 11g课程第29节--日志挖掘logminer、bbed简介、坏块的检测(dbv、rman等)和恢复(BMR、bbed等)、如何确定坏块的对象名、OS备份(冷备和热备及其恢复)、非归档模式备份和恢复、RESETLOGS和NORESETLOGS区别、跨版本恢复、只存在备份片的恢复、恢复流程图
- 【已加密】小麦苗OCP 11g课程第30节--实验课(数据泵之NETWORK_LINK、duplicate from active复制数据库ASM到FS、TSPITR(表空间基于时间点恢复)、TTS(传输表空间))、测试库搭建等
- 【已加密】小麦苗OCP 11g课程第31节--JOB(DBMS_JOB、DBMS_SCHEDULER、创建删除JOB、是否正在运行、运行日志、故障处理)、分区表(分区类型、分区表查询优化、索引失效、普通表转换为分区表有哪些办法、压缩分区、分区表收集统计信息)
-
OCP培训课程大纲
注:
-
- 1学时=1小时
- 1课时=1次课=2学时=2小时
-
安装与卸载
课程模块
培训要点
学时
VMware Workstation虚拟机的相关知识
- 安装和卸载
- 版本介绍(32位和64位)
- 网络配置(配置固定IP地址并且可以上外网)
- 快照的介绍
- VMware Tools
- 主机和虚拟机资源共享
- 主机和虚拟机时间同步
- 虚拟机的配置文件
0.5
Linux的安装(RHEL 5.5)
- 逻辑卷的管理方式
- 用户的环境变量配置
- PS1环境变量的作用
- su - oracle和su oracle的区别
- 网络环境的简单配置(配置固定IP地址并且可以上外网)、防火墙的配置
- 学会修改主机名
- MD5值的简介和计算
- 其它OS知识
1.5
Oracle软件单机安装
- 让Oracle DB、监听和oem开机启动(dbstart)
- 配置sudo
- 图形界面和静默方式安装单机软件
1
Oracle ASM的安装
- GI的基本安装和配置(图形界面+静默安装)
-
创建ASM磁盘的几种方式演示
- Faking方式
- /etc/sysconfig/rawdevices配置raw
- Udev方式
- ASMLIB方式
- 如何查看磁盘是否包含数据(lquerypv、hexdump)
- 添加loop设备的方法
- 如何让crs_stat命令显示完整
- 静默创建ASM实例和grid用户的监听
- 命令创建OEM:emca -config dbcontrol db -repos recreate
2
Oracle监听和TNS的简单配置
- 学会使用netmgr
- 静默创建监听
0.1
删除数据库的几种方式
- dbca -silent
- DROP DATABASE;
0.2
创建数据库
- DBCA图形创建
-
静默创建
- 如何设置静默创建数据库为归档模式
- 静默建库常见问题的处理
- 手动创建数据库
0.5
管理工具介绍
- PLSQL Developer软件使用
- 学会安装Windows和Linux下的绿色版的Oracle客户端软件
- 绿色版SecureCRT和SecureFX
- Xshell调用图形界面
0.5
Oracle软件的卸载
- Windows平台(主要是清理注册表)
- Linux平台
0.5
其它内容
- 如何判断Oracle是32位还是64位?
- 在多个不同版本的数据库情况下,如何确定实例的ORACLE_HOME地址?
0.5
-
SQL基础部分
课程模块
培训要点
学时
SQL简介及分类
- SQL语句的分类
- COMMIT的类型
- 教会如何查看在线和离线官方文档
0.5
SQL*Plus
- 如何导出csv、xls文件
- 如何导出漂亮的html文件
- 如何使用上下左右方向键
- 执行脚本时的搜寻路径
- @与@@、&与&&的区别
- glogin.sql文件的作用,如何修改命令提示符?
- ERRORLOGGING的作用
- sqlplus调用SQL脚本
- shell、bat调用sqlplus命令执行SQL命令
- 把sqlplus执行结果传递给shell
- 把shell程序参数传递给sqlplus
- 为了安全要求每次执行shell都手工输入密码
- 为了安全从文件读取密码
- sqlplus中将行转为列输出
- 登录SQL*Plus的几种方式(EZCONNECT方式)
- 安装SQL*Plus的帮助脚本
0.5
基本SELECT语句
- 语法
- 别名
- 运算符
- 去重
-
空值
- NULL的注意事项,例如如果子查询结果中包含NULL值,那么NOT IN (NULL、AA、BB、CC)返回为空。
- IS NULL 走索引
- Quote (q)语法
- Oracle特殊字符的处理
0.5
WHERE条件和排序
-
条件
- 条件中使用字符串和日期
-
比较条件
-
模糊查询
- 1.LIKE模糊查询如何使用索引
- 2.如何搜索包括%和_符号的行
- IN和OR(IN中最多支持1000个列举项)
- BETWEEN(between包括边界值)
- 使用NULL/NOT NULL条件
- 逻辑条件(AND、OR 、NOT)--注意添加括号,防止形成笛卡儿积
-
-
排序
- 升序(ASC)
- 降序(DESC)
- 列别名排序
- 多列排序
0.5
连接类型
- 交叉连接(笛卡儿积)
-
内连接(简单连接)
-
等值连接
- 自然连接
- 自连接
- 非等值连接
-
-
外连接
- 左外连接
- 右外连接
- 全外连接
0.2
查询分类
-
子查询
-
主查询和子查询的关系
- 标量子查询---性能问题
-
关联子查询(标准子查询)
- 相关子查询
- 非相关子查询(独立子查询)
-
返回的行数
- 单行子查询
- 多行子查询
-
返回的列数
- 单列子查询
- 多列子查询
- 子查询中的IN和EXISTS
-
- 主查询
0.2
合并查询(集合查询)
- UNION
- UNION ALL
- INTERSECT
- MINUS
- 应用
0.2
函数
-
单行函数
- 字符函数
- 数字函数
- 日期函数
- 转换函数(隐式类型转换(字符列的值应该加上单引号))
- 通用函数
- 条件表达式有 CASE表达式、DECODE 函数
-
多行函数(组函数)
- 组函数的概念及应用
- AVG、SUM、MAX、MIN(MAX和MIN的优化写法)
- COUNT
- DISTINCT
- GROUP BY和HAVING
- 嵌套组函数
-
扩展内容
- 如何将一个数字转换为字符串并且按照指定格式显示?
- ORA-00904: "wm_concat":invalid identifier错误解决
- 如何判断一个字符串是否含有中文汉字?
- 如何让日期显示为"年-月-日时:分:秒"的格式?
- NLS_LANGUAGE的使用
- 如何判断当天是否月份最后一天?
- COUNT(1)、COUNT(*)、COUNT(常量)、COUNT(主键)、COUNT(ROWID)、COUNT(非空列)、COUNT(允许为空列)、COUNT(DISTINCT 列名) 的区别(结果和效率)
2
dual表
- 基本使用
- 删除后的恢复(若被删除则数据库不能启动,需要设置REPLICATION_DEPENDENCY_TRACKING=FALSE)
- 扩展
0.2
操作数据
-
INSERT
- 插入特殊值
- 插入指定日期
- 插入可输入变量
- 从另外一个表复制
- 在INSERT语句中使用子查询
-
DELETE
- 一道OCM考题
- 记得加WHERE条件
- 查找和删除重复的记录
-
UPDATE
- 关联更新一定要加WHERE条件
- 优化写法
-
MERGE(数据合并)
- 语法、概念
- MERGE语句在优化中的巨大作用
- 提高DML语句性能的写法
0.5
存储过程、函数、包的开发
-
PL/SQL块
- 分支
- 循环(游标FOR循环)
- 控制
-
存储过程
- 编写
- 存过中捕获异常的行号
- 存储过程和函数的区别是什么?
- 存过中的动态执行语句(动态sql)
- 存过返回集合
-
函数
- 函数返回集合
- 函数返回系统游标
- 函数返回索引表
-
包
- 一个项目一个包,或一个系统一个包
-
异常处理
-
分类
- 预定义异常
- 非预定义异常
- 自定义异常
-
抛出异常
- 通过PL/SQL运行时引擎
- 使用RAISE语句
- 调用RAISE_APPLICATION_ERROR存储过程
- SQLCODE和SQLERRM
- 如何捕获错误并记录到表中?
- 存过中捕获异常的行号(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE)
-
-
Oracle分批提交DML
- 分批 update
- 分批 delete
- 分批 insert
2
-
基本对象的管理
课程模块
培训要点
学时
DBLINK
- 概念、分类、创建语法(2种方式)、删除
- 相关权限、数据字典
- 讲解一道OCM的考题
0.2
约束
- 约束的概念和原则
- 定义约束
-
几种常见的约束
- NOT NULL约束
- UNIQUE约束
- PRIMARY KEY约束(非空且唯一)
-
FOREIGN KEY约束
- 1.外键列需创建索引,否则易引起锁问题,导致死锁的产生
- 2.找出没有建立索引的外键
- CHECK约束
-
管理约束
- 添加约束
- 删除约束
- 级联约束
- 查看约束
- 禁用、启用约束
0.5
视图
- 视图的概念和优势
- 分类
- 视图中的规则
- 管理视图
- TOP-N分析
-
物化视图简介
- 对比"有无物化视图"前后执行计划的区别
-
扩展
- DBA_UPDATABLE_COLUMNS的作用
- 在什么情况下可以对视图执行增、删、改操作?
0.3
其它数据库对象
-
序列
- 讲解一道OCP和OCM的考题
- 概念、语法、修改、删除
- 性能问题
-
索引
- 概念、作用、创建、删除
-
分类
- 复合索引
- 函数索引
- 位图索引
- 分区索引
- 全文索引
- 虚拟索引
- 不可见索引
- 重点:不能使用索引的情况
-
扩展
- 哪几种情况不能使用索引
- 如何预估即将创建索引的大小?
- 如何监控索引的使用状况?
- 哪些操作会导致索引失效?
- 什么是索引的选择性(Index Selectivity)?
- IS NULL如何用到索引?
-
同义词
- 概念、创建、删除
- 扩展
- PLAN_TABLE表的真谛
0.5
创建和管理表
-
表的分类
- 普通堆表(heap table)---最多包含1000列
-
全局临时表
- 会话级
- 事务级
-
分区表
- 范围分区
- 列表分区
- HASH分区
- 组合分区
- 索引组织表(IOT)
- 簇表
- 外部表
- 数据字典(dict和tab)
-
创建表
- CTAS及其优化
- default选项
- 数据类型
- 删除表
- 引用表
-
修改表alter
- 重命名(rename)表或字段的名称
- 添加、修改、删除列
- SET UNUSED及其恢复
- 移动表所在的表空间
- 修改表的存储特征
-
truncate
- DELETE、DROP和TRUNCATE的区别
-
给表和列添加注释(COMMENT语句)
- 提供一个SQL生成开发语句
0.5
-
数据库管理
-
体系结构和Oracle Restart
课程模块
培训要点
学时
DB 服务器体系结构
-
内存结构
-
SGA
-
共享池(Shared Pool)
-
库缓存(Library Cache)
- 共享SQL区(Shared SQL Area)
- 私有SQL区(Private SQL Area)
- 共享PL/SQL区(Shared PL/SQL Area)
- 控制结构区(Control Structure Area)
- 数据字典缓存(Data Dictionary Cache)
- 保留池(Reserved Pool)
- 结果缓存(Result Cache)
-
-
数据缓冲区(Database Buffer Cache)
- 回收池(Recycle Pool)
- 保留池(Keep Pool)
- 默认池(Default Pool)
- Redo日志缓冲区(Redo Log Buffer)
- 大池(Large Pool)
- Java池(Java Pool)
- 流池(Streams Pool)
-
-
PGA
- Private SQL Area(私有SQL区)
- Cursor and SQL Areas(游标和SQL区)
- Session Memory(会话内存)
- Work Area(工作区)
-
- AMM和ASMM
-
进程结构
- USER PROCESS(用户进程)
-
SERVER PROCESS(服务器进程)
- LOCAL=NO
- LOCAL=YES
- BACKGROUND PROCESSES(后台进程)
- 守护程序/应用程序进程
-
存储结构(物理结构)
- 数据文件
- 控制文件---新增控制文件
- 联机Redo日志文件
- 参数文件
-
归档日志文件
- 归档和非归档的区别
- 归档和非归档模式互相切换
- 密码文件
- 备份文件
- 告警日志和跟踪文件
2
体系结构部分扩展
-
AMM和ASMM
- 区别
- 互换
- 自动PGA内存管理
- UGA介绍
- SHOW SGA和V$SGA的结果区别
0.5
Oracle Restart
- 简介
- Oracle Restart进程启动顺序
- 控制Oracle Restart
- 选择正确的SRVCTL实用程序
- Oracle Restart配置
- 使用SRVCTL实用程序
- 获取有关SRVCTL实用程序的帮助
- 使用SRVCTL实用程序启动和关闭组件
- 查看组件状态
- 显示组件的Oracle Restart配置
- 手动向Oracle Restart配置添加组件
1
Oracle DB 系统
-
Oracle DB
-
物理结构
- 数据文件(Data files)
- 控制文件(Control files)
- 联机Redo日志文件(Online Redo log files)
- 参数文件(Parameter file)
- 归档日志文件(Archive log files)
- 密码文件(Password file)
-
逻辑结构
- 表空间(Tablespace)
-
段(Segment)
- 数据段
- 索引段
- 还原段
- 临时段
- 区(Extent)
-
块(Block)
- 数据块dump文件详解
-
-
数据库实例
-
OS分配的一块内存
- SGA
- PGA
- 一些后台进程(PMON、SMON、LGWR、CKPT、DBWn等)
-
- 实例和数据库的区别
2
-
-
管理数据库实例
课程模块
培训要点
学时
管理数据库实例
-
OEM
-
简介和分类
- Database Control(数据库控制)
- Grid Control(GC,网格控制)
-
维护
- 卸载:emca -deconfig dbcontrol db -repos drop
- 单机重建:emca -config dbcontrol db -repos recreate
- 集群重建:emca -config dbcontrol db -repos recreate -cluster
- OEM的运行日志路径:$ORACLE_HOME/$HOSTNAME_$ORACLE_SID/sysman/log
- OEM的安装日志路径:$ORACLE_HOME/cfgtoollogs/emca/
- 启动:emctl start dbconsole
- 关闭:emctl stop dbconsole
- 运行状态:emctl status dbconsole
- OEM的界面地址:https://192.168.59.128:1158/em/
- 端口的配置文件:$ORACLE_HOME/install/portlist.ini
-
-
初始化参数文件
-
初始化参数值的类型
-
系统使用情况
- 普通参数
-
非凡参数
- 过时参数
- 强调参数
- 隐含参数--隐含参数的设置方法
- 推导参数
-
生效时间
-
动态参数
- 立即生效
- 延迟生效
- 静态参数----SPFILE
-
-
- 简化初始化参数
- 初始化参数:示例
- 使用SQL*Plus查看参数
- 更改初始化参数值
- PFILE和SPFILE的区别是什么?
-
-
数据库启动和关闭
-
启动Oracle DB实例
- 启动Oracle DB实例:NOMOUNT
- 启动Oracle DB实例:MOUNT
- 启动Oracle DB实例:OPEN
-
关闭Oracle DB实例
- SHUTDOWN NORMAL
- SHUTDOWN TRANSACTIONAL
- SHUTDOWN IMMEDIATE
- SHUTDOWN ABORT
- 数据库处于RESTRICT、QUIESCE和SUSPEND状态的区别是什么?
- 数据库的启动经历几个过程
-
-
告警日志
- Oracle 10g和11g告警日志文件的位置在哪里?
- 告警日志的包含内容
-
管理告警日志
- V$DIAG_ALERT_EXT
- ①使用外部表方式
- ②视图V$DIAG_ALERT_EXT
- ③利用SHELL脚本
- 使用跟踪文件
2
-
-
ASM
课程模块
培训要点
学时
ASM
- 简介
-
ASM对于管理员的好处
- ASM是什么?它有哪些优点?
-
ASM实例
- 主要进程
- ASM实例初始化参数
- 数据库实例与ASM之间的交互
- ASM相关动态性能视图
-
系统权限
- SYSASM、SYSDBA或SYSOPER
- 使用OEM管理ASM用户
-
启动和停止ASM实例
- SQL*Plus
- srvctl
- asmcmd
-
ASM磁盘
- 创建ASM磁盘的几种方法
- ASM文件和FS文件转换的几种方法
- 分配单元(AU)
- ASM磁盘有几种冗余方式?
- ASM 磁盘的相关视图
-
ASM磁盘组
- ASM故障组
-
管理磁盘组
- 创建和删除磁盘组
- 向磁盘组添加磁盘
- 从磁盘组删除磁盘
- 再平衡(Rebalance)
- ASM磁盘组兼容性
- ASM磁盘组属性
-
检索ASM元数据
- 视图
- asmcmd
- 与ASM相关的有哪些进程?
- ASMLIB是什么?常用命令有哪些?其运行日志路径在哪里?
- 在采用asmlib时,确认物理磁盘的方法
- udev是什么?如何配置udev?
- 多路径(multipath)是什么?如何配置多路径?
- asmcmd工具详细介绍
- asm相关的OCP题目讲解
- ASM管理命令行三工具:KFOD、KFED和AMDU
2
-
网络管理
课程模块
培训要点
学时
网络管理
-
监听
- 配置
- 管理
- 静态监听和动态监听
- listener.ora
-
服务名
- tnsnames.ora
- 简便连接(EZCONNECT方式)
-
测试Oracle Net连接
- tnsping
-
其它实用内容
- 动态注册和静态注册有什么区别?
- 在Oracle中,如何限定特定IP访问数据库?
- 如何跟踪tnsping过程?
- 如何启动Oracle数据库的监听日志?
- 解释GLOBAL_NAMES设为TRUE的用途。
- tnsnames.ora文件的作用是什么?
- sqlnet.ora文件的作用是什么?
- TWO_TASK环境变量的作用是什么?
- 在Windows环境下,错误"ORA-12560: TNS: 协议适配器错误"的常见原因有哪些?
- Oracle的SYS用户登录报权限不足(ORA-01031: Insufficient Privileges)的常见原因有哪些?
- 在没有配置ORACLE_HOME环境变量的情况下,如何快速获取数据库软件的ORACLE_HOME目录?
- 造成错误"ORA-12547: TNS:lost contact"的常见原因有哪些?
2
-
-
管理数据库存储结构(表空间和数据文件)
课程模块
培训要点
学时
管理数据库存储结构(表空间和数据文件)
- 表空间和数据文件
- 表数据的存储方式
- 浏览存储结构
- 表空间的存储
- 预配置的数据库中的表空间
- 变更表空间
- 表空间操作
-
Oracle管理的文件(OMF)
- 数据文件的OMF管理
- 日志文件的OMF管理
- 使用OMF管理控制文件
- 使用OMF 创建ASM文件涉及的一些参数
- 扩大数据库
- 改变数据文件的名称和位置、移动数据文件
- 什么是用户的表空间配额(User tablespace Quota)
- 如何正确的删除表空间数据文件?
-
表空间管理
- 表空间大小查询
- 创建新的表空间
- 表空间大小为空的原因
- 扩展表空间
- 表空间收缩
- 修改表空间名称
- 表空间的管理方式
-
数据文件管理
- DBA_DATA_FILES
- 数据文件大小查询
- 设置数据文件为自动增长
- 改变数据文件的大小
- 数据文件的大小为空
- 什么是大文件表空间(Bigfile Tablespace)?
1.5
-
用户、密码文件、权限及角色
课程模块
培训要点
学时
数据库事务处理
- 数据库事务的开始与结束
- COMMIT和ROLLBACK语句
- 事务控制
- 事务的控制示例
- 隐式事务处理
用户及其密码文件
-
创建、密码
- 如何重建SCOTT用户
- 使用工具来创建用户
-
修改密码
- Oracle用户密码含特殊字符时的登陆问题
-
密码文件
- 创建、作用
-
Oracle的两种认证方式
- OS验证
- 密码文件验证
-
PROFILE管理密码
- 账户锁定
- 给账户(用户)解锁
- 终止密码
- 密码历史
- 修改密码为永不过期
- Oracle用户被锁原因及办法
-
用户的状态(ACCOUNT_STATUS的九种状态)
-
基本状态
- 正常(OPEN)
-
锁定状态
- LOCKED
- LOCKED(TIMED)
-
过期状态
- EXPIRED
- EXPIRED(GRACE)
-
组合状态
- EXPIRED & LOCKED(TIMED)
- EXPIRED(GRACE) & LOCKED(TIMED)
- EXPIRED & LOCKED
- EXPIRED(GRACE) & LOCKED
-
-
在不知道用户密码的情况下如何更改密码
- 用原密码的密文来更改密码
- 直接更新USER$基表
- user$.lCOUNT列记录了失败的登陆次数
- 11g密码区分大小写--sec_case_sensitive_logon
- 密码延迟验证
- 哪些用户密码没有被修改过
- 密码复杂性校验
- 删除用户
-
扩展
- SCHEMA和USER的区别
- 重建scott用户
- 使用工具来创建用户
- 使用profile管理口令
- 什么是用户的表空间配额(User tablespace Quota)
- 回收DBA角色时需要注意什么问题
权限
- 概念、视图、基本权限
-
Oracle权限分类
- 系统权限(System Privilege)--DBA_SYS_PRIVS
- 对象权限(Object Privilege)--DBA_TAB_PRIVS
- 角色权限(Role Privilege)--DBA_ROLE_PRIVS
- 列权限--DBA_COL_PRIVS
-
如何获取用户的权限
- DBMS_METADATA.GET_GRANTED_DDL
- 通过数据字典来获取
- 通过exp或expdp来获取
-
扩展
- 如何让普通用户可以TRUNCATE其他用户的表?
- 关于UNDER ANY TABLE/VIEW权限的解释
- 用户的权限分为哪几类?如何导出用户的权限?
角色
- DBA、SYSDBA和SYSOPER的区别
- 概念、创建、删除
-
分类
-
预定义角色
- DBA
- CONNECT
- RESOURCE
- Oracle有哪些预定义角色?
- 自定义角色
-
- 角色生效和失效
-
锁和会话
-
课程模块 |
培训要点 |
学时 |
锁 |
|
1 |
会话 |
|
1 |
-
审计和Undo
课程模块
培训要点
学时
审计
- 责任分离
- 数据库安全性
- 监视合规性
- 标准数据库审计
- 配置审计线索
- 统一审计线索
- 默认审计
- 什么是审计(Audit)?
- 审计如何分类
- 迁移SYS.AUD$表到其它表空间
- 审计中BY ACCESS和BY SESSION的区别是什么?
- 如何对SYSDBA和SYSOPER进行审计?
- 什么是细粒度审计?
- FGA审计和标准审计有什么区别?
1
Undo
- 还原数据
- 事务处理和还原数据
- 存储还原信息
- 还原数据与重做数据
-
管理还原
- 配置还原保留时间
- 保证还原保留时间
- 将还原表空间改为固定大小
- 一般还原信息
- 使用还原指导
0.5
Undo和Redo
- Undo的作用
- Undo段存储的内容
-
块清除:
- 快速块清除(Fast Commit Cleanout)
- 延时块清除(Delayed Block Cleanout)
- Undo表空间
- 系统回滚段(System Rollback Segment)与延迟回滚段(Deferred Rollback Segment)
- ORA-01555
- Redo日志文件(Redo Log Files)的作用是什么?
- 如何管理联机Redo日志组与成员?
- 在Oracle中,如果联机Redo日志文件损坏,那么如何恢复?
1
-
AWR、ASH、ADDM和统计信息
课程模块
培训要点
学时
AWR、ASH、ADDM和统计信息
-
统计信息(学习SQL优化的必修课)
- 统计信息的简介和分类
- 索引统计信息
- 表统计信息
- 列统计信息
- 系统统计信息
- 内部对象统计信息
-
自动收集统计信息
- 统计信息何时变为陈旧状态(10%的含义)?
- 修改自动收集统计信息的时间
- DBA_TAB_MODIFICATIONS
- 怎样收集表的统计信息?怎样收集分区表的统计信息?
- 什么是动态采样(Dynamic Sampling)?
- 如何锁住统计信息?
- 什么是待定的统计信息(Pending Statistic)?
- 什么是直方图(Histogram)?
- 什么是多列统计信息(Extended Statistics)?
- 基表COL_USAGE$的作用是什么?
- 新建索引后统计信息是否自动收集?
- 什么是基数反馈(Cardinality Feedback)?
- 如何查询表和索引的历史统计信息
- Oracle如何并发地收集统计信息?
- 当收集表的统计信息时应该注意哪些问题?
- 什么是基数(Cardinality)和可选择率(Selectivity)?
- 使用SPLIT来拆分某个分区的时候,其拆分出来的新分区的统计信息行数是多少?
- 当自动收集任务运行时,哪些对象会被收集?
- 分区表统计信息的更新机制是怎样的?
- 如何查询表的DML操作数据变化量?
- 对表执行TRUNCATE操作会将表的统计信息也清除掉吗?
-
自动负载信息库(AWR)
- AWR 基础结构
- AWR 基线
- Enterprise Manager 和 AWR
- 管理 AWR
- 统计级别
- 什么是AWR?
- 如何获取AWR报告?
- 定时生成AWR报告
- AWR报告中主要关注哪些方面内容?
-
ASH
- 什么是ASH?
- 如何获取ASH报告?
- 如何查看过去某一段时间数据库系统的会话是否有问题?
-
自动数据库诊断监视器 (ADDM)
- 什么是ADDM?
- 如何获取ADDM报告?
-
自动维护任务
- 简介
- 自动维护任务配置
-
服务器生成的预警
- 设置阈值
- 创建和测试预警
- 预警通知
- 对预警作出响应
2
-
-
JOB和分区
课程模块
培训要点
学时
JOB
-
DBMS_JOB
- 创建、删除
- 后台进程
- dbms_job package 用法介绍
-
杀JOB
- 删除其它用户下的job用 sys.dbms_ijob.remove()
- 杀会话+杀后台进程
-
what的写法
- 存储过程
- 匿名块
-
数据字典
- 所有job(dba_jobs)
- 正在运行(dba_jobs_running)
- RAC中指定dbms_job运行在指定实例(instance)
- 权限
- PL/SQL工具创建和管理job
-
DBMS_SCHEDULER
- DBMS_JOB和DBMS_SCHEDULER之间的区别
-
创建、删除
- 带参数
- 不带参数
- 通过dbms_scheduler去执行shell脚本
- 权限
- 轻量级job(Lightweight Jobs)
- PL/SQL工具创建和管理job
- RAC中如何指定JOB的运行实例
-
如何判断SCHEDULER JOB是否正在运行?
- DBA_SCHEDULER_JOBS视图的STATE列
- DBA_SCHEDULER_RUNNING_JOBS
-
如何查询SCHEDULER JOB的运行日志?
- DBA_SCHEDULER_JOB_LOG和DBA_SCHEDULER_JOB_RUN_DETAILS
- 通过DBMS_SCHEDULER如何调用SHELL脚本?-
- 如何批量删除JOB?
- 数据字典
1
分区
- 分区表简介
- 何时考虑分区?
- 分区表有什么优点
-
有哪些类型的分区?如何选择用哪种类型的分区表?
- 范围分区(RANGE PARTITION)
- 哈希分区(HASH PARTITION)
- 列表分区(LIST PARTITION)
- 引用分区(REFERENCE PARTITION)
- 复合分区(组合分区)
-
INTERVAL分区(间隔分区)
- 月分区
- 天分区
- 系统分区
- 分区模板
-
分区表的维护
- 添加分区(add partition)
- 收缩表分区(coalesce partitions)
- 删除分区和删除子分区(drop partition)
- 添加子分区
-
截断表分区(Truncate Partition)--截断一个分区表中的一个分区的数据
- 截断分区表的子分区
- 截断带有约束的分区表
- 注意事项
-
移动表分区(Move Partition)
- 将一个表的分区从一个表空间移动到另一个表空间
- 压缩表Move--compress
- 合并分区(Merge Partitions)
- 重命名某一个分区(Rename Partition)
- 交换表分区(Exchange Partitions)
-
修改 list 表分区
- 修改 list 表分区--Add Values
- 修改list 表分区--Drop Values
- 拆分表分区(Split Partition)--分区切割
-
修改分区表属性
- 修改表分区默认属性(Modify Default Attributes)
- 修改表分区当前属性(Modify Partition)
- 修改分区表的logging属性
- 并行度
- 修改表子分区模板(Set Subpartition Template)
-
分区表的查询优化
- 单分区查询
- 跨分区查询
- 分区表常用数据字典视图有哪些?
- Oracle之INTERVAL分区的STORE IN属性存储在哪张表中?
- 如何查询某个分区是否是INTERVAL分区表?
-
分区表的压缩
- 分区表压缩
- 含有子分区的分区表压缩
- 分区表哪些分区被压缩了
- 解压缩
-
分区表单个分区分析(分区表收集统计信息)
- 指定partname和GRANULARITY
-
普通表转换为分区表有哪些办法?
- (1)导出/导入方法(Export/Import Method)
- (2)子查询插入方法(Insert With a Subquery Method)
- (3)分区交换方法(Partition Exchange Method)
- (4)在线重定义方法(DBMS_REDEFINITION Method)
- 分区表中lob类型的字段
- 分区表性能注意事项
-
索引失效的情况
- 分区表
- 非分区表
1
-
-
备份和恢复(包括闪回)
课程模块
培训要点
学时
备份和恢复的概念
-
故障类别
- 语句失败
- 用户进程失败
- 网络故障
- 用户错误
- 介质故障
-
实例恢复
- 实例故障
- 了解实例恢复:检查点 (CKPT) 进程
- 实例恢复的阶段
- 优化实例恢复
- 使用 MTTR 指导
- 实例恢复和介质恢复的区别
- 配置可恢复性
- 配置快速恢复区
0.5
SCN
- SCN的组成
-
SCN的分类
- 系统检查点SCN(System Checkpoint SCN)
- 文件检查点SCN(Datafile Checkpoint SCN)
- 开始SCN(Start SCN)
- 结束SCN(Stop SCN)
- 如何查看系统当前SCN
- SCN与时间的相互转换
0.3
备份
- rman 连接数据库
- RMAN数据字典
-
rman命令
- 列出备份信息(list)
- 删除备份(delete)
-
报告命令(report)
- 可以报告哪些文件需要备份
- 报告不可恢复的备份集
- 报告数据库的信息
- 交叉检查(crosscheck)
- VALIDATE DATABASE
-
RMAN的配置
- CONFIGURE RETENTION POLICY 配置备份保留策略
- CONFIGURE BACKUP OPTIMIZATION 配置备份优化
- CONFIGURE DEFAULT DEVICE TYPE 配置 IO 设备类型
- CONFIGURE CONTROLFILE AUTOBACKUP 配置控制文件自动备份
- CONFIGURE DEVICE TYPE 设置并行备份
- CONFIGURE DATAFILE BACKUP COPIES 设置备份文件冗余度
- CONFIGURE MAXSETSIZE 配置备份集的最大尺寸
- CONFIGURE ARCHIVELOG DELETION POLICY
- RMAN中关于备份或归档文件状态OBSOLETE和EXPIRED的区别是什么?
- 物理备份和逻辑备份分别是什么?
- 差异增量备份和累积增量备份的区别是什么?
- 什么是块改变跟踪?
-
完全备份
- 全库备份脚本分享
- 增量备份
-
文件备份
- 数据文件备份
- 控制文件
- spfile
- 表空间备份
1
恢复
- TRUNCATE恢复方法
- TSPITR(表空间基于时间点恢复)
- rm -rf误操作的恢复过程
- 在丢失归档的情况下如何进行数据文件的恢复
- 数据文件OFFLINE之后必须要做的一件事是什么?
-
什么是DRA(Data Recovery Advisor,数据恢复指导)?
- list failure:列出DRA记录的故障
- advise failure:显示建议修复的选项
- repair failure:使用RMAN的建议和关闭故障
- rm -rf 误操作的恢复过程
- 丢失了控制文件(多种恢复方法演示)
- 丢失了在线重做日志文件
-
数据文件恢复
- 在NOARCHIVELOG模式下丢失了数据文件
- 在ARCHIVELOG模式下丢失了非关键数据文件
- 在ARCHIVELOG模式下丢失了系统关键数据文件
- 数据故障
- 只存在备份片如何恢复数据库
- spfile恢复(多种恢复方法演示)
-
表空间恢复
- Undo表空间
- SYSTEM表空间
- 其它表空间
-
归档日志的恢复
- restore archivelog 的各种选项
- 怎样清除v$archived_log视图中的过期信息
1
闪回
-
闪回的分类
- 闪回删除(Flashback DROP)--10g,基于回收站(Recycle Bin)特性实现
- 闪回数据库(Flashback Database)--基于闪回恢复区(Flash Recovery Area)中的闪回日志;10g开始引入,后台进程为:RVWR(Recovery Writer)
- 闪回数据归档(Flashback Data Archive)--基于闪回归档区(Flashback Archive)中的数据,11g开始引入,进程fbda(Flashback Data Archiver Process)
- 闪回版本查询(Flashback Version Query),10g
- 闪回查询(Flashback Query),9i
- 闪回事务查询(Flashback Transaction Query),10g
- 闪回表(Flashback TABLE),10g
-
其它内容
- 什么是闪回?闪回有哪些分类?
- Oracle的回收站是什么?
- 什么是闪回数据归档(Flashback Data Archive)?
- 什么是闪回数据库?
- 如何让普通用户可以对DBA_SOURCE视图进行闪回查询?
- 存储过程被覆盖了,如何恢复?
1
RMAN 高级应用之 Duplicate 复制数据库
- Duplicating an Active Database
- Cloning A Database On The Same Server Using Rman Duplicate From Active Database
- Duplicating a Database with a Target Connection
- Duplicating a Database with Recovery Catalog Without Target Connection
- Duplicating a Database Without Recovery Catalog or Target Connection
1
bbed简介
- bbed简介
0.1
rman之块介质恢复
- 坏块的简介
- 坏块的检测方法
- BMR恢复坏块
- 如何确定坏块的对象名
- 如果发现有坏块,那么如何检索其它未坏的数据?
-
模拟坏块
-
blockrecover恢复坏块
- 创建演示环境
- 单块数据块损坏的恢复处理
- 多块数据块损坏的恢复处理
- 坏块的对象定位与影响
-
bbed模拟
- bbed修复坏块示例
-
0.5
非归档模式备份恢复
- 非归档的备份方法
- 非归档模式下的恢复
- 非归档模式的备份与恢复示例
0.2
OPEN RESETLOGS
- 使用alter database open resetlogs的场合
- 为什么使用RESETLOGS?
- RESETLOGS会执行什么操作?
0.1
4条RECOVER DATABASE命令的区别是什么?
- 1 RECOVER DATABASE USING BACKUP CONTROLFILE
- 2 RECOVER DATABASE UNTIL CANCEL
- 3 RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL;
- 4 RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE;
0.1
日志挖掘logminer
- 日志挖掘logminer
0.1
利用增量数据库备份进行恢复
- 利用增量数据库备份进行恢复
0.1
跨版本恢复
- RMAN可以跨版本或跨平台执行还原或复制命令吗?
- 跨大版本恢复
- 跨小版本恢复
1
OS备份(物理备份)和恢复
-
冷备份(一致性备份、脱机备份) --cool backup
- 冷备份的优缺点
- 冷备份一般步骤
- 冷备脚本的写法
- 存在冷备下的还原(非归档模式)
-
丢失数据文件
- 丢失system表空间
- 丢失sysaux
- undo丢失
- 自己建立的表空间(如users,ts_test)
- temp表空间
- 日志文件丢失
- 控制文件丢失
- 参数文件丢失
- 密码文件丢失
-
热备份(非一致性备份、联机备份) --只能用于归档模式
- 简介
-
热备的过程
- 基于数据库的热备
- 基于表空间的热备
- 控制文件的热备
- 参数文件的热备
- 临时表空间的数据文件、日志文件不需要备份
- 热备份的相关视图
-
存在热备下的还原
- 还原控制文件
-
还原数据文件
- 可以脱机的表空间文件
- 不可以脱机的表空间文件
0.5
-
-
移动数据(exp、expdp、sqlldr、外部表)
课程模块
培训要点
学时
exp和imp
-
EXP导出数据
- 导出表
- 导出方案
- 导出数据库
-
IMP导入数据
- 导入表
- 导入方案
- 导入数据库
- imp导入常见问题处理
-
其它实用内容
-
可以从dmp文件获取哪些信息?
- 一、获取基本信息:导出的版本、时间、导出的用户
- 二、获取dmp文件中的表信息
- 三、解析dmp文件生成parfile文件
- 四、如何查看dmp文件的字符集
- 五、如何将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中?
- exp的query参数
- 什么是延迟段创建(Deferred Segment Creation)?
- Oracle 11g不能导出空表的三种解决方法
-
exp导出ASH数据
- 方法1:ctas建表导出,有的客户不让建表
- 方法2:导出基表的数据
-
常见错误
- XP-00091: Exporting questionable statistics 问题处理方法
- EXP-00026: conflicting modes specified
- IMP-00013: only a DBA can import a file exported by another DBA
- IMP-00031: 必须指定 FULL=Y 或提供 FROMUSER/TOUSER 或 TABLES 参数
- IMP-00002: 无法打开要读取的imp D:/admin.dmp
- EXP-00008: 遇到 ORACLE 错误 904
- imp导入报错:IMP-00037: Character set marker unknown
- IMP-00010: not a valid export file, header failed verification
- imp-00051,imp-00008
- IMP-00132: first file in the multi-file export is 32
-
0.5
数据泵(expdp和impdp)
- Oracle 数据泵:概览
- Oracle 数据泵:优点
- Oracle Database 11g 中的数据泵增强功能
- 数据泵的目录对象
- 创建目录对象
- 数据泵导出与导入客户机:概览
- 数据泵实用程序:界面与模式
- 使用 Database Control 进行数据泵导出
-
数据泵导出示例
- 数据泵导出示例:基本选项
- 数据泵导出示例:高级选项
- 数据泵导出示例:文件
- 数据泵导出示例:调度
- 数据泵导出示例:复查
- 数据泵导入示例:impdp
-
其它实用内容
- 数据泵的一些常用语法命令
- 如何彻底停止expdp进程?
- Oracle用户密码含特殊字符时如何登陆?
-
如何获取数据库DDL的创建语句
- imp示例:
- imp的indexfile选项(indexfile导出表和索引的ddl语句)
- impdp示例:
- expdp时显示时间 metrics
- NETWORK_LINK 选项
-
只导出元数据
- 【IMPDP】使用 TRANSFORM选项去掉表空间和存储子句
- 如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句?
- 12c expdp VIEWS_AS_TABLES选项
-
过滤对象(exclude、include)
- 导出数据库连接
- 导出JOB
- dba_export_objects
- 重定义表的Schema或表空间
- 优化导入/导出效率
- impdp传输表空间(OCM考题)
- expdp 导出sys用户下的表报错ORA-39165 和ORA-39166
- 数据泵导出导入卡死
- 使用隐含Trace参数诊断Oracle Data Pump故障
- 全库导出和导入演示
0.5
SQL*Loader
- 使用 SQL*Loader 加载数据
- SQL*Loader 控制文件
- 直接路径加载与常规路径加载的比较
- 如何将文本文件或Excel中的数据导入数据库?
- 4G大文件导入示例。
0.2
外部表
- 外部表的优点
- 使用ORACLE_LOADER定义外部表
- 使用ORACLE_DATAPUMP填充外部表
-
使用外部表
- 基础
- 只有1列
- 外部表的parallel
-
利用外部表查看告警日志
- 先来个最简单的使用方法
- 再来个稍微复杂点的
0.2
-
-
管理补丁程序
课程模块
培训要点
学时
管理补丁程序
- PSU、SPU(CPU)、BP、one-off patch等概念简介
- 什么是Metalink或MOS
- Upgrade与Update
- 如何查找最新的PSU?
- 如何确认当前数据库已经安装了什么PSU?
- 如何安装PSU?
-
PSU安装演示
- 11.2.0.3.0升级到11.2.0.3.1
-
热补丁安装演示( One-off Patch)
- 一道OCM考题
0.5
-
实验课
课程模块
培训要点
学时
实验课
- 数据泵之NETWORK_LINK
- Duplicating an Active Database(duplicate复制数据库)
- Duplicating a Database Without Recovery Catalog or Target Connection
- Duplicating a Database Without Recovery Catalog or Target Connection
- TSPITR(表空间基于时间点恢复)
- 直接复制数据文件实现linux平台数据库复制到windows平台数据库
- 利用rman来实现linux平台数据库复制到windows平台数据库
- 热备下的测试库搭建
- 传输表空间(TTS)一例(linux asm -> win 文件系统)
- 传输表空间(TTS)一例(win文件系统 -> linux asm )
- 传输表空间(TTS)一例(AIX asm -> linux asm )
- 传输表空间(TTS)一例(linux asm -> AIX asm)
- 传输表空间(TTS)一例(linux asm -> AIX asm)--基于RMAN备份
- 传输表空间(TTS)一例(AIX asm -> linux asm )--基于RMAN
- AIX平台数据库迁移到Linux--基于RMAN(真实环境)
2
-
OCP讲课内容思维导图
-
安装与卸载
-
-
SQL基础部分
-
基本对象的管理
-
数据库管理部分
-
体系结构和Oracle Restart
-
-
管理数据库实例
-
ASM
-
网络管理
-
表空间及数据文件
-
事务处理及用户
-
用户权限及角色
-
锁和会话
-
审计和Undo
-
AWR、ASH、ADDM、统计信息
-
JOB和分区
-
备份和恢复(包括闪回)
-
移动数据
-
管理补丁程序
-
实验课
-
OCP讲课文档目录
-
数据库安装部分的目录
-
第1章 安装Oracle软件 - 6 -
1.1 Oracle DB 管理员的任务 - 6 -
1.2 用于管理 Oracle DB 的工具 - 7 -
1.3 制定安装计划 - 8 -
1.4 Oracle Grid Infrastructure 和Oracle DB 安装:系统要求 - 9 -
1.5 准备操作系统 - 10 -
1.5.1 设置环境变量 - 11 -
1.5.2 检查系统要求 - 12 -
1.5.3 OUI - 13 -
1.5.4 GI安装 - 15 -
1.5.4.1 Installation Option(安装选项) - 15 -
1.5.4.2 选择产品语言 - 16 -
1.5.4.3 创建 ASM 磁盘组 - 17 -
1.5.4.4 定义 ASM 口令 - 17 -
1.5.4.5 定义已授权的操作系统组 - 19 -
1.5.4.6 指定安装位置 - 20 -
1.5.4.7 创建清单 - 21 -
1.5.4.8 执行先决条件检查 - 22 -
1.5.4.9 验证安装概要数据 - 23 -
1.5.4.10 监视安装进度 - 24 -
1.5.4.11 执行root配置脚本 - 25 -
1.5.4.12 执行 Configuration Assistant - 25 -
1.5.4.13 完成安装 - 27 -
1.5.4.14 配置 FRA 磁盘组 - 27 -
1.5.5 安装 Oracle DB 软件 - 30 -
1.5.5.1 选择安装类型 - 30 -
1.5.5.2 选择网格安装选项 - 31 -
1.5.5.3 选择语言设置 - 32 -
1.5.5.4 选择数据库版本 - 33 -
1.5.5.5 指定安装位置 - 34 -
1.5.5.6 选择操作系统组 - 35 -
1.5.5.7 执行先决条件检查 - 36 -
1.5.5.8 安装概要页 - 37 -
1.5.5.9 安装产品页 - 38 -
1.5.5.10 安装完成 - 39 -
1.5.5.11 安装选项:无提示模式 - 41 -
1.5.5.12 小测验 - 41 -
1.5.5.13 小结 - 42 -
1.5.6 使用DBCA创建Oracle DB - 42 -
1.5.6.1 计划数据库 - 42 -
1.5.6.2 选择适当的字符集 - 44 -
1.5.6.3 Database Configuration Assistant (DBCA) - 48 -
1.5.6.4 Database Templates(数据库模板) - 49 -
1.5.6.5 Database Identification(数据库标识) - 49 -
1.5.6.6 Management Options(管理选项) - 50 -
1.5.6.7 Database Credentials(数据库身份证明) - 50 -
1.5.6.8 Database File Locations(数据库文件位置) - 51 -
1.5.6.9 Recovery Configuration(恢复配置) - 52 -
1.5.6.10 Database Content(数据库内容) - 52 -
1.5.6.11 Initialization Parameters(初始化参数) - 53 -
1.5.6.12 Database Storage(数据库存储) - 54 -
1.5.6.13 Create Options(创建选项) - 54 -
1.5.7 创建数据库设计模板 - 57 -
1.5.8 使用 DBCA 删除数据库 - 58 -
1.5.9 小测验 - 60 -
1.5.10 小结 - 60 -
第2章 RHEL 5.5的OS版本 - 60 -
2.1 安装VMware Workstation 12 Pro - 60 -
2.1.1 校验MD5值 - 61 -
2.2 安装RHEL 5.5的OS版本 - 63 -
2.2.1 简易安装 - 63 -
2.2.2 一般安装过程 - 68 -
2.2.2.1 开始安装 - 83 -
2.2.2.2 建立自定义的分区结构 - 87 -
2.2.2.3 继续 - 92 -
2.3 其它软件安装 - 99 -
2.3.1 安装VMware Tools - 99 -
2.3.1.1 安装完成后设置共享文件 - 104 -
2.3.1.2 设置桌面背景和桌面的大小 - 105 -
2.3.2 设置主机IP地址 - 106 -
2.3.3 中文环境切换成英文环境 - 107 -
2.3.4 配置本地yum源(rhel 5.5) - 107 -
2.3.5 安装rlwrap - 108 -
2.4 对/dev/sdb进行分区 - 109 -
2.4.1 逻辑卷管理的命令 - 116 -
第3章 安装11.2.0.3 64位单机数据库软件 - 117 -
3.1 安装前的准备工作 - 117 -
3.1.1 软件准备 - 117 -
3.1.2 检查硬件 - 117 -
3.1.3 修改hosts文件、修改主机名 - 118 -
3.1.4 安装软件包检查 - 118 -
3.1.5 内核参数--shell限制 - 120 -
3.1.5.1 /etc/security/limits.conf - 120 -
3.1.5.2 /etc/pam.d/login - 121 -
3.1.5.3 /etc/profile - 121 -
3.1.5.4 /etc/sysctl.conf - 121 -
3.1.6 关闭防火墙 - 122 -
3.1.7 关闭耗费资源的服务 - 123 -
3.1.8 禁用selinux - 123 -
3.2 新建用户和组 - 124 -
3.2.1 配置用户的环境变量 - 124 -
3.3 新建安装目录 - 125 -
3.4 将oracle使用者加入到sudo群组中 - 125 -
3.5 准备oracle安装文件 - 125 -
3.5.1 拷贝安装文件 - 125 -
3.5.1.1 计算MD5值 - 128 -
3.5.2 解压安装文件 - 129 -
3.6 开始安装 - 130 -
3.6.1 安装前的检查 - 141 -
3.6.2 执行root.sh脚本 - 144 -
3.7 扩展(静默安装软件) - 145 -
第4章 创建数据库 - 148 -
4.1 DBCA图形创建 - 148 -
4.1.1 启动监听 - 159 -
4.2 DBCA静默方式建库(必会) - 161 -
4.2.1.1 什么是静默建库? - 161 -
4.3 CREATE DATABASE手动建库(OCM) - 163 -
4.4 删除数据库的几种方式 - 164 -
4.5 在多个不同版本的数据库情况下,如何确定实例的ORACLE_HOME地址? - 164 -
第5章 配置监听和TNS - 165 -
5.1 静默创建监听 - 167 -
第6章 其它 - 167 -
6.1 让Oracle DB、监听和oem开机启动(dbstart) - 167 -
6.1.1 方法1:配置Linux的service服务 - 168 -
6.1.2 方法2:配置/etc/rc.d/rc.local文件 - 170 -
6.1.3 总结 - 172 -
6.2 PLSQL Developer软件使用和Windows 下绿色版Oracle客户端的安装和使用 - 172 -
6.2.1 Linux下绿色版Oracle客户端的安装 - 172 -
6.3 配置glogin.sql - 173 -
6.4 如何判断Oracle是32位还是64位? - 173 -
第7章 数据库软件的卸载 - 176 -
第8章 安装grid软件 - 177 -
8.1 OS修改 - 177 -
8.1.1 编辑 /etc/security/limits.conf 文件,在文件尾部添加如下内容: - 177 -
8.1.2 添加grid用户 - 177 -
8.1.3 配置grid用户的环境变量 - 178 -
8.1.4 扩展磁盘空间 - 179 -
8.2 ASM磁盘准备(创建asm磁盘) - 179 -
8.2.1 创建ASM磁盘的方法1--Faking方式 - 179 -
8.2.2 创建ASM磁盘的方法2--直接修改/etc/sysconfig/rawdevices配置raw(rhel6之后不支持) - 182 -
8.2.3 创建ASM磁盘的方法3--Udev方式 - 184 -
一、 uuid方式 - 184 -
2、 配置 udev 绑定的 scsi_id - 187 -
3、 创建并配置udev rules文件 - 188 -
4、 udevadm进行测试 - 189 -
5、 添加完成后,重启 udev,不同 Linux 发行版本重启方式不一样。 - 189 -
6、 查看绑定的 asm,如果此时还是看不到 asm disk,请重启操作系统后再查看。 - 189 -
二、 raw方式 - 190 -
8.2.4 创建ASM磁盘的方法4--ASMLIB方式 - 191 -
一、 系统版本号 - 191 -
二、 Oracle asmlib下载 - 191 -
三、 上传并安装上述的三个rpm软件包 - 193 -
四、 配置ASM - 193 -
五、 系统添加磁盘 - 194 -
六、 grid软件安装完毕后配置asm_diskstring 路径 - 195 -
七、 测试 - 197 -
8.3 安装grid软件 - 198 -
8.3.1 解压软件 - 198 -
8.3.2 开始安装grid软件(图形界面) - 199 -
8.3.2.1 创建ASM磁盘组 - 203 -
8.3.2.2 执行root脚本 - 209 -
8.3.2.3 继续安装 - 210 -
8.3.2.4 测试ASM实例 - 211 -
8.3.3 静默安装grid软件(可选) - 212 -
8.3.3.1 安装grid软件 - 212 -
8.3.3.2 静默创建ASM实例 - 215 -
8.3.3.3 静默创建grid用户的监听 - 216 -
8.4 创建DATA和FRA的ASM磁盘组 - 218 -
8.5 创建asm管理的数据库 - 221 -
8.6 创建EM - 223 -
8.7 其它扩展 - 225 -
8.7.1 在AIX或Linux下,如何查看磁盘是否包含数据? - 225 -
8.7.2 如何让crs_stat命令显示完整 - 227 -
8.7.3 kfod命令 - 227 -
8.7.3.1 在采用asmlib时,确认物理磁盘的方法 - 228 -
-
Oracle基本SQL部分及其基本管理
目录 - 1 -
序言 - 12 -
第1章 SQL简介 - 12 -
1.1 SQL的起源和分类 - 13 -
1.1.1 SQL的起源 - 13 -
1.1.2 SQL的分类 - 13 -
1.2 提交(COMMIT)类型 - 15 -
1.3 如何查询在线和离线的官方文档 - 19 -
第2章 SQL*Plus工具 - 20 -
2.1 SQL 与 SQL*Plus - 20 -
2.2 SQL 语句与SQL*Plus - 20 -
2.2.1 关系对比 - 20 -
2.2.2 关系图 - 21 -
2.3 登录 SQL*Plus - 21 -
2.3.1 EZCONNECT方式 - 22 -
2.3.2 使用 SQL*Plus - 24 -
2.4 SQL*Plus和SQL Developer - 24 -
2.4.1 从Shell脚本调用SQL*Plus - 25 -
2.4.1.1 shell调用 - 25 -
一、 最简单的shell里调用sqlplus - 25 -
二、 把sqlplus执行结果传递给shell方法一 - 26 -
三、 把sqlplus执行结果传递给shell方法二 - 26 -
四、 把shell程序参数传递给sqlplus - 27 -
五、 为了安全要求每次执行shell都手工输入密码 - 27 -
六、 为了安全从文件读取密码 - 28 -
2.4.1.2 bat调用 - 28 -
2.4.2 从SQL*Plus调用SQL脚本 - 29 -
2.4.3 sqlplus中将行转为列输出 - 31 -
2.5 SQL*Plus的设置 - 34 -
2.5.1 显示表结构 - 35 -
2.5.2 SET TIMING ON; 和 SET TIME ON - 35 -
2.5.3 SQL*Plus编辑命令 - 35 -
2.5.4 使用 LIST, n, 和 APPEND - 36 -
2.5.5 SQL*Plus 文件命令 - 36 -
2.5.5.1 导出csv、和html文件 - 37 -
一、 导出csv文件格式 - 37 -
二、 导出html文件格式 - 38 -
2.5.6 如何使用上下左右方向键 - 40 -
2.5.7 设置执行脚本时的搜寻路径 - 41 -
2.5.8 SQL*Plus中@和@@的区别是什么? - 41 -
2.5.9 SQL*Plus中&与&&的区别是什么? - 41 -
2.5.10 glogin.sql脚本的作用是什么?如何修改命令的提示符? - 42 -
2.5.11 SQL*Plus的ERRORLOGGING的作用是什么? - 42 -
2.5.12 如何给SQL*Plus安装帮助? - 43 -
2.6 iSQL*Plus 简介 - 44 -
2.6.1 iSQL*Plus概览 - 46 -
2.6.2 SQL 和iSQL*Plus 交互作用 - 46 -
第3章 基本SELECT语句 - 46 -
3.1 SELECT语句的功能 - 47 -
3.2 选择所有列 - 48 -
3.3 选择指定的列 - 48 -
3.4 SQL语句的编辑 - 49 -
3.5 列标题默认属性 - 49 -
3.6 算术表达式 - 51 -
3.7 定义空值 - 52 -
3.7.1 NULL的注意事项 - 54 -
3.7.2 IS NULL 走索引 - 55 -
3.7.3 多表查询中的空值问题 - 56 -
3.7.3.1 情形一: - 57 -
3.7.3.2 情形二: - 58 -
3.8 定义列别名 - 59 -
3.9 连字运算符 - 61 -
3.9.1 文字字符串 - 62 -
3.10 相同的行--去重(distinct) - 62 -
3.11 Quote (q)--11g新增 - 64 -
3.12 Oracle特殊字符的处理 - 67 -
3.13 本章学习目的 - 68 -
第4章 条件和排序 - 69 -
4.1 用选择限定行 - 69 -
4.1.1 限定语法 - 70 -
4.1.2 使用WHERE子句 - 71 -
4.1.3 条件中使用字符串和日期 - 71 -
4.1.4 比较条件 - 72 -
4.1.4.1 使用比较条件 - 72 -
4.1.4.2 使用BETWEEN条件 - 73 -
4.1.4.3 使用IN条件 - 73 -
4.1.4.4 使用LIKE条件 - 75 -
一、 LIKE模糊查询如何使用索引 - 77 -
4.1.4.5 使用NULL/NOT NULL条件 - 79 -
4.1.5 逻辑条件(AND、OR 、NOT) - 81 -
4.1.5.1 注意问题 - 83 -
4.1.6 优先规则 - 84 -
4.2 排序 - 85 -
4.2.1 降序排序 - 86 -
4.2.2 用列别名排序 - 87 -
4.2.3 多列排序 - 88 -
4.3 总结 - 89 -
第5章 Oracle SQL 单行函数 - 89 -
5.1 学习目的 - 89 -
5.2 SQL函数介绍 - 89 -
5.3 SQL函数分类 - 90 -
5.3.1 单行函数 - 90 -
5.4 DUAL表介绍 - 91 -
5.4.1 扩展 - 92 -
5.5 字符函数 - 93 -
5.5.1 大小写处理函数 - 93 -
5.5.2 字符处理函数 - 94 -
5.6 数字函数 - 96 -
5.7 日期函数 - 97 -
5.7.1 系统日期 - 97 -
5.7.2 用日期计算 - 98 -
5.7.3 日期函数 - 99 -
5.7.4 转换函数 - 100 -
5.7.5 隐式数据类型转换 - 101 -
5.7.5.1 扩展 - 101 -
5.7.6 显式数据类型转换 - 103 -
5.7.6.1 日期格式模板 - 103 -
5.7.6.2 时间格式模板 - 104 -
5.7.6.3 数字格式模板 - 104 -
5.8 嵌套函数 - 104 -
5.9 通用函数 - 104 -
5.10 条件表达式 - 106 -
5.10.1 CASE表达式 - 106 -
5.10.2 DECODE函数 - 107 -
5.11 总结 - 108 -
5.12 扩展 - 109 -
5.12.1 如何将一个数字转换为字符串并且按照指定格式显示? - 109 -
5.12.2 ORA-00904: "wm_concat":invalid identifier错误解决 - 110 -
5.12.3 如何判断一个字符串是否含有中文汉字? - 115 -
5.12.4 在Oracle中,如何判断一个字符串是否为数字? - 117 -
5.12.5 在Oracle中,如何让日期显示为"年-月-日 时:分:秒"的格式? - 118 -
5.12.6 如何判断当天是否月份最后一天? - 119 -
第6章 用组函数合计数据 - 120 -
6.1 学习目的 - 120 -
6.2 组函数的概念 - 121 -
6.3 组函数使用 - 121 -
6.3.1 使用AVG、SUM、MAX、MIN - 122 -
6.3.1.1 MAX和MIN优化写法 - 122 -
6.4 使用COUNT - 124 -
6.4.1 使用COUNT(DISTINCT 列) - 125 -
6.4.2 COUNT(1)、COUNT(*)、COUNT(常量)、COUNT(主键)、COUNT(ROWID)、COUNT(非空列)、COUNT(允许为空列)、COUNT(DISTINCT 列名) - 125 -
6.5 组函数与空值 - 126 -
6.6 GROUP BY 子句 - 127 -
6.7 HAVING 子句 - 128 -
6.8 嵌套组函数 - 128 -
6.9 总结 - 129 -
第7章 从多表中查询数据 - 129 -
7.1 从多表中查询数据 - 129 -
7.2 有效连接条件与笛卡儿积 - 130 -
7.2.1 笛卡尔积是什么? - 130 -
第8章 连接的类型 - 131 -
8.1 等值连接 - 132 -
8.1.1 等值连接中的列别名、表别名 - 134 -
8.1.2 多于两个表的等值连接 - 135 -
8.2 外连接 - 136 -
8.2.1 外连接(扩展) - 140 -
8.3 自连接 - 143 -
8.3.1 自连接(Self Join) - 144 -
8.4 SQL 1999 连接语法介绍 - 145 -
8.4.1 交叉连接 - 145 -
8.4.2 自然连接 - 145 -
8.4.3 ON子句 - 146 -
8.5 关于SQL Join 中 where和and的区别 - 147 -
8.6 层次查询 分层查询 树形查询 - 150 -
8.6.1 层次查询语法结构 - 151 -
8.6.2 分析 - 153 -
8.6.3 SYS_CONNECT_BY_PATH 用于 行列转换 - 166 -
8.6.4 层次查询进阶 - 167 -
8.6.5 综合案例 - 170 -
8.6.6 快速构造大表 - 173 -
8.7 WITH语法 - 174 -
8.8 总结 - 175 -
第9章 子查询 - 175 -
9.1 学习目的 - 176 -
9.2 子查询介绍 - 176 -
9.3 子查询分类 - 178 -
9.3.1 单行子查询 - 178 -
? ?单行子查询:子查询只返回一行 - 178 -
? ?针对单行子查询的条件和普通条件一样 - 178 -
? ?单行子查询中使用HAVING - 178 -
? ?可以把单行子查询想像作一个可变的值。它和一个单一值没什么区别 - 178 -
9.3.2 单行子查询错误 - 181 -
9.3.3 多行子查询 - 182 -
9.3.4 总结 - 184 -
9.3.5 子查询扩展 - 184 -
9.3.5.1 标量子查询和关联子查询 - 185 -
9.3.5.2 子查询中的IN和EXISTS - 186 -
9.3.5.3 多行子查询 - 187 -
9.4 一个案例 - 188 -
第10章 合并查询(集合查询) - 190 -
10.1 UNION - 190 -
10.2 UNION ALL - 191 -
10.3 INTERSECT(相交) - 191 -
10.4 MINUS(相减) - 192 -
第11章 数据字典 - 192 -
11.1 动态性能视图 - 193 -
11.1.1 动态性能视图:注意事项 - 195 -
11.2 数据字典 - 196 -
11.2.1 数据字典视图 - 197 -
11.3 扩展 - 199 -
第12章 创建和管理表 - 201 -
12.1 数据库对象及表介绍 - 201 -
12.2 有关表的最大列数 - 202 -
12.3 表的分类 - 203 -
12.3.1 Oracle的表可以分为哪几类? - 203 -
12.4 表和列的命名规则 - 204 -
12.5 CREATE TABLE语句创建表 - 205 -
12.5.1 用子查询语法创建表(CTAS) - 206 -
12.5.1.1 CTAS及其优化 - 207 -
12.6 DEFAULT选项 - 207 -
12.7 引用表 - 208 -
12.8 数据类型介绍 - 209 -
12.8.1 时间数据类型 - 210 -
12.8.1.1 TIMESTAMP类型 - 210 -
12.8.1.2 INTERVAL YEAR TO MONTH数据类型 - 212 -
12.8.1.3 INTERVAL DAY TO SECOND数据类型 - 213 -
12.9 ALTER TABLE语句 - 214 -
12.9.1 添加列 - 214 -
12.9.2 修改列 - 215 -
12.9.2.1 修改字段的类型、大小和默认值(不能有数据) - 215 -
12.9.3 删除列(删除一个字段或清空某一列的数据) - 215 -
12.9.3.1 SET UNUSED选项 - 216 -
12.9.4 修改表的存储特征 - 217 -
12.9.5 修改表的名字 - 217 -
12.9.6 修改字段的名字 - 217 -
12.9.7 移动表所在的表空间 - 218 -
12.10 删除表 - 218 -
12.11 改变对象名称 - 218 -
12.12 截断表(TRUNCATE) - 219 -
12.13 给表和列添加注释 - 219 -
12.13.1 利用SQL生成需要的SQL语句 - 220 -
12.14 总结 - 222 -
第13章 操作数据 - 222 -
13.1 学习目的 - 222 -
13.2 数据操纵语言 - 223 -
13.3 INSERT插入数据的语法 - 223 -
13.3.1 INSERT插入值的变化 - 225 -
13.3.1.1 插入特殊值 - 225 -
13.3.1.2 插入指定日期 - 226 -
13.3.1.3 插入可输入变量 - 226 -
13.3.1.4 从另外一个表复制 - 226 -
13.3.1.5 在INSERT语句中使用子查询 - 227 -
13.4 UPDATE更新数据的语法 - 227 -
13.4.1 UPDATE更新的例子和问题 - 228 -
13.4.2 用子查询更新两列 - 228 -
13.4.3 更新基于另一个表的行(多表关联更新--使用子查询更新数据) - 229 -
13.4.3.1 例子 - 230 -
13.4.4 更新导致完整性约束报错 - 232 -
13.5 DELETE删除数据的语法 - 233 -
13.5.1 TRUNCATE语句 - 234 -
13.5.2 DELETE更新的例子和问题 - 235 -
13.5.3 从表中删除行 - 235 -
13.5.4 删除基于另一个表的行 - 235 -
13.5.4.1 一道OCM题 - 236 -
13.5.5 删除数据导致的完整性约束 - 237 -
13.5.6 查找和删除重复的记录 - 237 -
13.6 显示默认值 - 238 -
13.7 MERGE合并语句语法 - 238 -
13.7.1 MERGE语句在优化中的巨大作用 - 242 -
13.7.2 DML语句优化的方法 - 243 -
13.8 DELETE、DROP和TRUNCATE的区别是什么? - 244 -
13.9 本章总结 - 245 -
第14章 约束 - 245 -
14.1 约束的概念和原则 - 245 -
14.1.1 约束的概念 - 246 -
14.1.2 约束的原则 - 246 -
14.2 定义约束 - 246 -
14.2.1 定义约束的语法 - 246 -
14.2.2 定义约束分类 - 247 -
14.3 几种常见的约束 - 248 -
14.3.1 NOT NULL约束 - 249 -
14.3.2 UNIQUE约束 - 249 -
14.3.3 PRIMARY KEY约束 - 251 -
14.3.4 FOREIGN KEY约束 - 251 -
14.3.4.1 外键列的索引 - 255 -
14.3.4.2 外键的死锁(外键未加索引) - 258 -
一、 脚本 - 263 -
二、 找出没有建立索引的外键 - 265 -
14.3.5 CHECK约束 - 266 -
14.4 管理约束 - 268 -
14.4.1 添加约束 - 268 -
14.4.2 删除约束 - 270 -
14.4.3 禁用、启用约束 - 271 -
14.4.4 级联约束 - 271 -
14.4.5 查看约束 - 272 -
14.5 ocp - 273 -
14.6 总结 - 274 -
第15章 视图 - 274 -
15.1 视图的概念和优势 - 274 -
15.2 视图的概念 - 275 -
15.2.1 使用视图的优势 - 275 -
15.3 创建简单视图 - 276 -
15.3.1 视图中查询数据 - 277 -
15.4 创建复杂视图 - 277 -
15.5 视图中DML操作的执行规则 - 277 -
15.5.1 With Check OPTION子句 - 278 -
15.5.2 With READ ONLY子句 - 278 -
15.6 管理视图 - 278 -
15.6.1 修改视图 - 279 -
15.6.2 删除视图 - 279 -
15.6.3 内建视图 - 279 -
15.7 视图扩展 - 280 -
15.7.1 Oracle中的视图 - 280 -
15.7.2 在什么情况下可以对视图执行增、删、改操作? - 281 -
15.8 Top-N 分析 - 282 -
15.8.1 扩展 - 283 -
15.9 物化视图简介 - 285 -
15.9.1 扩展 - 286 -
查询重写(QueryRewrite): - 287 -
15.10 总结 - 290 -
第16章 其他数据库对象 - 290 -
16.1 其他数据库对象的作用 - 291 -
16.2 序列 - 291 -
16.2.1 序列的语法 - 292 -
16.2.2 定义及查询序列 - 292 -
16.2.3 NEXTVAL和CURRVAL伪列 - 293 -
16.2.4 使用序列 - 293 -
16.2.5 修改序列 - 294 -
16.2.6 删除序列 - 295 -
16.2.7 麦苗扩展 - 295 -
16.2.7.1 注意内容 - 295 -
16.2.7.2 性能问题 - 296 -
16.2.7.3 OCP和OCM题举例 - 296 -
16.3 索引 - 297 -
16.3.1 索引的优缺点 - 297 -
16.3.2 索引的使用原则 - 298 -
16.3.3 创建索引 - 299 -
16.3.4 查询索引 - 300 -
16.3.5 基于函数的索引 - 300 -
16.3.6 删除索引 - 301 -
16.3.7 麦苗扩展 - 301 -
16.3.7.1 如何预估即将创建索引的大小? - 301 -
16.3.7.2 如何监控索引的使用状况? - 302 -
16.3.7.3 哪些操作会导致索引失效? - 305 -
16.3.7.4 什么是索引的选择性(Index Selectivity)? - 306 -
16.3.7.5 为什么索引没有被使用? - 307 -
16.3.7.6 IS NULL如何用到索引? - 310 -
16.3.7.7 LIKE模糊匹配如何选择索引? - 310 -
16.4 同义词 - 311 -
16.4.1 概念语法 - 311 -
16.4.2 创建和删除同义词 - 311 -
16.4.3 扩展 - 312 -
16.4.3.1 PLAN_TABLE表的真谛 - 312 -
16.5 数据库链接(dblink) - 313 -
16.5.1 dblink扩展 - 314 -
16.5.2 一道OCM考题 - 317 -
=================================================== - 317 -
存储过程、函数、包的开发 - 318 -
第17章 PL/SQL 块 - 318 -
17.1 PL/SQL 简介 - 318 -
17.2 程序形式 - 318 -
17.3 编写规范 - 318 -
17.3.1 注释 - 318 -
17.3.2 标志符号的命名规范 - 319 -
17.4 PL/SQL 块(匿名块)结构 - 319 -
17.4.1 声明部分 - 320 -
17.4.2 可执行部分 - 322 -
第18章 控制结构(分支,循环,控制) - 323 -
18.1 简介 - 323 -
18.2 条件分支语句 --if - 323 -
18.3 循环 - 326 -
18.3.1 loop - 326 -
18.3.2 while循环 - 328 -
18.3.3 for 循环 - 330 -
18.3.3.1 游标for循环 - 332 -
18.4 顺序控制 –goto,null - 333 -
18.4.1 goto 语句 - 333 -
18.4.2 null - 335 -
第19章 异常处理 - 337 -
19.1 概述 - 337 -
19.2 异常处理 - 337 -
19.2.1 预定义异常 ( Predefined ) - 337 -
19.2.2 非预定义异常(Non Predefined ) - 343 -
19.2.3 自定义异常(User_define) - 345 -
19.3 抛出异常 - 348 -
19.3.1 raise - 348 -
19.3.2 RAISE_APPLICATION_ERROR - 349 -
19.4 存过中捕获异常的行号 - 350 -
19.5 如何捕获错误并记录到表中? - 354 -
第20章 存储过程(Stored Procedure) - 359 -
20.1 存储过程和函数的区别是什么? - 359 -
20.2 示例 - 359 -
20.2.1 执行和调用存储过程 - 360 -
20.2.1.1 执行存过 - 360 -
20.2.1.2 存过调用存过 - 362 -
第21章 Oracle中的触发器 - 362 -
21.1 一些常用的监控 - 369 -
21.2 Oracle的自治事务是什么? - 374 -
第22章 Oracle中过程/函数返回集合 - 376 -
22.1.1 函数返回系统游标 - 376 -
第23章 Oracle分批提交DML - 377 -
23.1 分批update - 377 -
23.2 分批delete - 378 -
23.3 分批insert - 379 -
-
Oracle 备份恢复(rman、闪回、数据泵、exp、数据迁移等)
目录 - 1 -
第1章 备份和恢复的概念 - 15 -
1.1 故障类别 - 17 -
1.1.1 语句失败 - 17 -
1.1.2 用户进程失败 - 18 -
1.1.3 网络故障 - 19 -
1.1.4 用户错误 - 19 -
1.1.5 介质故障 - 20 -
1.2 Oracle的SCN是什么? - 20 -
1.2.1 SCN的组成 - 20 -
1.2.2 SCN的分类 - 21 -
1.2.3 如何查看系统当前SCN - 22 -
1.2.4 SCN与时间的相互转换 - 22 -
1.2.5 SYS.SMON_SCN_TIME字典基表 - 24 -
1.3 实例恢复(实例故障) - 25 -
1.3.1 实例故障 - 25 -
1.3.2 了解实例恢复:检查点 (CKPT) 进程 - 26 -
1.3.3 实例恢复的阶段 - 28 -
1.3.4 优化实例恢复 - 30 -
1.3.4.1 使用 MTTR 指导 - 31 -
1.3.5 麦苗扩展 - 32 -
1.3.5.1 实例恢复(前滚和回滚) - 32 -
1.4 配置可恢复性 - 35 -
1.5 配置快速恢复区 - 36 -
1.6 测验 - 37 -
1.7 小结 - 37 -
第2章 闪回体系 - 38 -
2.1 什么是闪回?闪回有哪些分类? - 39 -
2.1.1 闪回查询(Flashback Query) - 42 -
2.1.2 闪回版本查询(Flashback Version Query) - 44 -
2.1.3 闪回事务查询(Flashback Transaction Query) - 46 -
2.1.4 闪回表(Flashback TABLE) - 47 -
2.1.5 闪回删除(Flashback DROP) - 51 -
2.1.6 闪回数据库(Flashback Database) - 52 -
2.1.7 闪回数据归档(Flashback Data Archive) - 52 -
2.1.8 相关OCP题目 - 52 -
2.2 Oracle的回收站是什么? - 54 -
2.2.1 相关OCP题目 - 56 -
2.3 什么是闪回数据归档(Flashback Data Archive)? - 58 -
2.3.1 相关OCP题目 - 60 -
2.4 什么是闪回数据库? - 63 -
2.4.1 相关OCP题目 - 65 -
2.5 其它扩展 - 67 -
2.5.1 如何让普通用户可以对DBA_SOURCE视图进行闪回查询? - 67 -
第3章 执行数据库备份 - 68 -
3.1 课程目标 - 68 -
3.2 Oracle Secure Backup - 70 -
3.3 用户管理的备份 - 71 -
3.4 术语 - 72 -
3.5 Recovery Manager (RMAN) - 74 -
3.5.1 rman 连接数据库 - 75 -
3.5.2 RMAN数据字典 - 75 -
3.5.3 rman命令 - 76 -
3.6 RMAN简介 - 76 -
3.7 RMAN的配置 - 79 -
3.7.1 定义RMAN配置 - 79 -
3.7.2 显示RMAN默认配置 - 80 -
3.7.2.1 CONFIGURE RETENTION POLICY 配置备份保留策略 - 81 -
一、 设置 RMAN 备份的保存策略 - 84 -
3.7.2.2 CONFIGURE BACKUP OPTIMIZATION 配置备份优化 - 86 -
3.7.2.3 CONFIGURE DEFAULT DEVICE TYPE 配置 IO 设备类型 - 89 -
3.7.2.4 CONFIGURE CONTROLFILE AUTOBACKUP 配置控制文件自动备份 - 89 -
一、 控制文件快照自动备份 - 90 -
二、 11G新特性-控制文件延迟自动备份 - 90 -
3.7.2.5 CONFIGURE DEVICE TYPE 设置并行备份 - 96 -
3.7.2.6 CONFIGURE DATAFILE BACKUP COPIES 设置备份文件冗余度 - 97 -
3.7.2.7 CONFIGURE MAXSETSIZE 配置备份集的最大尺寸 - 98 -
3.7.2.8 CONFIGURE ARCHIVELOG DELETION POLICY - 98 -
3.7.3 FORMAT参数 - 102 -
3.7.4 配置备份设置 - 102 -
3.7.4.1 调度备份:策略 - 104 -
3.7.4.2 调度备份:选项 - 105 -
3.7.5 OCP - 110 -
3.8 rman 其它命令 - 113 -
3.8.1 列出备份信息(list) - 113 -
3.8.2 删除备份(delete) - 115 -
3.8.2.1 RMAN中关于备份或归档文件状态OBSOLETE和EXPIRED的区别是什么? - 118 -
3.8.3 报告命令(report) - 119 -
3.8.3.1 可以报告哪些文件需要备份 - 119 -
3.8.3.2 报告不可恢复的备份集 - 119 -
3.8.3.3 报告数据库的信息 - 120 -
3.8.4 交叉检查(crosscheck) - 125 -
3.8.5 show - 126 -
3.8.6 VALIDATE DATABASE - 126 -
3.9 批处理命令RUN - 126 -
3.10 物理备份和逻辑备份分别是什么? - 127 -
3.11 catalog库 - 128 -
3.11.1 恢复目录(Recovery Catalog)的概念 - 128 -
3.11.2 如何创建恢复目录(Recovery Catalog) - 129 -
3.11.2.1 例子 - 129 -
3.11.2.2 官网 - 131 -
一、 Prerequisites - 131 -
二、 基本恢复目录 - 133 -
三、 虚拟私有目录--RVPC(RMAN virtual private catalog) - 133 -
3.11.3 Recovery catalog resyncing 恢复目录同步 - 138 -
3.11.4 IMPORT CATALOG - 138 -
3.11.4.1 例子 - 141 -
3.11.5 Managing a Recovery Catalog - 142 -
3.11.6 OCP - 142 -
3.12 BACKUP命令---RMAN备份 - 151 -
3.12.1.1 whole backup - 153 -
3.12.1.2 full backup - 154 -
一、 完全备份示例 - 156 -
3.12.2 备份表空间 - 157 -
3.12.2.1 temp表空间 - 158 -
3.12.3 备份指定数据文件 - 158 -
3.12.3.1 system - 159 -
3.12.4 备份控制文件 - 159 -
3.12.4.1 在线镜像备份 - 162 -
3.12.4.2 自动备份 - 162 -
一、 显式自动备份 - 162 -
二、 隐式自动备份 - 163 -
3.12.4.3 手动备份 - 163 -
一、 备份集备份 - 163 -
二、 镜像复制备份 - 163 -
三、 重建脚本 - 164 -
3.12.4.4 控制文件快照 - 165 -
3.12.5 备份spfile - 172 -
3.12.6 备份归档日志文件 - 172 -
3.12.6.1 归档重做日志的备份与恢复 - 173 -
3.12.6.2 联机日志的备份 - 174 -
3.13 管理备份 - 175 -
3.13.1 查看备份报告 - 177 -
3.13.2 监视快速恢复区 - 178 -
3.13.3 使用 RMAN 命令行 - 179 -
3.14 麦苗扩展 - 180 -
3.14.1 差异增量备份和累积增量备份的区别是什么? - 180 -
3.14.2 什么是块改变跟踪(Block Change Tracking)? - 185 -
3.14.2.1 OCP - 186 -
3.15 我的备份脚本 - 188 -
3.15.1 linux - 189 -
3.15.1.1 nocatalog全备 - 189 -
一、 简易版-归档 - 191 -
二、 简易版-非归档mount全备 - 192 -
3.15.1.2 catalog增量备份脚本 - 193 -
一、 我自己的 - 195 -
3.15.1.3 Nocatalog增量备份脚本 - 198 -
一、 我自己的 - 211 -
3.15.2 windows - 213 -
3.15.2.1 全备--我自己的 - 215 -
3.15.2.2 增量备份 - 216 -
3.15.2.3 设置windows定时任务 - 219 -
一、 XP下设置 - 222 -
3.16 OCP - 224 -
3.17 小测验 - 234 -
3.18 小结 - 234 -
第4章 执行数据库恢复 - 234 -
4.1 课程目标 - 234 -
4.2 打开数据库 - 235 -
4.2.1 使数据库保持在打开状态 - 237 -
4.3 数据库归档恢复 - 238 -
4.4 对数据库进行完全介质恢复 - 238 -
4.5 物理文件恢复 - 239 -
4.5.1 口令文件(密码文件) - 239 -
4.5.2 spfile 丢失 - 239 -
4.5.2.1 数据库没有挂掉 - 239 -
4.5.2.2 数据库已经挂掉 - 240 -
一、 从rman的自动备份中找回 - 240 -
二、 手动创建 - 246 -
4.5.3 controlfile丢失 - 246 -
4.5.3.1 控制文件恢复前的准备 - 248 -
4.5.3.2 有备份情况下的恢复 - 251 -
一、 控制文件之一丢失(单个控制文件丢失或损坏) - 251 -
二、 各种情况下的丢失 - 252 -
三、 使用控制文件快照 - 275 -
4.5.3.3 重建控制文件---无备份情况下的恢复 - 278 -
一、 重建控制文件resetlogs和noresetlogs的区别 - 280 -
二、 在线日志无损情况下的重建 - 300 -
三、 在线日志损坏情况下的重建 - 301 -
四、 具有只读数据文件情况下的重建 - 303 -
4.5.3.4 控制文件不一致 - 307 -
4.5.3.5 OCP - 308 -
4.5.4 Redo文件丢失(online+archive) - 310 -
4.5.4.1 在线Redo日志 - 310 -
一、 查看日志文件的状态 - 312 -
二、 日志文件的恢复方法 - 313 -
三、 数据库归档/非归档模式下inactive redo异常ORA-00316 ORA-00327 - 315 -
四、 正常关闭数据库current redo异常ORA-00316 ORA-01623 - 318 -
五、 数据库异常关闭current/active redo异常ORA-00316 ORA-01624 ORA-01194 - 321 -
六、 Loss of a Redo Log File - 332 -
七、 Loss of a Redo Log Group - 337 -
八、 loss all online redo logs - 339 -
九、 数据库未挂掉的情况下的恢复 - 340 -
4.5.4.2 恢复归档日志archivelog - 341 -
一、 restore archivelog 的各种选项 - 341 -
二、 我的例子 - 351 -
三、 怎样清除v$archived_log视图中的过期信息 - 356 -
4.5.4.3 OCP - 358 -
4.5.5 datafile丢失 - 362 -
4.5.5.1 在NOARCHIVELOG模式下丢失了数据文件 - 364 -
4.5.5.2 在ARCHIVELOG模式下丢失了非关键数据文件 - 365 -
一、 在ARCHIVELOG模式下丢失了系统关键数据文件 - 366 -
4.5.5.3 open状态下可以脱机的文件(sysaux,user等等) - 367 -
一、 修改数据文件名称 - 368 -
4.5.5.4 open状态下不能脱机的文件(system,undo,temp) - 368 -
一、 undo文件丢失 - 373 -
4.5.5.5 Loss of a Noncritical Data File in ARCHIVELOG Mode - 374 -
4.5.5.6 Loss of a System-Critical Data File in ARCHIVELOG Mode - 374 -
一、 system数据文件丢失 - 375 -
二、 【RMAN】SYSTEM表空间数据文件丢失恢复模拟 - 380 -
三、 system - 395 -
4.5.5.7 非归档模式 - 397 -
4.5.5.8 如果删除表空间之前删除了表空间文件,解决办法: - 398 -
4.5.5.9 OCP - 398 -
4.5.5.10 数据文件没有备份的情况 - 399 -
4.5.6 表空间丢失 - 406 -
4.5.6.1 临时表空间数据文件(tempfile)丢失 - 408 -
4.5.6.2 Recovering from a Lost Index Tablespace - 411 -
4.5.6.3 Recovering a Read-Only Tablespace - 412 -
4.5.6.4 undo表空间 - 412 -
一、 有备份 - 426 -
二、 无备份 - 429 -
三、 使用bbed恢复 - 454 -
四、 数据库还没有挂掉的情况下 - 454 -
4.5.7 ORACLE丢失各种文件导致数据库不能OPEN恢复 - 455 -
4.6 麦苗扩展 - 458 -
4.6.1 恢复的分类 - 458 -
4.6.2 介质恢复(MEDIA RECOVERY) - 459 -
4.6.2.1 数据库还原(RESTORE)与数据库恢复(RECOVER) - 459 -
4.6.2.2 完全恢复和不完全恢复 - 462 -
4.6.2.3 完全恢复(Complete Recovery) - 463 -
一、 完全恢复的几种场景 - 465 -
4.6.2.4 不完全恢复的几种类型 - 475 -
4.6.2.5 实例恢复和介质恢复的区别 - 476 -
4.6.3 rm -rf误操作的恢复过程----数据库在无备份且open情况下的恢复 - 477 -
4.6.3.1 实验 - 479 -
4.6.3.2 登录SQLPLUS查看基本信息 - 479 -
4.6.3.3 模拟rm -rf误操作 - 481 -
4.6.3.4 开始恢复 - 483 -
一、 判断句柄位置 - 483 -
二、 恢复数据文件、控制文件、tmp文件和online log文件 - 485 -
三、 如果数据库还没有关掉则关闭数据库 - 489 -
4.6.3.5 总结 - 491 -
4.6.4 TRUNCATE恢复方法 - 491 -
4.6.5 TSPITR(表空间基于时间点恢复) - 492 -
4.6.6 在丢失归档的情况下如何进行数据文件的恢复 - 495 -
4.6.7 数据文件OFFLINE之后必须要做的一件事是什么? - 495 -
4.6.8 什么是DRA(Data Recovery Advisor)? - 498 -
4.6.8.1 Data Recovery Advisor(数据恢复指导) - 499 -
4.6.8.2 数据恢复指导 - 501 -
4.6.8.3 数据故障 - 503 -
一、 列出数据故障 - 504 -
二、 提供修复建议 - 505 -
4.7 基于用户管理恢复的方法 - 508 -
4.8 基于用户管理的完全恢复 - 508 -
4.9 小测验 - 510 -
第5章 日志挖掘logminer - 511 -
5.1 演示 - 515 -
第6章 利用增量数据库备份进行恢复 - 516 -
6.1 自己的脚本 - 516 -
第7章 RMAN高级应用之Duplicate复制数据库 - 519 -
7.1 简介 - 519 -
7.2 duplicate体系结构 - 520 -
7.2.1 Duplicating an Active Database - 521 -
7.2.1.1 Prerequisites Specific to Active Database Duplication - 525 -
7.2.1.2 自己的例子 - 525 -
7.2.2 Cloning A Database On The Same Server Using Rman Duplicate From Active Database - 526 -
7.2.2.1 Configure The Network - 527 -
7.2.2.2 Create A Password File For The New Database - 528 -
7.2.2.3 Create An Init.Ora For The New Database - 528 -
7.2.2.4 Create The Admin Directory For The New Database - 528 -
7.2.2.5 Shutdown And Startup Mount The Source Database - 528 -
7.2.2.6 Startup Nomount The New Database - 529 -
7.2.2.7 Connect To The Target (Source) And Auxiliary (New Clone)Databases Using Rman - 529 -
7.2.2.8 Execute The Duplicate Command - 529 -
7.2.2.9 Remove The Old Pfile - 535 -
7.2.2.10 Check The New Database - 535 -
7.2.3 Duplicating a Database with a Target Connection - 536 -
7.2.4 Duplicating a Database with Recovery Catalog Without Target Connection - 537 -
7.2.5 Duplicating a Database Without Recovery Catalog or Target Connection - 538 -
7.2.5.1 老师例子 - 539 -
7.3 Creating a Backup-Based Duplicate Database - 556 -
7.3.1 Creating an Initialization Parameter File for the Auxiliary Instance - 557 -
7.3.2 Specifying New Names for Your Destination - 558 -
7.3.2.1 SET NEWNAME - 559 -
7.3.3 Specifying Parameters for File Naming - 562 -
7.3.3.1 DB_FILE_NAME_CONVERT - 563 -
7.4 OCP - 563 -
第8章 BBED简介 - 567 -
第9章 rman之块介质恢复 - 568 -
9.1 坏块的简介 - 568 -
9.2 坏块的检测方法 - 569 -
9.3 BMR恢复坏块 - 571 -
9.4 如何确定坏块的对象名 - 571 -
9.5 如果发现有坏块,那么如何检索其它未坏的数据? - 572 -
9.6 模拟坏块 - 573 -
9.6.1 blockrecover恢复坏块 - 573 -
9.6.1.1 创建演示环境 - 573 -
9.6.1.2 单块数据块损坏的恢复处理 - 574 -
9.6.1.3 多块数据块损坏的恢复处理 - 575 -
9.6.1.4 坏块的对象定位与影响 - 577 -
9.6.2 bbed模拟 - 579 -
9.6.2.1 bbed修复坏块示例 - 580 -
9.7 坏块模拟脚本 - 584 -
9.8 OCP - 585 -
第10章 OS备份(物理备份)和恢复 - 587 -
10.1 操作系统备份(物理备份) - 587 -
10.1.1 冷备份(一致性备份、脱机备份) --cool backup - 587 -
10.1.1.1 冷备份的优缺点 - 588 -
10.1.1.2 冷备份一般步骤 - 588 -
10.1.1.3 冷备脚本的写法 - 589 -
一、 冷备脚本 - 592 -
10.1.1.4 存在冷备下的还原(非归档模式) - 592 -
一、 丢失数据文件 - 592 -
二、 日志文件丢失 - 608 -
三、 控制文件丢失 - 612 -
四、 参数文件丢失 - 616 -
五、 密码文件丢失 - 616 -
10.1.1.5 OCP - 617 -
10.1.2 热备份(非一致性备份、联机备份) --只能用于归档模式 - 617 -
10.1.2.1 简介 - 617 -
10.1.2.2 具体操作 - 618 -
一、 热备的过程 - 618 -
二、 基于数据库的热备 - 619 -
三、 基于表空间的热备 - 620 -
四、 控制文件的热备 - 621 -
五、 参数文件的热备 - 622 -
六、 临时表空间的数据文件、日志文件不需要备份 - 622 -
10.1.2.3 热备份的相关视图 - 622 -
10.1.2.4 热备ocp - 625 -
10.1.2.5 存在热备下的还原 - 629 -
一、 还原控制文件 - 629 -
二、 还原数据文件 - 632 -
第11章 非归档模式备份恢复 - 637 -
11.1 非归档的备份方法 - 640 -
11.1.1 非归档全备份 - 641 -
11.2 非归档模式下的恢复 - 643 -
11.3 非归档模式的备份与恢复示例(使用冷备) - 646 -
第12章 OPEN RESETLOGS - 650 -
12.1 使用alter database open resetlogs的场合 - 650 -
12.2 为什么使用RESETLOGS? - 650 -
12.3 RESETLOGS会执行什么操作? - 650 -
12.4 ocp - 651 -
第13章 其它 - 651 -
13.1 下列4条RECOVER DATABASE命令的区别是什么 - 651 -
13.2 RESETLOGS和NORESETLOGS的区别是什么? - 652 -
第14章 跨版本恢复 - 653 -
14.1 RMAN可以跨版本或跨平台执行还原或复制命令吗? - 653 -
14.2 跨小版本 - 655 -
14.3 跨大版本 - 656 -
第15章 只存在备份片的数据库恢复过程 - 656 -
15.1.1 总结 - 656 -
第16章 Oracle恢复流程图 - 656 -
第17章 移动数据 - 658 -
17.1 移动数据:一般体系结构 - 659 -
17.2 exp和imp - 660 -
17.2.1 EXP导出数据 - 661 -
17.2.1.1 导出表 - 664 -
17.2.1.2 导出方案 - 665 -
17.2.1.3 导出数据库 - 665 -
17.2.2 IMP导入数据 - 665 -
17.2.2.1 导入表 - 667 -
17.2.2.2 导入方案 - 668 -
17.2.2.3 导入数据库 - 668 -
17.2.2.4 imp导入常见问题处理 - 670 -
17.2.3 exp和imp的一些其它用法 - 671 -
17.2.4 其它实用内容 - 672 -
17.2.4.1 可以从dmp文件获取哪些信息? - 672 -
一、 获取基本信息:导出的版本、时间、导出的用户 - 672 -
二、 获取dmp文件中的表信息 - 672 -
三、 解析dmp文件生成parfile文件 - 673 -
四、 如何查看dmp文件的字符集 - 673 -
五、 如何将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中? - 674 -
17.2.4.2 exp的query参数和parfile的使用 - 675 -
一、 query和parfile示例 - 676 -
17.2.4.3 什么是延迟段创建(Deferred Segment Creation)? - 677 -
一、 Oracle 11g不能导出空表的三种解决方法 - 679 -
17.2.4.4 exp导出ASH数据 - 680 -
一、 方法1:ctas建表导出,有的客户不让建表 - 680 -
二、 方法2:导出基表的数据 - 682 -
17.2.5 常见错误 - 684 -
17.2.5.1 EXP-00091: Exporting questionable statistics 问题处理方法 - 684 -
17.2.5.2 EXP-00026: conflicting modes specified - 687 -
17.2.5.3 IMP-00013: only a DBA can import a file exported by another DBA - 689 -
17.2.5.4 IMP-00031: 必须指定 FULL=Y 或提供 FROMUSER/TOUSER 或 TABLES 参数 - 690 -
17.2.5.5 IMP-00002: 无法打开要读取的imp D:/admin.dmp - 692 -
17.2.5.6 EXP-00008: 遇到 ORACLE 错误 904 - 692 -
17.2.5.7 imp导入报错:IMP-00037: Character set marker unknown - 693 -
17.2.5.8 IMP-00010: not a valid export file, header failed verification - 696 -
17.2.5.9 imp-00051,imp-00008 - 698 -
17.2.5.10 IMP-00132: first file in the multi-file export is 32 - 699 -
17.2.6 注意事项 - 699 -
17.3 数据泵(expdp和impdp) - 699 -
17.3.1 Oracle 数据泵:概览 - 701 -
17.3.2 Oracle 数据泵:优点 - 702 -
17.3.3 Oracle Database 11g 中的数据泵增强功能 - 703 -
17.3.4 数据泵的目录对象 - 704 -
17.3.4.1 创建目录对象 - 705 -
17.3.5 数据泵导出与导入客户机:概览 - 706 -
17.3.6 数据泵实用程序:界面与模式 - 707 -
17.3.7 使用 Database Control 进行数据泵导出 - 708 -
17.3.8 数据泵导出示例 - 709 -
17.3.8.1 数据泵导出示例:基本选项 - 710 -
17.3.8.2 数据泵导出示例:高级选项 - 710 -
17.3.8.3 数据泵导出示例:文件 - 711 -
17.3.8.4 数据泵导出示例:调度 - 713 -
17.3.8.5 数据泵导出示例:复查 - 714 -
17.3.8.6 数据泵导入示例:impdp - 714 -
17.3.9 使用 Oracle Enterprise Manager 监视数据泵作业 - 715 -
17.3.10 以数据泵旧模式提供移植支持 - 716 -
17.3.11 数据泵旧模式 - 717 -
17.3.12 管理文件位置 - 719 -
17.3.13 麦苗扩展 - 720 -
17.3.13.1 数据泵的一些常用语法命令 - 720 -
17.3.13.2 如何彻底停止expdp进程? - 725 -
17.3.13.3 如何跟踪expdp和SQL*Plus命令? - 727 -
17.3.13.4 如何退出exp、imp、telnet等等交互窗口? - 727 -
17.3.13.5 Oracle用户密码含特殊字符时如何登陆? - 728 -
17.3.13.6 如何获取数据库DDL的创建语句 - 729 -
一、 imp示例(SHOW=Y) - 729 -
二、 imp的indexfile选项(indexfile导出表和索引的ddl语句) - 732 -
三、 impdp示例 - 734 -
四、 只导出元数据完整示例 - 737 -
五、 【IMPDP】使用 TRANSFORM选项去掉表空间和存储子句 - 737 -
17.3.13.7 过滤数据(exclude、include) - 738 -
一、 Exclude 反规则 - 739 -
二、 Include 正规则 - 740 -
三、 高级过滤CONTENT参数 - 741 -
四、 过滤已经存在的数据TABLE_EXISTS_ACTION参数 - 742 -
五、 导出job - 742 -
六、 导出dblink - 743 -
七、 导出公共同义词 - 743 -
17.3.13.8 重定义表的Schema或表空间 - 743 -
17.3.13.9 优化导入/导出效率(expdp/impdp) - 744 -
17.3.13.10 impdp传输表空间(OCM考题) - 748 -
17.3.13.11 注意事项 - 750 -
一、 expdp 导出sys用户下的表报错ORA-39165 和ORA-39166 - 750 -
17.3.13.12 impdp的一些选项 - 752 -
一、 NETWORK_LINK 选项 - 752 -
二、 oracle expdp时显示时间 metrics - 752 -
17.3.13.13 如何导出存储过程、函数、包和触发器的定义语句?如何导出表的结构?如何导出索引的创建语句? - 753 -
17.3.13.14 12c expdp VIEWS_AS_TABLES选项 - 766 -
17.3.13.15 其它错误 - 768 -
一、 数据泵导出出现ORA-31617错误 - 768 -
17.3.13.16 数据泵导出导入卡死 - 771 -
一、 AIX环境下EXPDP卡住问题处理 - 773 -
17.3.13.17 使用隐含Trace参数诊断Oracle Data Pump故障 - 775 -
17.4 SQL*Loader - 785 -
17.4.1 使用 SQL*Loader 加载数据 - 787 -
17.4.2 SQL*Loader 控制文件 - 787 -
17.4.3 直接路径加载与常规路径加载的比较 - 790 -
17.4.4 麦苗扩展 - 791 -
17.4.4.1 如何将文本文件或Excel中的数据导入数据库? - 791 -
一、 sqlldr高级用法 - 793 -
二、 sqlldr报错处理 - 795 -
17.4.4.2 简单示例 - 797 -
17.4.4.3 2000W酒店开房数据导入 - 798 -
17.5 外部表 - 803 -
17.5.1 外部表的优点 - 804 -
17.5.2 使用ORACLE_LOADER定义外部表 - 805 -
17.5.3 使用ORACLE_DATAPUMP填充外部表 - 806 -
17.5.4 使用外部表 - 807 -
17.5.5 麦苗扩展 - 807 -
17.5.5.1 基础 - 807 -
17.5.5.2 外部表示例 - 809 -
17.5.5.3 只有1列 - 809 -
17.5.5.4 外部表的parallel - 810 -
17.5.5.5 利用外部表查看告警日志 - 810 -
一、 先来个最简单的使用方法 - 810 -
二、 再来个稍微复杂点的 - 812 -
17.5.5.6 2000W酒店开房数据导入 - 814 -
17.6 有关sqlldr和外部表的一道OCM考题 - 815 -
17.7 小测验 - 820 -
17.8 小结 - 820 -
-
Oracle 管理部分(包括体系结构等内容)
目录 - 1 -
第1章 管理数据并发处理(锁和会话) - 14 -
1.1 课程目标 - 14 -
1.2 锁 - 15 -
1.2.1 显式锁定 - 17 -
1.2.2 隐式锁定 - 17 -
1.2.3 按照对象分类锁定 - 17 -
1.3 锁定机制 - 18 -
1.4 数据并发处理 - 19 -
1.5 DML 锁 - 21 -
1.6 入队机制 - 22 -
1.7 锁冲突 - 23 -
1.8 锁冲突的可能原因 - 24 -
1.9 检测锁冲突 - 25 -
1.10 解决锁冲突 - 26 -
1.10.1 使用 SQL 解决锁冲突 - 27 -
1.11 死锁 - 28 -
1.12 锁的扩展 - 28 -
1.12.1 分类 - 29 -
1.12.2 锁的兼容性 - 32 -
1.12.3 锁的数据字典视图 - 33 -
1.12.4 SELECT ... FOR UPDATE - 36 -
1.12.5 DML_LOCKS和DDL_LOCK_TIMEOUT参数 - 36 -
1.12.6 在编译存储过程、函数等对象时无响应 - 36 -
1.12.7 新建或重建索引的锁信息 - 36 -
1.12.8 对于错误"ORA-08104: this index object 68111 is being online built or rebuilt",应该如何处理? - 38 -
1.12.9 会话 - 39 -
1.12.9.1 V$SESSION视图 - 39 -
1.12.9.2 如何查看某一个会话是否被其它会话阻塞? - 42 -
1.12.9.3 如何查到会话正在执行的SQL语句? - 43 -
1.12.9.4 如何彻底杀掉会话?V$SESSION的STATUS为KILLED的情况下如何找到相关的后台OS进程? - 43 -
1.12.9.5 如何让普通用户可以杀掉自己用户的会话? - 44 -
1.12.9.6 SESSIONS和PROCESSES的关系 - 46 -
1.12.9.7 如何根据OS进程快速获得DB进程信息与正在执行的语句? - 47 -
1.12.9.8 怎么杀掉特定的数据库会话? - 48 -
1.12.9.9 如何快速的清理Oracle的进程? - 48 -
1.13 小测试 - 48 -
1.14 小结 - 49 -
第2章 管理还原数据 - 49 -
2.1 还原数据 - 50 -
2.2 事务处理和还原数据 - 52 -
2.3 存储还原信息 - 53 -
2.4 还原数据与重做数据 - 54 -
2.5 管理还原 - 55 -
2.5.1 配置还原保留时间 - 56 -
2.6 保证还原保留时间 - 57 -
2.7 将还原表空间改为固定大小 - 58 -
2.8 一般还原信息 - 59 -
2.9 使用还原指导 - 60 -
2.10 查看系统活动 - 61 -
2.11 扩展 - 62 -
2.11.1 Undo的作用 - 62 -
2.11.2 Undo段存储的内容 - 63 -
2.11.3 块清除 - 64 -
2.11.4 Undo表空间 - 65 -
2.11.5 系统回滚段(System Rollback Segment)与延迟回滚段(Deferred Rollback Segment) - 67 -
2.11.6 ORA-01555 - 67 -
2.11.7 Redo日志文件(Redo Log Files)的作用是什么? - 68 -
2.11.8 如何管理联机Redo日志组与成员? - 69 -
2.11.9 在Oracle中,如果联机Redo日志文件损坏,那么如何恢复? - 70 -
2.12 小测验 - 70 -
2.13 小结 - 71 -
第3章 实施Oracle DB审计 - 72 -
3.1 责任分离 - 73 -
3.2 数据库安全性 - 74 -
3.3 监视合规性 - 75 -
3.4 标准数据库审计 - 76 -
3.5 配置审计线索 - 78 -
3.6 统一审计线索 - 79 -
3.6.1 指定审计选项 - 80 -
3.7 默认审计 - 81 -
3.7.1 Enterprise Manager 审计页 - 82 -
3.7.2 使用和维护审计信息 - 83 -
3.7.3 基于值的审计 - 84 -
3.8 细粒度审计 - 86 -
3.8.1 FGA 策略 - 87 -
3.8.2 审计的 DML 语句: - 89 -
3.8.3 FGA 准则 - 90 -
3.9 SYSDBA审计 - 91 -
3.10 维护审计线索 - 92 -
3.11 Oracle Audit Vault - 93 -
3.12 麦苗扩展 - 94 -
3.12.1.1 什么是审计(Audit)? - 94 -
3.12.1.2 迁移SYS.AUD$表到其它表空间 - 95 -
3.12.1.3 审计如何分类 - 97 -
3.12.1.4 审计中BY ACCESS和BY SESSION的区别是什么? - 97 -
3.12.1.5 如何对SYSDBA和SYSOPER进行审计? - 97 -
3.12.1.6 什么是细粒度审计(精细化审计)? - 98 -
3.12.1.7 如何禁用或删除某个用户下的所有细粒度审计? - 100 -
3.12.1.8 FGA审计和标准审计有什么区别? - 100 -
3.13 小测验 - 101 -
3.14 小结 - 101 -
第4章 数据库维护(AWR、ASH、ADDM) - 102 -
4.1 数据库维护 - 103 -
4.2 查看预警历史记录 - 104 -
4.2.1 术语 - 105 -
4.3 Oracle 优化程序:概览 - 106 -
4.4 统计信息 - 107 -
4.4.1 优化程序统计信息 - 107 -
4.4.2 使用"管理优化程序统计信息"页 - 108 -
4.4.3 手动搜集优化程序统计信息 - 109 -
4.4.4 用于搜集统计信息的首选项 - 111 -
4.4.5 麦苗扩展 - 112 -
4.4.5.1 统计信息的简介和分类 - 112 -
4.4.5.2 索引统计信息 - 115 -
4.4.5.3 列的统计信息 - 115 -
4.4.5.4 系统统计信息 - 118 -
4.4.5.5 内部对象统计信息 - 120 -
4.4.5.6 自动收集统计信息 - 120 -
一、 统计信息何时变为陈旧状态(10%的含义)? - 122 -
二、 修改自动收集统计信息的时间 - 123 -
三、 DBA_TAB_MODIFICATIONS - 125 -
4.4.5.7 怎样收集表的统计信息?怎样收集分区表的统计信息? - 126 -
4.4.5.8 什么是动态采样(Dynamic Sampling)? - 126 -
4.4.5.9 如何锁住统计信息? - 130 -
4.4.5.10 什么是待定的统计信息(Pending Statistic)? - 132 -
4.4.5.11 什么是直方图(Histogram)? - 137 -
4.4.5.12 什么是多列统计信息(Extended Statistics)? - 151 -
4.4.5.13 基表COL_USAGE$的作用是什么? - 160 -
4.4.5.14 新建索引后统计信息是否自动收集? - 160 -
4.4.5.15 什么是基数反馈(Cardinality Feedback)? - 160 -
4.4.5.16 如何查询表和索引的历史统计信息 - 165 -
4.4.5.17 Oracle如何并发地收集统计信息? - 167 -
4.4.5.18 当收集表的统计信息时应该注意哪些问题? - 168 -
4.4.5.19 什么是基数(Cardinality)和可选择率(Selectivity)? - 170 -
4.4.5.20 使用SPLIT来拆分某个分区的时候,其拆分出来的新分区的统计信息行数是多少? - 177 -
4.4.5.21 当自动收集任务运行时,哪些对象会被收集? - 178 -
4.4.5.22 分区表统计信息的更新机制是怎样的? - 178 -
4.4.5.23 如何查询表的DML操作数据变化量? - 179 -
4.4.5.24 对表执行TRUNCATE操作会将表的统计信息也清除掉吗? - 181 -
4.5 自动工作量资料档案库 (AWR) - 182 -
4.5.1 AWR 基础结构 - 183 -
4.5.2 AWR 基线 - 184 -
4.5.3 Enterprise Manager 和 AWR - 185 -
4.5.4 管理 AWR - 186 -
4.5.5 统计级别 - 187 -
4.5.6 麦苗扩展 - 188 -
4.5.6.1 什么是AWR? - 188 -
4.5.6.2 如何获取AWR报告? - 189 -
一、 定时生成AWR报告 - 190 -
4.5.6.3 AWR报告中主要关注哪些方面内容? - 194 -
4.5.6.4 如何在AWR中查看每秒执行事务的个数? - 199 -
4.6 自动数据库诊断监视器 (ADDM) - 200 -
4.6.1 ADDM 查找结果 - 202 -
4.6.2 ADDM 建议 - 203 -
4.6.3 麦苗扩展 - 204 -
4.6.3.1 什么是ADDM? - 204 -
4.6.3.2 如何获取ADDM报告? - 205 -
4.7 ASH - 206 -
4.7.1 什么是ASH? - 206 -
4.7.2 如何获取ASH报告? - 207 -
4.7.3 如何查看过去某一段时间数据库系统的会话是否有问题? - 208 -
4.8 ASH、AWR、ADDM、AWRDDRPT、AWRSQRPT的比对 - 210 -
4.9 指导框架 - 212 -
4.9.1 Enterprise Manager 和指导 - 214 -
4.9.2 DBMS_ADVISOR程序包 - 215 -
4.10 小测验 - 215 -
4.11 自动维护任务 - 216 -
4.11.1 自动维护任务 - 216 -
4.11.2 自动维护任务配置 - 218 -
4.12 服务器生成的预警 - 219 -
4.12.1 设置阈值 - 220 -
4.12.2 创建和测试预警 - 221 -
4.12.3 预警通知 - 222 -
4.12.4 对预警作出响应 - 224 -
4.12.5 预警类型和清空预警 - 225 -
4.13 性能监视 - 226 -
4.13.1 Enterprise Manager 的性能页 - 227 -
4.13.2 细化到特定的等待类别 - 228 -
4.13.3 性能页:吞吐量 - 229 -
4.13.4 性能监视:*会话 - 230 -
4.13.5 性能监视:*服务 - 231 -
4.14 动态性能统计信息 - 232 -
4.15 故障排除和优化视图 - 233 -
4.16 无效和不可用对象 - 234 -
4.17 小测验 - 235 -
4.18 小结 - 236 -
第5章 JOB - 237 -
5.1 DBMS_JOB - 237 -
5.1.1 dbms_job package 用法介绍 - 241 -
5.1.1.1 DBMS_JOB包权限 - 242 -
5.1.1.2 DBMS_JOB后台进程 - 242 -
5.1.1.3 broken - 243 -
5.1.1.4 change - 244 -
5.1.1.5 interval - 244 -
5.1.1.6 isubmit - 244 -
5.1.1.7 next_date - 245 -
5.1.1.8 remove - 246 -
一、 杀job - 246 -
二、 删除其它用户下的job用 sys.dbms_ijob.remove() - 246 -
5.1.1.9 run - 251 -
5.1.1.10 submit - 252 -
5.1.1.11 user_export - 254 -
5.1.1.12 what - 254 -
一、 例子 - 255 -
5.1.2 RAC中指定dbms_job运行在指定实例 - 257 -
5.1.3 数据字典 - 259 -
5.1.4 OCP课堂 - 261 -
5.2 DBMS_SCHEDULER - 263 -
5.2.1 DBMS_JOB和DBMS_SCHEDULER之间的区别 - 264 -
5.2.2 各个组件(components) - 264 -
5.2.2.1 作业(job): - 264 -
5.2.2.2 时间表(schedule):--默认非禁用 - 264 -
5.2.2.3 程序(program): - 266 -
5.2.2.4 作业类(job_class): - 266 -
一、 管理JobClasses - 270 -
5.2.2.5 窗口(window): - 270 -
5.2.2.6 窗口组(window_group): - 272 -
5.2.3 参数设置 - 274 -
5.2.4 管理job - 278 -
5.2.4.1 启用Jobs - 278 -
5.2.4.2 禁用Jobs - 279 -
5.2.4.3 修改Jobs - 280 -
5.2.4.4 执行Jobs - 282 -
一、 dbms_scheduler.run_job报错 - 284 -
5.2.4.5 停止Jobs - 285 -
5.2.4.6 删除Jobs - 286 -
一、 批量删除job - 287 -
5.2.4.7 指定job的执行频率 - 288 -
5.2.5 创建job - 290 -
5.2.5.1 需要的权限 - 290 -
5.2.5.2 例子 - 291 -
5.2.5.3 通过dbms_scheduler去执行shell脚本 - 292 -
5.2.5.4 例子一 --- 不带参数 - 293 -
5.2.5.5 例子二 --- 带参数 - 295 -
5.2.5.6 含有参数 - 302 -
5.2.5.7 时间段内的job - 304 -
5.2.5.8 指定时间的一次性job - 305 -
5.2.5.9 批量创建job - 305 -
一、 创建job主进程 - 305 -
二、 创建job子进程 - 310 -
5.2.6 判断job是否正在运行 - 312 -
5.2.7 数据字典 - 312 -
5.2.8 Lightweight Jobs - 314 -
5.2.8.1 Persistent Lightweight Jobs - 320 -
5.2.9 OCP课堂 - 321 -
5.3 PL/SQL工具创建和管理job - 323 -
5.3.1 DBMS_JOB - 323 -
5.3.2 DBMS_SCHEDULER - 325 -
5.4 其它实用内容 - 325 -
5.4.1 RAC中如何指定JOB的运行实例? - 325 -
5.4.2 如何判断SCHEDULER JOB是否正在运行? - 328 -
5.4.3 如何查询SCHEDULER JOB的运行日志? - 329 -
5.4.4 通过DBMS_SCHEDULER如何调用SHELL脚本? - 330 -
5.4.5 如何批量删除JOB? - 330 -
5.4.6 已通知停止作业, 但是无法立即停止 - 331 -
5.5 OCP - 332 -
第6章 分区 - 333 -
6.1 分区表简介 - 334 -
6.2 分区表的一些限制条件 - 334 -
6.3 何时考虑分区? - 334 -
6.4 分区表有什么优点? - 334 -
6.5 有哪些类型的分区?如何选择用哪种类型的分区表? - 335 -
6.5.1 RANGE(范围)分区 - 335 -
6.5.2 HASH(哈希)分区 - 336 -
6.5.3 列表分区 - 338 -
6.5.4 复合分区 - 339 -
6.5.4.1 分区模板的应用 - 340 -
一、 分区模板数据字典 - 341 -
6.5.5 Interval分区 - 341 -
6.5.5.1 以月为间隔 - 342 -
6.5.5.2 以天为间隔 - 346 -
6.5.5.3 总结 - 350 -
6.5.5.4 interval分区重命名 - 353 -
一、 注意 - 357 -
6.5.6 System_partitioning - 357 -
6.5.6.1 Restrictions on System Partitioning - 358 -
6.5.6.2 Advantages of System Partitioned Tables - 359 -
6.5.6.3 Supporting Operations with System-Partitioned Tables - 361 -
6.6 分区表的维护 - 363 -
6.6.1 添加分区(add partition) - 364 -
6.6.2 收缩表分区(coalesce partitions) - 366 -
6.6.3 删除分区和删除子分区(drop partition) - 366 -
6.6.4 添加子分区 - 367 -
6.6.5 截断表分区(Truncate Partition)--截断一个分区表中的一个分区的数据 - 367 -
6.6.5.1 截断分区表的子分区 - 368 -
6.6.5.2 截断带有约束的分区表 - 368 -
6.6.5.3 注意事项 - 368 -
6.6.6 移动表分区(Move Partition) - 369 -
6.6.6.1 将一个表的分区从一个表空间移动到另一个表空间 - 370 -
6.6.6.2 压缩表Move--compress - 370 -
6.6.7 合并分区(Merge Partitions) - 371 -
6.6.8 重命名某一个分区(Rename Partition) - 374 -
6.6.9 交换表分区(Exchange Partitions) - 374 -
6.6.10 修改 list 表分区 - 378 -
6.6.10.1 修改 list 表分区--Add Values - 378 -
6.6.10.2 修改 list 表分区--Drop Values - 379 -
6.6.11 拆分表分区(Split Partition)--分区切割 - 380 -
6.6.12 修改分区表属性 - 382 -
6.6.12.1 修改表分区默认属性(Modify Default Attributes) - 382 -
6.6.12.2 修改表分区当前属性(Modify Partition) - 382 -
6.6.12.3 修改分区表的logging属性 - 383 -
6.6.12.4 并行度 - 383 -
6.6.13 修改表子分区模板(Set Subpartition Template) - 383 -
6.6.14 其它 - 385 -
6.7 分区表的查询优化 - 392 -
6.8 分区表常用数据字典视图有哪些? - 394 -
6.8.1 Oracle之INTERVAL分区的STORE IN属性存储在哪张表中? - 401 -
6.8.2 如何查询某个分区是否是INTERVAL分区表? - 402 -
6.9 分区表的压缩 - 402 -
6.9.1 分区表压缩 - 402 -
6.9.2 含有子分区的分区表压缩 - 403 -
6.9.3 分区表哪些分区被压缩了 - 403 -
6.9.4 总结 - 404 -
6.9.5 另一种办法:先置于compress状态后move - 404 -
6.9.6 解压缩 - 405 -
6.10 分区表单个分区分析(分区表收集统计信息) - 405 -
6.11 普通表转换为分区表有哪些办法? - 405 -
6.12 分区表查询 - 410 -
6.12.1 单分区查询 - 410 -
6.12.2 跨分区查询 - 411 -
6.13 分区表中lob类型的字段 - 412 -
6.14 分区表性能注意事项 - 412 -
6.15 索引失效的情况 - 420 -
6.16 OCP讲课 - 421 -
第7章 管理补丁程序 - 422 -
7.1 应用补丁程序版本 - 424 -
7.2 使用补丁程序指导 - 425 -
7.3 使用补丁程序向导 - 426 -
7.4 应用补丁程序 - 427 -
7.5 存放补丁程序 - 428 -
7.6 联机打补丁:概览 - 429 -
7.7 安装联机补丁程序 - 429 -
7.8 联机打补丁的优点 - 431 -
7.8.1 常规打补丁和联机打补丁 - 431 -
7.9 联机打补丁注意事项 - 432 -
7.10 麦苗扩展 - 433 -
7.10.1 PSU升级的过程 - 434 -
7.10.2 PSU(Patch Set Update)、CPU(Critical Patch Update)、BP(Bundle Patch)等概念 - 434 -
7.10.3 如何查找最新的PSU? - 435 -
7.10.4 如何确认当前数据库已经安装了什么PSU? - 435 -
7.10.5 如何安装PSU? - 436 -
7.10.6 Upgrade与Update - 437 -
7.10.7 注意问题 - 437 -
7.10.8 什么是Metalink或MOS? - 437 -
7.10.9 11.2.0.3.0升级到11.2.0.3.1 - 438 -
7.10.10 one-off patch - 439 -
7.10.11 一道OCM题 - 441 -
7.11 小测验 - 442 -
7.12 小结 - 442 -
第8章 使用技术支持(学员自行阅读) - 443 -
8.1 课程目标 - 443 -
8.2 使用支持工作台 - 443 -
8.3 在 Oracle Enterprise Manager 中查看严重错误预警 - 445 -
8.4 查看问题详细资料 - 446 -
8.4.1 查看意外事件详细资料:转储文件 - 447 -
8.4.2 查看意外事件详细资料:检查器查找结果 - 448 -
8.5 创建服务请求 - 449 -
8.6 将诊断数据打包并上载到 Oracle 技术支持 - 450 -
8.7 跟踪服务请求并实施修复 - 451 -
8.8 关闭意外事件和问题 - 453 -
8.9 意外事件打包配置 - 454 -
8.10 Enterprise Manager 针对 ASM 的支持工作台 - 456 -
8.11 使用 Oracle 技术支持 - 457 -
8.12 My Oracle Support 集成 - 458 -
8.12.1 使用 My Oracle Support - 459 -
8.13 调查问题 - 461 -
8.14 记录服务请求 - 463 -
8.15 小结 - 464 -
-
实验课
实验目录 - 11 -
第1章 数据泵之NETWORK_LINK - 11 -
1.1 博客地址 - 11 -
1.2 环境介绍 - 12 -
1.3 imp和exp简介 - 13 -
1.4 expdp不使用network_link - 15 -
1.5 expdp使用network_link - 18 -
1.5.1 目标数据库创建dblink - 18 -
1.5.2 client端或目标数据库执行 - 19 -
1.5.3 总结 - 21 -
1.6 impdp使用network_link - 21 -
1.6.1 目标数据库创建dblink - 21 -
1.6.2 client或目标端执行 - 22 -
1.6.3 总结 - 23 -
1.7 实验命令 - 23 -
第2章 Duplicating an Active Database(duplicate复制数据库) - 23 -
2.1 博客地址 - 23 -
1.1 duplicate体系结构 - 24 -
1.2 本次实验简介 - 25 -
1.3 本次实验原理 - 26 -
1.4 环境及搭建要求 - 26 -
1.4.1 对辅助数据库的要求 - 27 -
1.5 正式开始 - 28 -
1.5.1 duplicate database 设置 - 28 -
1.5.1.1 创建pfile 参数文件 - 28 -
1.5.1.2 创建密码文件 - 28 -
1.5.1.3 创建和source database的数据文件相关的目录结构 - 29 -
1.5.1.4 启动Auxiliary 到nomout 状态 - 29 -
1.5.2 在Target 和Auxiliary 都配置Oracle Net(Listener.ora and tnsnames.ora) - 30 -
1.5.2.1 测试网络是否配置好 - 33 -
1.5.3 开始RMAN duplicate from active database - 35 -
1.5.4 drop database - 41 -
2.2 OCP讲课(duplicate ACTIVE + ASM-->FS) - 42 -
1.5.5 duplicate database设置 - 42 -
1.5.5.1 创建pfile 参数文件 - 42 -
1.5.5.2 创建密码文件 - 43 -
1.5.5.3 创建和source database的数据文件相关的目录结构 - 43 -
1.5.5.4 启动Auxiliary到nomout状态 - 43 -
1.5.6 在Target和Auxiliary都配置Oracle Net(Listener.ora和tnsnames.ora) - 43 -
1.5.6.1 测试网络是否配置好 - 45 -
2.2.1 准备执行的RUN块 - 45 -
1.5.7 开始RMAN duplicate from active database - 46 -
2.2.2 测试一下dbid和dbname - 46 -
第3章 Duplicating a Database Without Recovery Catalog or Target Connection - 48 -
1.1 本次实验简介 - 48 -
1.2 环境及搭建要求 - 48 -
1.2.1 对辅助数据库的要求 - 48 -
1.3 正式开始 - 50 -
1.3.1 前期准备 - 50 -
1.3.1.1 建表 - 50 -
1.3.1.2 数据库归档模式 - 50 -
1.3.1.3 备份数据库 - 51 -
1.3.1.4 将备份内容拷贝到destination host - 55 -
1.3.1.5 创建pfile 参数文件 - 56 -
1.3.1.6 创建和source database的数据文件相关的目录结构 - 57 -
1.3.1.7 创建密码文件 - 58 -
1.3.2 实施数据库的复制 - 58 -
1.3.2.1 启动Auxiliary 到nomout 状态 - 58 -
1.3.2.2 连接到auxiliary instance并复制数据库 - 59 -
1.3.2.3 可能的报错 - 65 -
一、 fra满了 - 65 -
二、 备份位置 - 66 -
1.3.2.4 验证 - 66 -
1.3.3 drop database - 67 -
第4章 Duplicating a Database Without Recovery Catalog or Target Connection - 68 -
4.1 本次实验简介 - 68 -
4.2 本次实验原理图 - 69 -
4.3 环境及搭建要求 - 69 -
4.3.1 source database环境 - 69 -
4.3.2 对辅助数据库的要求 - 70 -
4.4 正式开始 - 71 -
4.4.1 前期准备 - 71 -
4.4.1.1 建表 - 71 -
4.4.1.2 数据库归档模式 - 73 -
4.4.1.3 备份数据库 - 74 -
4.4.1.4 将备份内容拷贝到destination host - 77 -
4.4.1.5 创建pfile 参数文件 - 77 -
4.4.1.6 创建和source database的数据文件相关的目录结构 - 78 -
4.4.1.7 创建密码文件 - 80 -
4.4.2 实施数据库的复制 - 81 -
4.4.2.1 启动Auxiliary 到nomout 状态 - 81 -
4.4.2.2 连接到auxiliary instance并复制数据库 - 83 -
一、 告警日志 - 93 -
4.4.2.3 可能的报错 - 119 -
二、 fra满了 - 119 -
三、 备份位置 - 120 -
1.1.1.2 验证 - 121 -
4.4.3 drop database - 122 -
第5章 TSPITR(表空间基于时间点恢复) - 124 -
5.1 博客地址 - 124 -
5.2 BLOG文档结构图 - 125 -
5.3 前言部分 - 125 -
5.3.1 导读 - 125 -
5.3.2 实验环境介绍 - 126 -
5.3.3 本文简介 - 126 -
5.4 TSPITR的相关知识点归纳 - 127 -
5.4.1 TSPITR简介 - 127 -
5.4.2 何时使用TSPITR - 127 -
5.5 实验部分 - 128 -
5.5.1 源库做备份操作 - 128 -
5.5.2 建立测试表并做truncate误操作 - 131 -
5.5.3 采用logminer找回误删除的时间点 - 133 -
5.5.4 执行TSPITR之前的检查 - 133 -
5.5.4.1 检查是否自包含 - 133 -
5.5.4.2 检查哪些对象执行TSPITR后将被删除 - 134 -
5.5.5 执行TSPITR - 135 -
5.5.6 online表空间并且导入丢失的对象 - 140 -
5.6 与TSPITR有关的OCP试题部分 - 142 -
5.7 总结 - 146 -
5.8 实验脚本 - 149 -
5.9 RMAN系列参考文章 - 151 -
第6章 直接复制数据文件实现linux平台数据库复制到windows平台数据库 - 152 -
6.1 平台环境概述 - 152 -
6.2 查看字节序 - 152 -
6.3 linux 下操作 - 154 -
6.3.1 linux下生成pfile和control file - 154 -
6.3.2 把linux上/u01/app/oracle/oradata/rman下的数据文件、重做日志文件、归档文件,还有刚才创建的pfile和控制文件及listener.ora、tnsnames.ora文件复制到windows平台上 - 155 -
6.4 windows 下操作 - 155 -
6.4.1 创建一个rman的实例,注意SID要与linux服务器中的相同 - 155 -
6.4.2 修改初始化参数文件,并创建相关目录 - 156 -
6.4.3 创建spfile并启动到nomount状态 - 157 -
6.4.4 将相应的数据文件拷贝到相关的目录然后重建控制文件(也别忘了更改文件路径) - 158 -
6.4.5 打开数据库并添加临时表空间数据文件 - 160 -
6.4.6 由于是64位到32位操作系统,所以需要编译一下内核代码 - 160 -
6.4.7 其它配置工作 - 163 -
6.4.8 测试OK - 163 -
6.4.9 删除数据库做其它测试 - 164 -
第7章 利用rman来实现linux平台数据库复制到windows平台数据库 - 165 -
7.1 平台环境概述 - 165 -
7.2 本次实验简介 - 165 -
7.3 本次实验原理图 - 165 -
7.4 查看字节序 - 165 -
7.5 source database 归档模式 - 167 -
7.6 linux 下操作 - 167 -
7.6.1 建表 - 167 -
7.6.2 rman备份 - 168 -
7.6.3 linux下生成pfile - 173 -
7.6.4 把linux上/home/oracle/oracle_bk/rman/下的所有备份文件复制到windows平台上 - 174 -
7.7 windows 下操作 - 174 -
7.7.1 创建一个rman的实例,注意SID要与linux服务器中的相同 - 174 -
7.7.2 修改初始化参数文件,并创建相关目录 - 175 -
7.7.3 创建spfile并启动到nomount状态 - 176 -
7.7.4 rman 进行数据文件的恢复 - 177 -
7.7.5 由于是64位到32位操作系统,所以需要编译一下内核代码 - 185 -
7.7.6 其它配置工作 - 188 -
7.7.7 测试OK - 188 -
7.7.8 删除数据库做其它测试 - 189 -
第8章 热备下的测试库搭建 - 190 -
8.1 基础知识 - 190 -
8.2 本次实验环境简介 - 190 -
8.3 源库生成热备份文件 - 190 -
8.4 传输备份文件到target库 - 194 -
8.4.1 传输数据文件 - 194 -
8.4.2 传输归档文件 - 194 -
8.5 修改target库的pfile文件并生成pfile文件中的路径 - 195 -
8.6 启动target数据库到nomount状态 - 196 -
8.7 开始创建控制文件 - 196 -
8.7.1 第一步,首先移动相应的数据文件到相应的控制文件记录的目录中 - 197 -
8.7.2 第二步,重新创建控制文件,控制文件创建完成后自动mount - 197 -
8.8 用rman注册一下 - 198 -
8.9 recover到指定的scn - 201 -
8.10 重建临时表空间并配置密码文件以及 TNS 和密码文件等 - 201 -
第9章 传输表空间(TTS)一例(linux asm -> win 文件系统) - 202 -
9.1 场景描述 - 202 -
9.2 环境准备 - 202 -
9.2.1 在源库上创建3个用户应用的表空间 - 202 -
9.2.2 在相应的表空间创建表和索引 - 203 -
9.3 判断平台支持并确定字节序 - 204 -
9.3.1 在源平台查询 - 204 -
9.3.2 在目标平台查询 - 204 -
9.4 选择自包含的表空间集(目前要传输app1tbs和idxtbs这2个表空间) - 205 -
9.4.1 进行检查 - 205 -
9.4.2 查看检查结果 - 205 -
9.5 产生可传输表空间集 - 206 -
9.5.1 使自包含的表空间集中的所有表空间变为只读状态 - 206 -
9.5.2 使用数据泵导出工具,导出要传输的各个表空间的元数据 - 206 -
9.5.2.1 确定导出目录 - 206 -
9.5.2.2 开始导出 - 207 -
9.5.3 生成数据文件 - 208 -
9.6 还原源库中的表空间为读/写模式 - 209 -
9.7 传输文件 - 210 -
9.7.1 传输转储元文件到目标库 - 210 -
9.7.2 查看目标库数据文件位置和目录 - 210 -
9.7.3 拷贝文件到目标库相应位置 - 210 -
9.8 开始导入 - 211 -
9.8.1 生成parfile文件 - 211 -
9.8.2 开始导入 - 211 -
9.8.3 查看目标平台信息 - 212 -
9.9 修改表空间对应的文件名 - 214 -
9.10 结束语 - 216 -
第10章 传输表空间(TTS)一例(win文件系统 -> linux asm ) - 216 -
10.1 场景描述 - 216 -
10.2 环境准备 - 217 -
10.2.1 在源库上创建3个用户应用的表空间 - 217 -
10.2.2 在相应的表空间创建表和索引 - 218 -
10.3 判断平台支持并确定字节序 - 219 -
10.3.1 在源平台查询 - 219 -
10.3.2 在目标平台查询 - 219 -
10.4 选择自包含的表空间集(目前要传输app1tbs和idxtbs这2个表空间) - 220 -
10.4.1 进行检查 - 220 -
10.4.2 查看检查结果 - 220 -
10.5 产生可传输表空间集 - 221 -
10.5.1 使自包含的表空间集中的所有表空间变为只读状态 - 221 -
10.5.2 使用数据泵导出工具,导出要传输的各个表空间的元数据 - 221 -
10.5.2.1 确定导出目录 - 221 -
10.5.2.2 开始导出 - 222 -
10.5.3 将数据文件拷贝到dpdump目录下 - 222 -
10.6 还原源库中的表空间为读/写模式 - 223 -
10.7 传输文件 - 223 -
10.7.1 利用ftp工具传输转储元文件到目标库 - 223 -
10.7.2 查看目标库数据文件位置和导入目录 - 223 -
10.7.3 拷贝文件到目标库相应位置并修改文件权限 - 224 -
10.8 开始导入 - 225 -
10.8.1 生成parfile文件 - 225 -
10.8.2 开始导入 - 225 -
10.8.3 查看目标平台信息 - 226 -
10.9 修改表空间对应的文件名 - 228 -
第11章 传输表空间(TTS)一例(AIX asm -> linux asm ) - 232 -
11.1 场景描述 - 232 -
11.2 环境准备 - 234 -
11.2.1 在源库上创建3个用户应用的表空间,并在相应的表空间创建表和索引 - 234 -
11.3 判断平台支持并确定字节序 - 236 -
11.4 选择自包含的表空间集 - 236 -
11.4.1 进行检查 - 236 -
11.5 产生可传输表空间集 - 237 -
11.5.1 使自包含的表空间集中的所有表空间变为只读状态 - 237 -
11.5.2 使用数据泵导出工具,导出要传输的各个表空间的元数据 - 238 -
11.5.2.1 确定导出目录 - 238 -
11.5.2.2 开始导出 - 239 -
一、 在source端转换(转换字节序可以在sorce端进行也可以在target端进行,我们选择在target端,这个步骤不执行) - 240 -
11.6 还原源库中的表空间为读/写模式 - 242 -
11.7 传输文件 - 243 -
11.7.1 查看目标库数据文件位置和导入目录 - 243 -
11.7.2 利用ftp工具传输转储元文件到目标库DATA_PUMP_DIR目录并修改权限 - 244 -
11.8 开始导入 - 245 -
11.8.1 转换字节序(转换字节序可以在sorce端进行也可以在target端进行,我们选择在target端执行) - 245 -
11.8.2 创建source库的2个用户并赋权限 - 246 -
11.8.3 开始导入 - 247 -
11.8.4 查看目标平台信息 - 247 -
第12章 传输表空间(TTS)一例(linux asm -> AIX asm) - 250 -
12.1 场景描述 - 250 -
12.2 环境准备 - 252 -
12.2.1 在源库上创建3个用户应用的表空间 - 252 -
12.2.2 在相应的表空间创建表和索引 - 253 -
12.3 判断平台支持并确定字节序 - 254 -
12.3.1 在源平台查询 - 254 -
12.3.2 在目标平台查询 - 254 -
12.4 选择自包含的表空间集 - 255 -
12.4.1 进行检查 - 255 -
12.4.2 查看检查结果 - 255 -
12.5 产生可传输表空间集 - 256 -
12.5.1 使自包含的表空间集中的所有表空间变为只读状态 - 256 -
12.5.2 使用数据泵导出工具,导出要传输的各个表空间的元数据 - 256 -
12.5.2.1 确定导出目录 - 256 -
12.5.2.2 开始导出 - 257 -
12.5.3 生成数据文件 - 258 -
12.5.3.1 在source端转换字节序(也可以在target端转换字节序,我们选择在target端转换) - 260 -
12.6 还原源库中的表空间为读/写模式 - 263 -
12.7 传输文件 - 263 -
12.7.1 传输转储元文件到目标库 - 263 -
12.7.2 查看目标库数据文件位置和目录 - 264 -
12.7.3 拷贝文件到目标库相应位置并修改权限 - 264 -
12.8 target端转换字节序 - 265 -
12.9 开始导入 - 266 -
12.9.1 创建source库的2个用户并赋权限 - 266 -
12.9.2 开始导入 - 267 -
12.9.3 查看目标平台信息 - 268 -
12.10 查看导入后结果 - 270 -
第13章 传输表空间(TTS)一例(linux asm -> AIX asm)--基于RMAN备份 - 271 -
13.1 场景描述 - 271 -
13.2 环境准备 - 272 -
13.2.1 在源库上创建3个用户应用的表空间 - 272 -
13.2.2 在相应的表空间创建表和索引 - 274 -
13.3 判断平台支持并确定字节序 - 274 -
13.3.1 在源平台查询 - 274 -
13.3.2 在目标平台查询 - 275 -
13.4 选择自包含的表空间集 - 276 -
13.4.1 进行检查 - 276 -
13.4.2 查看检查结果 - 276 -
13.5 产生可传输表空间集 - 277 -
13.5.1 rman全备份 - 277 -
13.5.2 生成结果集 - 280 -
13.6 传输文件 - 286 -
13.6.1 查看目标库数据文件位置和目录 - 286 -
13.6.2 拷贝文件到目标库相应位置并修改权限 - 287 -
13.7 target端转换字节序 - 287 -
13.8 target端开始导入数据 - 289 -
13.8.1 创建source库的2个用户并赋权限 - 289 -
13.8.2 开始导入 - 290 -
13.8.3 查看目标平台信息 - 290 -
13.9 查看导入后结果 - 291 -
第14章 传输表空间(TTS)一例(AIX asm -> linux asm )--基于RMAN - 293 -
14.1 场景描述 - 293 -
14.2 环境准备 - 294 -
14.2.1 在源库上创建3个用户应用的表空间,并在相应的表空间创建表和索引 - 294 -
14.3 判断平台支持并确定字节序 - 296 -
14.4 选择自包含的表空间集 - 297 -
14.4.1 进行检查 - 297 -
14.5 产生可传输表空间集 - 298 -
14.5.1 rman备份source库 - 298 -
14.5.2 transport tablespace 生成文件 - 300 -
14.6 传输文件到target端 - 305 -
14.6.1 查看目标库数据文件位置和导入目录 - 305 -
14.6.2 拷贝文件到目标库相应位置并修改文件权限 - 306 -
14.7 target端转换字节序 - 307 -
14.8 开始导入 - 307 -
14.8.1 创建source库的2个用户并赋权限 - 308 -
14.8.2 开始导入 - 308 -
14.8.3 查看目标平台信息 - 309 -
第15章 AIX平台数据库迁移到Linux--基于RMAN(真实环境) - 312 -
15.1 场景描述 - 312 -
15.2 源库信息收集 - 314 -
15.2.1 先跑一下健康检查(可选) - 314 -
15.2.2 表空间及数据文件情况 - 315 -
15.2.2.1 表空间大小 - 315 -
15.2.2.2 需要传输的数据文件大小 - 318 -
15.2.3 用户情况(密码、默认表空间、角色和权限,需迁移的schema对象大小、个数、列表) - 318 -
15.2.3.1 需要迁移的用户 - 318 -
15.2.3.2 用户权限 - 319 -
15.2.3.3 用户表大小 - 321 -
15.2.3.4 对象个数 - 322 -
15.2.3.5 对象详细信息 - 322 -
15.2.4 无效对象情况 - 326 -
15.2.5 索引情况 - 327 -
15.2.6 确定是否有业务数据、脚本在例如sys用户等的默认用户下 - 327 -
15.3 判断平台支持并确定字节序 - 327 -
15.4 判断表空间集是否自包含 - 328 -
15.5 产生可传输表空间集 - 329 -
15.5.1 rman备份source库 - 329 -
15.5.2 transport tablespace 生成文件 - 331 -
15.6 传输文件到target端 - 339 -
15.6.1 dbca创建target库 - 339 -
15.6.2 查看目标库数据文件位置和导入目录 - 340 -
15.6.3 利用ftp工具传输转储元文件到目标库 - 341 -
15.6.4 拷贝文件到目标库相应位置并修改文件权限 - 341 -
15.7 target端转换字节序 - 342 -
15.8 开始导入 - 344 -
15.8.1 创建source库的需要迁移的3个用户并赋权限(前边的脚本已经生成,直接拿过来执行) - 344 -
15.8.2 开始导入 - 345 -
15.8.2.1 报错:source和target的compatible参数不同引起ora-00721错误 - 346 -
15.8.3 查看目标平台信息 - 347 -
15.9 导入完成后的结果校验 - 348 -
15.9.1 校验用户情况(密码、默认表空间、角色和权限,需迁移的schema对象大小、个数、列表) - 348 -
15.9.1.1 校验用户 - 348 -
15.9.1.2 用户对象个数 - 349 -
15.9.1.3 对象详细信息 - 350 -
15.9.2 无效对象情况 - 353 -
15.9.3 索引情况 - 354 -
15.10 迁移后续收尾工作 - 354 -
15.11 TTS总结 - 354 -
第16章 只存在备份片的数据库恢复过程 - 354 -
16.1.1 原库备份并传输到测试库 - 355 -
16.1.2 测试库编辑pfile文件 - 359 -
16.1.3 备份集中含有控制文件备份的情况下的恢复--尝试法找回控制文件 - 359 -
16.1.3.1 方法一:采用dbms_backup_restore.restoreControlfileTo从备份片中来尝试找回控制文件 - 360 -
一、 启动数据库到mount状态 - 367 -
二、 重新注册备份集,还原spfile,还原数据库,不完全恢复数据库 - 368 -
16.1.3.2 方法二:尝试采用创建临时库来找回控制文件 - 374 -
一、 搭建临时库来注册备份集 - 374 -
1、 修改dbname和dbid - 377 -
2、 重新注册 - 379 -
二、 还原操作 - 381 -
1、 还原spfile - 381 -
2、 还原控制文件 - 381 -
3、 还原database - 381 -
16.1.3.3 方法三:直接通过restore命令尝试 - 400 -
16.1.3.4 采用os系统命令strings来判断 - 402 -
一、 判断备份集是否含有spfile - 403 -
二、 判断备份集中是否含有control file - 405 -
16.1.4 备份集中无控制文件情况下的数据库恢复--重建控制文件 - 405 -
16.1.5 总结 - 418 -
About Me
.............................................................................................................................................
● 本文作者:小麦苗,部分内容整理自网络,若有侵权请联系小麦苗删除
● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、博客园(http://www.cnblogs.com/lhrbest)和个人微信公众号(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文博客园地址:http://www.cnblogs.com/lhrbest
● 本文pdf版、个人简介及小麦苗云盘地址:http://blog.itpub.net/26736162/viewspace-1624453/
● 数据库笔试面试题库及解答:http://blog.itpub.net/26736162/viewspace-2134706/
● DBA宝典今日头条号地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826
.............................................................................................................................................
● QQ群号:230161599(满)、618766405
● 微信群:可加我微信,我拉大家进群,非诚勿扰
● 联系我请加QQ好友(646634621),注明添加缘由
● 于 2018-03-01 06:00 ~ 2018-03-31 24:00 在魔都完成
● 最新修改时间:2018-03-01 06:00 ~ 2018-03-31 24:00
● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
.............................................................................................................................................
● 小麦苗的微店:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail
● 小麦苗出版的数据库类丛书:http://blog.itpub.net/26736162/viewspace-2142121/
● 小麦苗OCP、OCM、高可用网络班:http://blog.itpub.net/26736162/viewspace-2148098/
.............................................................................................................................................
使用微信客户端扫描下面的二维码来关注小麦苗的微信公众号(xiaomaimiaolhr)及QQ群(DBA宝典),学习最实用的数据库技术。
小麦苗的微信公众号 小麦苗的DBA宝典QQ群2 《DBA笔试面试宝典》读者群 小麦苗的微店
.............................................................................................................................................