oracle培训文档Word文档格式.docx
《oracle培训文档Word文档格式.docx》由会员分享,可在线阅读,更多相关《oracle培训文档Word文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
Keepbufferpool放在这个里面的对象不会被清除出去,节省IO
Recyclebufferpool利用清除
标准块8K可以定义一个表空间
Streamspool
Largepool缓解标准库的压力
Javapool用java写存储过程时候会保留
PGA-programglobalarea一般自动默认设置调大一些好
从数据库里面读出来的是什么:
块
3进程架构
连数据库之前要先连接Listener进程,然后是serverprocess
实例里面:
1.必须进程:
脏块进程、检查点进程、恢复进程、监控进程(PMON)(监控userprocess)
2.可选进程;
…….recovererprocess(恢复交易进程,协调两个库,用于做分布式交易,有时候交易要等其他库,网络上延迟。
分布式交易时,通过DB-link来传数,这样开发成本低,但是有SCN问题,SCN暴涨会导致张得快库挂了,其他有这种连接的库也会挂,挂了后只能隔离自己后打补丁,在这之前要知道数据库之间的连接关系,从9i往上都有这个问题);
归档进程(格式和redo一样)
数据库存储结构
控制文件:
最重要,要有多个,如果这个文件坏了,没有备份,数据库就挂了
数据文件:
参数文件:
备份文件:
段:
表或者是索引。
小文件表空间可以有多个数据文件,他们比较小;
,大文件只能有数据文件,但是这个文件可以很大。
SYSTEM表空间不能出问题。
经常变换。
里面放system01.dbfORACLE启动时候会扫描他。
如果他坏了,256块坏了,没备份,最后用dul(能抓数据、源代码)读数据转成dump文件。
或者从好的数据库中把256号好的块拷贝过来。
SYSAUX分担SYSTEM的压力
ASM:
集群文件系统等等。
要用ASM创建diskgroup.ASM文件RDBMS和ASM实例都能访问
数据库最重要的是数据库的备份:
全备、增备、归档、演练。
大部分的问题:
升级新版本、统计信息导致执行计划不当
安装时候如果是自己参数错误可以忽略,如果是补丁的问题不能忽略。
安装时候脚本要用ROOT权限来运行
安装时候不要把库一块建了,如果失败方便排查。
创建数据库
通用目的
数据仓库
客户生产上要选择这个!
!
重要
生产上要选择字符集,(以后不能随意改!
改了风险极大),安装前要问清楚!
客户端如果字符集如果指错了,与数据库里面的字符集不同,数据库里面就乱了,废了。
数据库的生命周期中DB_BLOCK_SIZE参数不能改。
安装好之后可以查看进程:
Ps-ef|grepsmon
ps-ef|grepinit
Ps-ef|greppmon
培训中安装了GRID,实现了高可用,在杀死smon,pmon在GRID的监控下它们被杀死后能够立即重启。
另外,init自己还有一个守护进程。
数据库的管理
数据库实例
数据库通过listener来监听端口,可以纳入GI管理,实现高可用。
数据库管理通过AGENT管理
查状态emctlstatusdbconsole查询实例的状态
Emctl
别用DBcontrol来管理。
Sqlplus在生产上用这个容易产生JAVA的问题,同时用他连接数据库也给黑客留了一道口子,黑客容易利用它攻进来。
Echo$ORACLE_SID
Pfile是一个文本文件,可以自己编辑。
Createpfile=’/temp
注意pfile中instance_type=’asm’需要把一个参数改为>
1136M!
控制文件必须多个,
DB_BLOCK_SIZE标准块大小要先设置好。
PROCESSES这个设置包括很多进程。
UNDO_TABLESPACE同时只能写一个表空间,!
这个坏了要宕机的。
MEMORY_YARGET11G的时候只需呀设置一个参数就可以了。
10G的话要设两个。
静态参数:
在数据库打开的情况下不能改。
动态参数:
1.记录会话:
自己的2.记录系统的:
整个库的。
DBcontrol不能管理多个数据库,那是GRIDcontrol工作。
启动数据库的3种方式:
Nomount实例起来了。
Mount状态才能做备份恢复。
这时候控制文件打开了。
OPEN控制文件打开了,他会找数据文件。
ORACLE操作数据库有多种方式。
Startupnomount
Alterdatabasemount
Alterdatabaseopen
Shutdownmodes:
使用ABORT比较危险,
下面3种,数据库是一致的。
IMMERTIATE
TRANCTION
。
SHUTDOWN:
ABORTfailureFORCE这时候数据库是不一致的
通过视图来了解数据库。
视图GV是在集群下用的V的是当前实例的。
可以看出是谁被谁锁了,杀掉。
数据字典:
DBA_所有库所有的
ASM实例
从11G开始有的,推荐用他来管理存储。
有SGA系统全局区
进程:
1.RBAL增加盘协调进程,但不干活
2.ARBN
3.GMON
4.MARK
5.ONNN
6.PZ9N
ASM参数文件:
ASM_POWER_LIMIT负载均衡的速度,对系统性能影响大
ASM_DISKSTRING只有这些盘ASM能够找到。
以SYSASM登陆才能启停ASM
如果把ASM杀掉:
SHUTDOWNABORT实例也挂了,因为实例是建立在ASM上的。
Srvctlstopasm–f停ASM
Srvctlstatusasm查看状态
Asmcmd单独管理ASM登陆进去相当于进去一个文件系统。
有点像进去一个操作系统
Shutdown–abort
Quit
Srvctlstartasm
生产中先停应用,然后一个个停数据库的实例。
ASM磁盘:
实现要是普通磁盘,有接口、有权限
AU太大会成为热点,太小影响效率。
ASM文件格式,会被创建一个LINK,格式上会有一些改变。
AU往磁盘上写东西叫AU
ASM可对数据做条带化:
分散在各个盘上,细粒度:
数据分得更散,适合数据小、速度快。
Failgroup要求容量要2倍
Compatible参数选择
ASM如果一个块坏吧,不是立刻调整负载均衡,在容忍时间内先写日志,如果恢复了那么根据日志重写恢复。
Oracle网络
Lister:
Listener配置它的2个文件sqlnet.oralistener.ora
配置listenerIP端口协议服务
管理工具EM或者NETManager或者命令行
Lsnrctlstatus
Lsnrctlstart(LsnrctllistenerName)
Lsnrctlserver
服务的祖册分为2种:
动态和静态
服务先启动,listener后启动,那么要手动注册一下了解
LocalNaming
DirectoryNaming:
ExternalNamingmethod
配置服务名:
一个服务可以分配多个服务名,再将服务名分配给应用,这时候可以对于不同的应用进行管理。
测试连通性:
tnsping
服务器模式:
专用服务器:
每一个连接有一个serverprocess
共享服务器:
批处理、数据仓库、备份恢复。
别用这种模式。
Createdatabaselink<
remote_global_name>
connectto<
user>
identifiedby<
pwd>
using’<
connect_string_for_remote_db>
’
数据的存储结构
数据放在表空间,表空间相当于容器。
表、视图-----段
创建表空间:
本地管理—性能高些、数据字典管理
增加表空间:
2种,ASM\文件系统中。
文件大小,别太大,坏了不方便恢复。
SYSTEM
UNDOTBS
最关键的2个表空间
删除表空间:
删除了数据文件之后表空间恢复不会来了。
扩大数据库:
扩大表空间、增加数据文件、增加数据文件大小、增加磁盘
数据库用户账户
创建了一个用户—对应创建一个schemaschema和对象不是一个东西。
SYS:
数据字典属于他
DBSNMP数据库的简单网络管理协议。
数据库认证:
远程通过DBA过来,需要验证。
系统权限A->
B>
CA给B权限,B给C权限,B的权限没有了,C还有。
对象权限是级联收的A->
B->
cB的权限没有了C的权限也没有了
角色:
CONNECT等等
Grantselectonscott.emptorl:
Createuseru2identifiedbyu2:
Grantcreatesessiontou2:
Grantr1tou2:
重新登录之后(在登录的时候分配权限的)
U2select*fromdba_可以看权限了
锁
锁放在事务曹中
行级排他锁不会升级
在插入、修改、删除时候会上锁
同一个块支持修改是有限的。
修改记录时候会加上一个行级排他锁。
这是日照排队的机制来实现的。
有时候长时间不提交就是会锁。
如果被堵了要么KILL他,要么提交它。
锁的机制默认是行级的。
Undo
回滚、散读、一致读
一致读:
一个事务在执行查数据,但是没有执行完的时候,数据被改了,而它需要的原始的数据。
用undo来保证,原始数据从undo的数据过来。
Undo保存的是旧数据,redo保存的是新数据。
Redo记录变化,防止数据丢失。
让数据库向前跑。
一个实例一个时间点有多个undo回滚段,读可以读多个回滚段,写只能写一个回滚段。
Undo不能太小,它必须存放得下事务。
否则发生错误。
审计
记录DBA所做的操作
要有多个DBA,互相看到各自做的事
监控系统上异常的活动。
DBA强制审计,默认打开。
标准数据库审计:
改一个数据库的参数:
audit_trail
基于值的审计:
可以制定审计策略:
对象、值、行、列。
等等
创建策略的时候视图必须是存在的,审计的列表中必须有。
Oracleauditvault审计日志传送到这里。
提高吧数据库的性能。
AWRautomaticworkloadrepository资料库可以对典型的时间段快照成一个基线。
统计信息:
数据库的和查询优化器
优化器的统计信息是基于时刻点。
收集审计信息,可以按用户名,时间点,表收集。
锁的统计信息。
数据字典的统计信息不要轻易收集,风险比较大。
用了柱状图,就尽量别用绑定变量。
ADDM对采集到的快照等的信息做分析,然后得出一个结论,建议怎么改。
Advisoryframework自动优化的工具。
可以创建告警,有时候告警的信息不全要调用更多的信息查原因
性能监控
千兆网络建议绑定使用,高可用。
私网要传心跳的,如果没有绑,可能是用了多个私网芯片。
(绑网卡,将2个网卡看成一个逻辑的,只给他一个IP,可以做成负载均衡)
Throughput吞吐量,常常登陆消耗listener资源。
Topsession
数据库的征用可以通过等待事件来解决。
逻辑读进入内存,如果逻辑读异常可能是执行计划错了。
有一个物理读一定有一个逻辑读
Topservices:
可以看哪个服务消耗的资源,可以针对这个services做优化。
内存管理:
自动内存管理。
内存可以有很多进行监控。
内存手动设置可以防范诸如内存收缩等等产生的一些极端情况。
应用上的问题最好由应用来解决,BDA只能尽力帮忙。
AMM图形管理,可以看到加内存对于系统性能的提升。
静态参数改它需要更改数据库。
数据库备份和恢复的概念
备份要放在卡特罗哥日志中,放置好,各种东西不要弄乱。
网络用双链路、网卡用双网卡。
网络失败。
用户的错误。
闪回:
通常解决人为的错误。
事务回退、闪回表、DROP、闪回数据库:
记一个时刻点,
数据库的实例恢复:
CKPT
REDO日志:
发生每一次COMMIT的时候
实例恢复,通常发生在异常宕机时候。
没有COMMIT,发生的变化仍然要写到redolog中。
写脏快之前一定要写到日志文件中,反之不一定。
实例恢复:
MTTR这个参数设置重启实例恢复需要的时间,时间短可能对IO造成很大压力?
?
介质恢复:
数据文件坏了
恢复中归档必须连续,中间断了不行。
为了保护redo信息,创建归档日志来保存它。
如果归档坏了,数据库好的,那么重新做全备,就可以了。
Redo日志文件是会被覆盖掉的。
Mount控制文件打开了,数据文件没有打开,?
备份和恢复
Oracle:
recoverymanager最经典的工具
Oraclesecurebackup还可以备份非数据库的文件:
端对端
可以把数据文件备份到闪回区。
Imagecopies完全copy
Backuppieces(由backupset备份出来的东西)对于备份加密、解压等等速度比较慢
全备和整体备份不一样
全备:
备份所有有数据的数据块
增量备份:
原来备份过一次,在0级备份的基础上备份新动向。
(谈到几级就是增量备份)
差异增量备份、累计增量备份-速度快。
恢复的话至少得有一个归档日志。
在线的备份-热备份必须备份到归档模式。
注意闪回区大小。
优化备份备份只读和优化的表空间
oracle归档日志不能手动删除,手动删除可能会出问题。
控制文件的备份
系统表分区挂了要先把数据库宕掉,然后再mount再回复,再启动才行。
控制文件坏了先nomount再恢复,再mount再启动。
数据库的恢复
控制文件好的
所有在线数据文件必须一致
Redo一个组别坏
Undo表空间坏了
以上4个有一个坏了数据库就挂了
Datarecoveryadvisor支持单实例数据库
如果控制文件坏了,宕机,可以用好的数据文件替换一下坏的数据文件。
GeneralArchitecture
数据泵:
可以做数据或metadata的移动
可以把源端的表导入到目标地,不用落地。
要用数据泵首先:
创建directory,这个对象是SYS他可以分给某个对象
在旧模式下用了新的指令,就会报错。
Sqlloader
将文本文件加载到数据库中,首先生成一个控制文件。
加载文件文件进入数据库,会生成大量日志,是普通DML方式,不会锁很多表,如果要求不能停业务,那么应该采用这种方式。
外部表:
文本的和二进制的(二进制必须用数据泵来驱动),可以通过一些视图来了解外部表的信息。
不能建立索引。
Workwithsupport
打补丁能停机时候就尽量停机来打补丁