ORACLE学习摘要.docx
- 文档编号:17044763
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:42
- 大小:168.56KB
ORACLE学习摘要.docx
《ORACLE学习摘要.docx》由会员分享,可在线阅读,更多相关《ORACLE学习摘要.docx(42页珍藏版)》请在冰点文库上搜索。
ORACLE学习摘要
ORACLE学习摘要
1.ORACLE数据库配置
⏹ORACLE中的系统初始化配置文件是init.ora,在系统启动时有效
⏹从9i开始增加系统参数文件spfile,主要用于动态修改参数,而不需要重新启动ORACLE
查看命令:
showparameter<参数名>
修改命令:
altersystemset参数名=参数值
修改类型:
Memory(本次运行修改),spfile(启动时修改),both(两者都修改)
2.ORACLE的SQLPLUS连接及使用
⏹一般连接:
sqlplussystem/his@d_source;或connsystem/his@d_source
⏹做为SYSDBA连接例:
sqlplus"system/bsoft@hisassysdba"或connconnsystem/bsoft@d_destassysdba;
⏹如果在本机不能直接连接(需要加@),则设置环境变量setoracle_sid=需要的服务名
在SQLPLUS中执行外部命令,在命令前加@
⏹可以在cmd下执行sqlplusstrmadmin/strmadmin@d_dest@.\create_scn.sql'
⏹可以在sqlplus中执行SQL>@create_scnsql
⏹修改oracle数据库的用户连接数?
修改initSID.ora,将process加大,重启数据库.
⏹启动关闭数据库
关闭:
svrmgr>connectinternal/oracle
>shutdown --正常关闭数据库
svrmgr>shutdown immediate --立即关闭数据库
svrmgr>shutdownabort --一种最直接的关闭数据库的方式,执行之后,重新启动需要花6-8小时
启动:
svrmgr>startup --正常启动
--等价于:
startupnomount;
alterdatabase mount;
alterdatabase open;
svrmgr>startupmount;--安装启动:
用于改变数据库的归档或执行恢复状态
svrmgr>startupnomount; --用于重建控制文件或重建数据库
svrmgr>startup restrict;--约束启动,能启动数据库,但只允许具有一定特权的用户访问
如果希望改变这种状态,连接成功后
altersystemdisablerestrictedsession;
svrmgr>startupforce;当不能关闭数据库时,可采用强制启动数据库来完成数据库的关闭操作。
svrmgr>startuppfile=d:
\orant\database\initorcl.ora --带初始化参数文件的启动
3.Statspake使用
3.1设置参数
为了能够建立自动任务,执行数据收集,该参数需要大于0。
SQL>altersystemsetjob_queue_processes=6scope=both;
收集操作系统的计时信息,这些信息可被用来显示时间等统计信息、优化数据库和SQL语句。
可以在使用statspack之前在system更改,采样过后把该参数动态修改成false。
SQL>altersystemsettimed_statistics=true;
3.2安装Statspacke
以systemassysdba登陆到数据库,最好转到$ORACLE_HOME/RDBMS/ADMIN目录
创建用于Statspake表空间
createtablespaceperfstatdatafile'd:
\oracle\oradata\eygle\perfstat.dbf'size500Mextentmanagementlocal;
开始安装
SQL>@spcreate
3.3测试Statspack
SQL>executestatspack.snap
PL/SQLproceduresuccessfullycompleted.
SQL>executestatspack.snap
PL/SQLproceduresuccessfullycompleted.
SQL>@spreport.sql
3.4设置计划任务收集信息
SQL>@spauto
3.5升成分析报告
SQL>@spreport
3.6删除一个任务
SQL>selectjob,log_user,priv_user,last_date,next_date,intervalfromuser_jobs;
--------------------------------------------------------------------------------------
22PERFSTAT2002-12-5:
14:
33:
262002-12-514:
43:
00trunc(SYSDATE+1/144,'MI')
SQL>executedbms_job.remove('22')
当你完成了一个采样报告,你应该及时移除这个job任务,在生产环境中,遗漏一个无人照顾的job是非常危险的,
如果statspack运行一个星期,采样的数据量是非常惊人的。
有的生产企业因疏忽而当机!
3.7删除数据
可以以使用sptrunc.sql脚本删除所有数据
SQL>@sptrunc.sql
也可以删除部分数据
删除stats$snapshot数据表中的相应数据,其他表中的数据会相应的级连删除:
你可以更改snap_id的范围以保留你需要的数据。
SQL>selectmax(snap_id)fromstats$snapshot;
如果值为166
SQL>deletefromstats$snapshotwheresnap_id<=166;
3.8导出原始数据
在诊断系统问题时,可能需要向专业人士提供原始数据,这时我们可以导出Statspack表数据,其中我们可能用到:
spuexp.par,如:
expuserid=perfstat/my_perfstat_passwordparfile=spuexp.par
3.9查看已做的快照
根据已做的照来决定SPREPORT的内容
selectsnap_idfromstats$snapshot;
3.10STATSPACK主要参考表
概要表
⏹Stats$snapshot主表,可查看做了哪些快照,以snap_id和snap_time与其它表来关联
⏹Stats$parameter所有init.ORA的参数列表
⏹Stats$sgastat_summary所有SGA区域的内存尺寸列表
⏹Stats$latch_misses_summary所有锁定等待事件列表
⏹Stats$sql_summary所有超出设定值的SQL列表
⏹Stats$bg_event_summary所有超时和等待后台事件列表
系统表
⏹Stats$rollstat用于记录回滚段的信息
⏹Stats$latch用于显示各种锁存的命中率(要求在99%以上)
⏹Stats$librarycache用于显示库缓存中所有可能值的列表(库缓存是SQL语句进行解析和执行的内存空间)(要求在90%上以上)
⏹Stats$waitstat系统等待事件
⏹Stats$enqueuestat队列等待事件
⏹Stats$sysstat系统统计表
事务表
⏹Stats$buffer_pool保存与各个数据缓冲池中缓冲数量有关的的信息
⏹Stats$filestatxs文件的IO事件
事件表
⏹Stats$system_event系统事件\等待\超时及等待时间
⏹Stats$idle_event空闲事件
⏹Stats$session_event会话事件
4.ORACLE外部环境查看(CPU,IO,MEM)
4.1CPU内存查看
⏹操作系统内存
vmstat
bash-2.03$ vmstat 2 5
procs memory page disk faults cpu
r b w swap free re mf pi po fr de sr s0 s1 s1 -- in sy cs us sy id
0 0 0 9868032 2120968 14 3 159 8 8 0 0 0 0 24 0 306 455 1204 1 2 97
0 1 0 9813224 2154792 29 6 0 20 20 0 0 0 0 39 0 388 9587 2353 3 3 94
0 0 0 9813224 2154296 39 0 0 40 40 0 0 0 1 46 0 393 9529 2363 5 3 92
0 1 0 9813224 2153736 36 3 0 20 20 0 0 0 0 48 0 397 9387 2364 3 3 93
0 0 0 9813224 2153232 37 3 0 20 20 0 0 0 0 48 0 397 9483 2360 4 3 93
其中:
CPU瓶颈:
r:
正在运行的任务队列,当r值>CPU数量时,则会出现CPU等待瓶颈 (这个参数对CPU来说最重要)
b:
等待队列,当b>0时,说明o可能数量不够
us:
用户正在使用的CPU数量
sy:
系统使用CPU的百分比
id:
空闲CPU百分比
wa:
等待磁盘I/OCPU使用百分比(只有IBMAIX有)
查看CPU个数:
SUNSOARIS中
psrinfo –v|grep –I “status of processor” | wc -l
IBM或HP中
Ladev-C|grepProcess|wc-1
在Linux中
Cat/proc/cpuinfo|grepprocessor|wc-1
RAM瓶颈:
Page下:
Pi:
页导入次数:
如果RAW短缺时,系统会产生pi操作,用磁盘做虚拟内存
Po:
页导出次数
查看内存容量
prtconf|grep –i “mem”
当你发现vmstat中pi列非零,memory中的free列的值很小,glance,topas中内存的利用率多于80%时,这时说明你的内存方面应该调节一下了
⏹操作系统内存大小
1.decunix下:
uerf–r300|grep–imem
2.hp/ux下
dmesg命令
3.IBMAIX下
Lsdev-C|grepmem显示内存设备名
Lsattr–E1mem0根据设名(如mem0来显示内存)
4.Solaris下
Prtconf|grep–Imem
5.Linux下
Øfree
也可全用ipcs命令来观察
Ipcs–mb观察共享段内存(ipcs–ma察看明细)
在mode中有D标记的为不使用内存,可以用ipcrm–mid号来删除该内存段
也可以使用TOP工具来查看所有版本的内存情况,某些系统也可以使用glance命令来查看
Root>top
Root>glance
⏹数据库SGA内存
SGA总内存
selectsum(bytes)sgasizefromsys.v_$sgastat;--SGA区总和
SGA内存情况
select*fromsys.v_$sgastat;
查看SGA区剩余可用内存的方法
SQL>colOBJECT_NAMEformata20
SQL>col自由空间百分比(%)format90.99 --格式化,把小数点对齐为两位
SQL>selectname,
sgasize/1024/1024 "Allocated(M)",
bytes/1024 "自由空间(K)",
round(bytes/sgasize*100,2) "自由空间百分比(%)"
from(selectsum(bytes)sgasizefromsys.v_$sgastat)s,sys.v_$sgastatf
wheref.name='freememory';
4.2IO的查看
使用的工具有sar,这是一个比较通用的工具。
#sar-u210
即每隔2秒检察一次,共执行20次,当然这些都由你决定了。
示例返回:
HP-UXhpn2B.11.00U9000/800 08/05/03
18:
26:
32 %usr %sys %wio %idle
18:
26:
34 80 9 12 0
18:
26:
36 78 11 11 0
18:
26:
38 78 9 13 1
18:
26:
40 81 10 9 1
18:
26:
42 75 10 14 0
18:
26:
44 76 8 15 0
18:
26:
46 80 9 10 1
18:
26:
48 78 11 11 0
18:
26:
50 79 10 10 0
18:
26:
52 81 10 9 0
Average 79 10 11 0
其中的%usr指的是用户进程使用的cpu资源的百分比,
%sys指的是系统资源使用cpu资源的百分比,
%wio指的是等待io完成的百分比,这是值得我们观注的一项,
%idle即空闲的百分比。
如果wio列的值很大,如在35%以上,说明你的系统的IO存在瓶颈,你的CPU花费了很大的时间去等待IO的完成。
Idle很小说明系统CPU很忙。
像我的这个示例,可以看到wio平均值为11说明io没什么特别的问题,而我的idle值为零,cpu已经满负荷运行了。
⏹查询CPU状况命令
Sar -d
⏹查询磁盘竞争状况命令
Sar -d
⏹查询磁盘CPU竞争状况命令
sar -r
⏹显示换交换情况,用于查询内存是否短缺
Sar–w
⏹显示缓存情况,用于查看I/O是否存在问题
Sar–b
⏹Iostat命令
可以显示每一志磁盘的IO情况
5.ORACLE事件跟踪
5.1在全局启用
在参数文件(pfile/spfile)中指定
在ORACLE9i中需要在启动参数文件中指定
sql_trace=true
在全局启用SQL_TRACE会导致所有进程的活动被跟踪,包括后台进程及所有用户进程,这通常会导致比较严重的性能问题,所以在生产环境
中要谨慎使用.
在ORACLE10G中可以动态动态修改
Altersystemsetsql_trace=true
5.2在当前session级设置
在session级启用和停止sql_trace方式
启用当前session的跟踪:
SQL>altersessionsetsql_trace=true;
结束跟踪:
SQL>altersessionsetsql_trace=false;
5.3跟踪其他用户进程
通过Oracle提供的系统包DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION
来完成
⏹SET_SQL_TRACE_IN_SESSION过程序要提供三个参数
SQL>descdbms_system
PROCEDURESET_SQL_TRACE_IN_SESSION
ArgumentNameTypeIn/OutDefault?
-----------------------------------------------------------
SIDNUMBERIN
SERIAL#NUMBERIN
SQL_TRACEBOOLEANIN
⏹通过v$session我们可以获得sid、serial#等信息:
selectsid,serial#,usernamefromv$session
2whereusernameisnotnull;
SIDSERIAL#USERNAME
--------------------------------------------------
82041SYS
9437EYGLE
⏹设置跟踪及取消跟踪
SQL>execdbms_system.set_sql_trace_in_session(9,437,true)
SQL>execdbms_system.set_sql_trace_in_session(9,437,false)
5.4设置整个数据库系统跟踪
可以通过设置事件来完成这个工作
altersystemsetevents
'10046tracenamecontextforever,level1';
如果关闭跟踪,可以用如下语句
altersystemsetevents
'10046tracenamecontextoff';
其中的level1与上面的8都是跟踪级别
level1:
跟踪SQL语句,等于sql_trace=true
level4:
包括变量的详细信息
level8:
包括等待事件
level12:
包括绑定变量与等待事件
5.5获取跟踪文件
生成的跟踪文件位于/admin/SID/udump目录中,位置及文件名可以通过以下SQL查询获得:
select
d.value||'/'||lower(rtrim(i.instance,chr(0)))||'_ora_'||p.spid||'.trc'trace_file_name
from
(selectp.spid
fromsys.v$mystatm,sys.v$sessions,sys.v$processp
wherem.statistic#=1ands.sid=m.sidandp.addr=s.paddr)p,
(selectt.instancefromsys.v$threadt,sys.v$parameterv
wherev.name='thread'and(v.value=0ort.thread#=to_number(v.value)))i,
(selectvaluefromsys.v$parameterwherename='user_dump_dest')d
/
6.ORACLE内存调优
6.1内存结构
显示SGA大小可以使用showsga命令
VariableSize为可变大小,包括sharedpool,largepool等等
6.2参数调整
Db_block_size数据块大小,最小应该为8K,块的大小影响着一次读取数据的速度.调整块大小需要将数据重新导出导入.
Db_file_multiblock_read_count一次读取块的数目,ORACLE要求一次读取64K数据,需要根据块大小来设置该项值,如果Db_block_size为8K,则必须设定为8
sort_area_size该参数用于排序,系统默认为512K,太小,应该调整(比如2M)
在ORACLEinitSID.ORA文件中,设置fast=true参数可以提高系统速度
6.3keep池与recycle池调整
⏹获取KEEP池命中率
SELECTNAME,PHYSICAL_READS,DB_BLOCK_GETS,CONSISTENT_GETS,(1-(PHYSICAL_READS)/(DB_BLOCK_GETS+CONSISTENT_GETS))“HITRA/IO”FROMV$BUFFER_POOL_STATISTICSWHERENAME=‘KEEP’;
⏹修改KEEP池
Altertablehrp270.gy_dmzdstorage(buffer_poolkeep);
⏹修改recycle池
Altertablehrp270.gy_dmzdstorage(buffer_poolrecycle);
6.4特别注意
默认情况下,所有表都使用DEFAULT池,它的大小就是数据缓冲区BUFFERCACHE的大小,由参数DB_CACHE_SIZE决定,所以先必须缩小SGA中其他内存缓冲区区的大小,然后再增加db_keep_cache_size和db_recycle_cache_size
Showparametercache_size--查看各cache大小
Atlersystemsetdb_cache_size=80M;--将db_cache_size减小
Atlersystemsetdb_keep_cache_size=12M;----将db_keep_cache_size增大
Atlersystemsetdb_recycle_cache_size=8M;----将db_recycle_cache_size增大
7.重整索引
通过rebuild语句,可以快速重整或移动索引到别的表空间
rebuild有重建整个索引数的功能,可以在不删除原始索引的情况下改变索引的存储参数
语法为
alterindexindex_namerebuildtablespacets_name
storage(......);
如果要快速重建整个用户下的索引,可以用如下脚本,当然,需要根据你自己的情况做相应修改
SQL>setheadingoff
SQL>setfeedbackoff
SQL>spoold:
\index.sql
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ORACLE 学习 摘要