OracleDBA性能优化游笔记.docx
- 文档编号:11087053
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:73
- 大小:178.40KB
OracleDBA性能优化游笔记.docx
《OracleDBA性能优化游笔记.docx》由会员分享,可在线阅读,更多相关《OracleDBA性能优化游笔记.docx(73页珍藏版)》请在冰点文库上搜索。
OracleDBA性能优化游笔记
OracleDBA+性能优化8日游笔记——第一天
(一)
2009-10-1211:
31
第一天:
11G的优势:
自动化(比10G更自动)
Ora-600:
未知错误
数据库名:
默认ORCL,11Gradcontrol会在冲突时只选一个,最好不要重名。
基本管理:
1.安装软件
2.建库
3.启动
4.建立用户
5.给用户授权
6.为表设置存储空间
7.创建对象(如表)
8.构建好数据库之后配置网络连接(C与S之间)
9.数据保护(备份,恢复策略)
10.性能优化
二
1.关系数据库基础
8iows
9internetoas
11GR2,9.28发布ias
Bea,ERP(需要做2次开发,开发工具IDS)
网格管理:
统一管理,全局监控
Oracle提供完整的解决方案:
除了游戏和操作系统都有(收购SUN前)
8iows
9internetoas
9i之后ias
现在Bea,ERP(需要做2次开发,开发工具IDS)
主要产品:
7.3,8,8i,9i(35%),10g(60%),11gR1(R2在9月28号刚出)
5和6(军队可能会有)
Elearning(典型应用:
交易平台)
askTom(Tomcat研发小组)
(文档,如函数参数使用)
2.DBA职责:
高收入,稳定
一档(入门):
3,4000~6,7000
二档(熟悉):
7,8000~12000,15000
三档(架构):
15000+
第一守则:
1.备份
升级前,打补丁前,迁移前
2.谨慎
例:
迁移顺序:
导出(备份),清空,导入
3.rm是危险的:
删文件
先确认该不该删,在之前做提示,
oracle的做法:
删表空间时anddatafile
OMF:
文件创建删除由oracle自己处理
ASM:
oracle自动存储管理(自己的文件系统,操作系统看不到即删不到)
4.制定规范
尽量减少人为错误
DBA的工作:
1.定期监控
每日,每周,每月(空间计划)
每日:
确认INSTANCE状态正常
检查文件系统的使用(剩余空间)
检查数据库的跟踪告警文件
检查数据库当日备份的有效性,及时调整备份策略
检查数据文件的状态记录不是“online”的文件
检查空间的使用情况:
PPT给出语句列出空间剩余情况
收集信息
每周:
检查数据增幅非常明显的对象(表空间,数据库空间),优化时优先考虑
系统健康检查
检查无效(一般为被动失效)的对象(视图,过程,包,触发器,索引(表move操作)等,大多因为表)和不起作用(一般为主动禁用)的对象(禁用触发器,约束等)
在批量装载合法数据的时候可以禁用约束,装载数据,再启用约束,触发器类似
每月:
如果使用CBO(10G以后被简化了)
收集统计信息计算代价(例:
省时间),10G开始系统自动收集统计信息
检查表空间碎片
寻找数据库性能调整的机会
进行性能调整
提出下一步空间管理计划
10G以后:
自监控,自诊断,自调整
预警,相关预警,活动意外事件
其他工作:
备份
灾难测试
应对领导需求变更
根据新需求设计新的数据库架构方案
为其他部门提供业务或脚本支持
考虑存储的使用
OracleDBA+性能优化8日游笔记——第一天
(二)
2009-10-1211:
32
三.安装和新特性
OUI安装工具
DBCA建库删库
DBUA升级库
LC监听器
OEM基本管理
SQL*PLUS
R-Man备份恢复
DataDump数据泵(导出,导入)
SQL*Loader把文本数据导入到Oracle
SQLPLUS
SQLPLUSFROWINDOWS(SQLPLUSW)
ISQLPLUS
11G:
SQLPLUSDEVELOPER(JAVA编写)
DV数据库安全审计:
控制谁可以使用
AV操作安全审计:
控制怎么使用
删除特定的产品或功能
支持新的SYSASM角色
硬盘空间:
3G~5G
临时空间至少400M(安装时解压缩用)
核心参数:
以下2个一定要设
共享内存段最大尺寸Shmmax=4294967295(建议至少设置物理内存的50%,SGA50%~70%)
信号量:
决定进程数Semmns最小不低于100,建议设为proesses*2+10
环境变量以下一定要设
ORACLE_BASE:
所有软件的基目录
ORACLE_HOME:
特定版本软件的主目录(当前默认的主目录)
主要目录:
HOME,BIN,NETWORK,RDBMS
ORACLE_SID:
决定当前默认连接的数据库是哪个:
setoracle_sid=orcl,showparameterinstance_name
以下不一定要设
NLS_LANG:
决定语言,地区,字符集
ORA_NLS33:
10和11指向nls\date目录,指向全球化特性支持文件,用localebulidee可以看
PATH:
系统搜索路径,把ORACLE放前面(其实很重要,只是不属于oracle的参数)
LD_LIBRARY_PATH:
指向java库的路径
DISPLAY工作站名(IP):
0.0
数据库设置
比较重要的初始化参数(建库前确定,建完后不能改或改动会有影响):
Db_block_size块大小(数据仓库设小点,块大点I/O就会少点)
Db_cache_size
Shared_pool_size
Log_buffer
Insrance_name
Db_name
Processes静态(需要重启数据库),决定并发会话数
其他建库时需要注意的设置:
数据库字符集(大部分不能改,除非从子集变超集)
数据库名(用特殊工具才能改)
安装步骤:
1.检测环境
2.配核心参数(LINUX不用重启)
3.建立用户和组
4.在用户下设置环境变量
5.调OUI安装数据库软件
Windows用setup,LinuxandUNIX用runinstaller
6.配置网络以及其他选项
11G的升级:
提供脚本进行升级前的分析
简化升级过程
升级速度变快了(并行编译)
升级后状态工具
OracleDBA+性能优化8日游笔记——第二天
(一)
2009-11-0615:
17
由于出差很忙,每天早9点到晚11点半的工作,而且没有周6,日的休息,所以实在抽不出时间整理笔记和写BOLG,现在开始继续补上出差前的OracleDBA+性能优化笔记
第二天的笔记不太好整理,因为这里包括了前4天的OracleDBA阶段的最重要的部分——Oracle体系架构,那一部分我会贴图说明,所以需要花点时间,必要的话还会再细分几部分,敬请期待.
-----------------------------------------------------------------------------------------------------------------------------------------
第二天
Emctlstartdbconsole
Sqlplus/assysdba
ShowparameterMEMORY
设置SGA+PGA的总值
8i静态SGA
9i动态SGA
设置SGA_MAX_SIZE
一小段连续内存区,
10gSGA自动调整
设置参数SGA_TARGET(0为禁用自动管理,有效值为启用自动管理)
SGA_TARGET可以超过SGA_MAX_SIZE(重启后SGA_MAX_SIZE会自动调整为超过的SGA_TARGET值,所以实际应用中SGA_TARGET最多等于SGA_MAX_SIZE)
Altersystemsetsga_target=600m;
11g内存自动调整
进程:
MMAN
Sga:
可以自动调整的内存区,只能动态调整的内存区,只能静态调整的内存区,其他(fixedsize,查看命令showsga)
一.PL/SQL开发的新特性
曾经,逻辑上在未受重新定义影响的对象会失效(XX锁),11G以后不会失效
Update(同时有独占的行锁和共享表锁),11G后DDL可以等待DML锁定释放
DDL_LOCK_TIMEOUT初始化参数,初始为0,NOWAIT
LOCKTABLE命令新增了WAIT[
一些命令不在用排他锁而使用共享排他锁
不可见索引:
no_index
查询结果的高速缓存(类似存储用的二级缓存),用内存空间换时间
经常使用的查询语句并且查询结果不变
临时表空间收缩
以前要减少临时表空间就需要删再建
注意,临时区会干扰自动收缩
临时表的控制
临时表不存真正存数据(数据存到临时表空间中),没锁,没日志,没回滚信息,commit后就没,过去数据放在用户所在的临时表空间,11G后可以指定
更易于恢复丢失的SPFILE(参数文件)
其他高级新特性:
ACFS,ADVM代替裸设备,自己的时间同步服务,列式压缩,物化视图的改善,物化视图的效率改善等
Sybase用列式存储(用于数据仓库
OracleDBA+性能优化8日游笔记——第二天
(二)之Oracle体系架构详解
"Oracle体系架构"为前4天的OracleDBA课程中最重要的部分,因此特别传上图片供大家理解,不过文字的部分依然是我当初的原版笔记,所以尽管有图,但能从我笔记中理解多少靠各位自己了.
-----------------------------------------------------------------------------------------------------------------------------------------
二.Oracle体系架构
架构图:
Oracle由Instance(实例)和database(一堆文件)构成。
在oracle的所有资料里,database指的是文件。
Instance(实例)+database(文件)=DBSERVER(由Instance(内存,进程),database文件构成)
Database中,黄框里为必要文件
1.数据文件
用户数据用户表DML
数据字典数据(系统数据)数据字典表随数据库自动生成,不能对其直接进行修改修改其中的数据用DDL,任何一条语句都要用到数据字典(语句执行步骤,数据解析,数据返回,取操作,解析获取对象信息和权限信息都需要数据字典)
特点:
大小可变,
表空间就是一个或多个数据文件的逻辑存储表现,
一个数据库最少需要一个表空间(system,所有数据字典表被创建在系统表空间),建立多个表空间为了把数据分类存放
2.重做日志文件(redologfiles):
按时间顺序存放数据库中所发生的所有改变(只要数据块发生变化就叫改变,表数据块,索引数据块,回滚数据块等)
谁,什么时间,在哪个块的第几行的第几列。
通过日志恢复,提高数据库的可恢复性
Oracle做物理级恢复的原理就是恢复日志
用日志恢复比语句恢复要块
特点:
大小不变,可恢复性,顺序循环,一个数据库至少2组日志,每组至少一个组员文件,如果多个组员文件则为文件级镜像(日志复用)
3.控制文件(Controlfiles)
很小,几十M算比较大的,但很重要
内容多(但每一个都很小)以下是几个主要内容
数据库的基本信息名字/ID
数据库的结构信息数据文件,日志文件的名称,位置,大小,状态
最后一次同步的SCN信息
SCN:
系统改变号,一改变就递增,每个SCN对应一个改变,SCN描述数据库的运行
同步:
先将当前SCN之前的所有脏数据写入磁盘中,之后把SCN头写入磁盘,突发原因,丢数据丢同步之后的日志,数据库正常关闭同步一定会发生,非正常关闭,同步不发生,从日志中找最后一次同步的SCN之后的日志恢复
日志切换立刻发生同步,该日志对应的脏数据没完成同步之前不允许覆盖
同步判断,实例恢复
当前的日志序列号
日志切换递增
每个序列号代表唯一的日志内容
日志恢复到当前的日志序列号恢复(最后一次同步的SCN信息为起点,此为终点)
介质恢复的终点
介质恢复(介质文件头的SCN为起点,当前日志序列号为终点)
归档信息
RMAN备份信息(放在可变大小,之上放在固定大小),
4.初始化参数文件(parameterfile)(非必要文件)
定制的参数文件,决定实例的属性
无参数文件前提,用RMAN可以启动实例(用默认参数启动实例,用来恢复参数文件(启动实例)和控制文件(启动数据库)),SQLPLUS不行
5.口令文件
存放:
特权身份的口令
作用:
特权身份验证
特权身份:
超越系统身份之外的身份(建立删除启动关闭数据库)
普通身份:
nomal
特权身份:
sysoper,sysdba,sysasm(11G)
拥有以上所有身份的用户为sys
口令文件认证,
操作系统认证(在服务器本地做连接,以在那个组中的用户做连接ora_dba组)
想保护数据库,先保护服务器
6.归档文件
存放:
日志历史
作用:
为介质恢复使用
个数:
如果一开始就是归档模式(数量为当前日志序列号数-1)
大小:
小于等于重做日志文件大小
命名:
名称中必须包含日志对应的序列号(不用SCN命名因不完全恢复影响),如果是RAC,名称中还要包含日志所对应的线程
离线的,对数据库本身不影响
Instance:
1.SGA
公用内存区:
主要有6个
必选:
共享池,buffer区,redoLogbuffer区
可选:
java池(包括JVM则选择),large池(RMAN备份与恢复需要用到,并行操作的时候会用到),流池
共享池(SHAREPOOL):
Librarycache:
暂存最近最常使用的SQL语句文本,分析代码,执行计划
作用:
让代码共享,减少解析(解析消耗CPU)
Datadictionarycache:
最近最常使用的数据字典信息
作用:
减I/O(省略去系统表空间找数据字典的I/O)加快解析效率
数据缓存区:
暂存最近最常使用的数据块
作用加快执行效率
重做日志缓存区:
先进先出
暂存日志记录
作用:
很快写入内存,很快改数据(系统先记日志再改数据)
插入数据的修改次数(表+索引)*2(因为回滚段也被插入)
加快操作效率
2.进程
必要:
PMON,SMON,DBWR,LGWR,CKPT
非必要:
ARCn等
PMON:
进程监视进程
Userprocess:
用户进程
Serverprocess:
响应客户端请求的服务器进程
PMON监视上面2者的会话(serverprocess)
处理连接故障异常的(突发事件回滚)
SMON:
系统监视进程
系统异常崩溃(或断电)
检测同步
实例恢复
前滚应用日志,打开数据库,回滚没完成事务
先回滚需要的,按需回滚,之后遇到再回滚
DBWR:
数据库写进程
LGWR:
日志写进程
CKPT:
做同步
日志切换时候
数据库正常关闭的时候
等
ARCn:
归档进程
3.PGA:
私有的内存区
被每一个session私有
存会话信息
堆栈空间
游标状态
排序空间(如果排序空间小于排序数据,通过读写临时表空间来排序:
直接路径读和直接路径写,频繁的I/O操作),数据仓库要大排序空间
OracleDBA+性能优化8日游笔记——第二天
(二)之Oracle体系架构补充与总结
2009-11-1016:
02
以下是对前面的Oracle体系架构详解的补充与总结..总结的部分可以结合前面那个帖子的图去看
--------------------------------------------------------------------------------------------------------------------------------------------------
连接到一个Oracle的实例:
如下图
建立一个用户连接
创建一个会话
总结:
连库是连接到instance
RAC,一个instance对应一个database,一个database对应多个instance(多个主机的instance共享一个database,扩展并发会话),连接负载均衡(会话分到多个主机),高可用(会话连接直接切换),缺点是存储只有一套,锁(RAC加块锁)与I/O不能分享,容易形成竞争和瓶颈,所以对查询有利,对修改不利
三种连接方式:
本地连接,网络连接(通过NET),三层连接(通过中间层服务器B/S)
物理结构:
数据文件,控制文件,重做日志文件
内存结构:
系统全局区(SGA),程序全局区(PGA)
内存分配基本单位是粒度(granule)看大小:
select*fromv$sgainfo
在自动管理模式下,设置buffer缓存区小于原值,则设置的最小值,大于则改成该值
大池:
推荐专用模式(资源利用不充分),如果是共享模式的使用(大量并发,每一个会话里操作时间远远小于挂起时间,如网站,以及想省钱的时候(免除了中间件))
自动管理依赖于反馈信息(有延时)
SGA,物理内存的50~70%,PGA设置20~40%,总大小不超过90%。
会话建立时产生(用户进程,服务器进程),实例启动时产生(后台进程)
必选:
DBWn
可选:
ARCn,Cjq0(作业调度进程),Jnnn(作业进程),RECO(分布式恢复进程),MMAN(内存管理进程,自调整),MMON(内存监控进程,自收集),Snnn(共享模式下的共享服务进进程),Dnnn(共享模式下的调度启用进程),Pnnn
进程启用时机:
DBWn(数据库写进程):
发生检查点,脏缓存达到限制(时间(人为控制)*速录(系统知道)=限制),没有自由的缓存(没找到),超时发生(时间到了没找到),RACping请求,表空间离线,表空间只读,表被删除或截断,开始备份表空间
LGWR(日志写进程):
提交的时候(写日志不写数据,都能保证数据不丢失,日志写的比数据写的快,丢数据可能性越低),日志缓冲区达到三分之一满(像漏斗,先进先出,进快出慢,多留缓冲区防止被写满被造成的等待),日志大小到1M(减少数据损失),每隔三秒(减少损失),在SBWn写之前(先写脏数据相关的日志)
SMON(系统检测进程):
作用:
实例恢复,释放临时表空间
PMON(进程监测进程):
作用:
清除失败的进程,如果是共享模式则负责重启死掉的调度器,动态注册监听器。
CKPT(检查点进程):
时机:
日志切换,数据库正常关闭,一些参数,表空间操作(如离线)等
DML操作:
改数据:
锁定数据,产生回滚的日志,产生回滚的信息,修改数据,索引维护等
OracleDBA+性能优化8日游笔记——第二天(三)
2009-11-2317:
43
三.管理oracle实例
初始化参数文件
启动的时候使用,SPFILE(稳固参数文件)和PFILE(静态参数文件)
两种类型的参数:
显式,隐式
设置参数:
直接设置,借助默认值
根据特性:
静态参数,动态参数
系统级参数,会话级参数
可以存在多个参数文件(只有一个有效)
PFILE:
文本文件(静态)
Db_1\database目录下,11G应该只有SPFILE没有PFILE(用下面命令可以手动导入)
Createpfilefromspfile(反之也可以,只有特权用户可以使用该命令)
SPFILE:
二进制文件
由Oracle服务器维护
一般存在于服务器上
能用RMAN备份
区别:
PFILE静态改文件(当时没用重启有效),动态修改用altersystemset(当时有效重启失效)
SPFILE动态静态都用altersystemset。
。
。
。
。
用scope设置状态(both,memory(动态),spfile(静态)),SPFILE能用RMAN备份,用*符号使所有节点上的实例能使用统一的SPFILE
SPFILE优先级比PFILE高,若使用PFILE需要修改SPFILE名。
用showparameterspfile查看启用的是SPFILE(有值)还是PFILE(无值)
----------------------------------------------------------------------------------------------------------------------
启动数据库到OPEN
三个阶段:
启动实例(NOMOUNT),打开控制文件(MOUNT),打开控制文件中所包含的所有文件(OPEN)
一阶段从SHUTDOW到NOMOUNT:
读参数文件,分内存起进程
我们能在NOMOUNT做的事情:
改参数,建库,重建控制文件(在SPFILE中指定)
二阶段到MOUNT:
读取控制文件,装载数据库的控制信息
我们能在MOUNT做的事情:
数据库的备份和恢复,数据文件和日志文件的重命名和重定位(改控制文件的结构信息),归档和非归档的改变
三阶段到OPEN
数据库OPEN之前只有特权身份可以连(普通用户口令需要访问数据字典,数据字典未启动)
关闭数据库
关闭模式:
A=abort;(相当于断电,不安全)I=IMMEDIATE;(常用)T=TRANSACTION;N=NORMAL(慢)
用abort关闭,在下次启动会首先进行实例恢复,有小几率恢复失败,所以慎用
OracleDBA+性能优化8日游笔记——第三天
(一)
2009-11-2614:
03
一.跟踪告警文件
可能会由于大量错误造成该文件很大
管理:
可以直接删除(再有错误会自动建立新文件),
9和10在bdump下,
11,adump是放审计文件,告警放在diag\rdbms\orcl11g\orcl11g\trace下
告警文件中有重大操作(建库等),报错信息,数据库的启动关闭
通过告警文件可以看到经过abort关闭后,再启动时的实例恢复过程
后台进程跟踪文件:
存后台运行的报错信息
也在trace下
用户进程跟踪文件(ora开头):
存用户操作的错误信息
在trace下
用户的会话跟踪:
调优用,DBA执行,搜集会话的相关信息
9i,静态开启跟踪,10G可以在实例中动态开启,但一般都在系统级开启
11g,自动诊断
捕捉错误
给予DBA提醒
填一个信息调查表(查询相关bug信息)
如果是BUG,则可以通过OEM直接下载补丁
如果是未知BUG,则打包上传给oracle
自动诊断资料库
ADR:
自动诊断仓库基目录(可以设,也可不设)
诊断目录(diag):
Rdbms\db名\SID
Trace目录:
存告警文件
Alart目录:
XML格式的告警文件
Cdump
Incident:
意外事件目录
问题:
一个比较严重的错误,如:
ora-600
意外事件:
一个问题
意外事件状态:
正在收集,就绪,正在跟踪,数据已清除,关闭
意外事件处理方式:
自己看,提交给oracle处理(通过OEM,目前没人这样做,没人知道响应时间是否及时等)
Hm:
健康检查信息目录
健康检查器:
脱机(mount状态下可以做):
DB结构完整性检查
数据块完整性
重做完整性
联机(OPE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OracleDBA 性能 优化 笔记