Oracle管理及常用基础脚本.docx
- 文档编号:4776789
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:57
- 大小:45.76KB
Oracle管理及常用基础脚本.docx
《Oracle管理及常用基础脚本.docx》由会员分享,可在线阅读,更多相关《Oracle管理及常用基础脚本.docx(57页珍藏版)》请在冰豆网上搜索。
Oracle管理及常用基础脚本
Oracle管理及常用基础脚本
1性能监控
1.检测数据库中的事件和等待
SELECTevent,total_waits,total_timeouts,time_waited,average_wait
FROMv$system_event
2.查询会话中的事件和等待时间
selectsid,event,total_waits,average_wait
fromv$session_eventwheresid=10;
3.查询等待进程
SELECTsid,seq#,event,wait_time,state
FROMv$session_wait;
4.监控全局区的性能
select*fromv$sgastat;
5.查询命中率
selectgethitratio
fromv$librarycache
wherenamespace='SQLAREA';
6.当前sql语句
selectsql_text,users_executing,
executions,loads
fromv$sqlarea;
7.查询高速缓存中的命中率
selectsum(pins)"Executions",sum(reloads)"CacheMisses",
sum(reloads)/sum(pins)
fromv$librarycache;
8.查询全局字典中的有效装载次数
selectnamespace,pins,reloads,invalidations
fromv$librarycache;
9.回滚段的争用情况
selectname,waits,gets,waits/gets"Ratio"
fromv$rollstata,v$rollnameb
wherea.usn=b.usn;
10.监控表空间的I/O比例
selectdf.tablespace_namename,df.file_name"file",f.phyrdspyr,
f.phyblkrdpbr,f.phywrtspyw,f.phyblkwrtpbw
fromv$filestatf,dba_data_filesdf
wheref.file#=df.file_id
orderbydf.tablespace_name;
11.监控文件系统的I/O比例
selectsubstr(a.file#,1,2)"#",substr(a.name,1,30)"Name",
a.status,a.bytes,b.phyrds,b.phywrts
fromv$datafilea,v$filestatb
wherea.file#=b.file#;
12.在某个用户下找所有的索引
selectuser_indexes.table_name,user_indexes.index_name,uniqueness,column_name
fromuser_ind_columns,user_indexes
whereuser_ind_columns.index_name=user_indexes.index_name
anduser_ind_columns.table_name=user_indexes.table_name
orderbyuser_indexes.table_type,user_indexes.table_name,
user_indexes.index_name,column_position;
13.监控SGA中字典缓冲区的命中率
selectparameter,gets,Getmisses,getmisses/(gets+getmisses)*100"missratio",
(1-(sum(getmisses)/(sum(gets)+sum(getmisses))))*100"Hitratio"
fromv$rowcache
wheregets+getmisses<>0
groupbyparameter,gets,getmisses;
14.监控SGA中共享缓存区的命中率,应该小于1%
selectsum(pins)"TotalPins",sum(reloads)"TotalReloads",
sum(reloads)/sum(pins)*100libcache
fromv$librarycache;
selectsum(pinhits-reloads)/sum(pins)"hitradio",sum(reloads)/sum(pins)"reloadpercent"
fromv$librarycache;
15.显示所有数据库对象的类别和大小
selectcount(name)num_instances,type,sum(source_size)source_size,
sum(parsed_size)parsed_size,sum(code_size)code_size,sum(error_size)error_size,
sum(source_size)+sum(parsed_size)+sum(code_size)+sum(error_size)size_required
fromdba_object_size
groupbytypeorderby2;
16.监控SGA中重做日志缓存区的命中率,应该小于1%
selectname,gets,misses,immediate_gets,immediate_misses,
Decode(gets,0,0,misses/gets*100)ratio1,
Decode(immediate_gets+immediate_misses,0,0,
immediate_misses/(immediate_gets+immediate_misses)*100)ratio2
FROMv$latchWHEREnameIN('redoallocation','redocopy');
17.监控内存和硬盘的排序比率,最好使它小于.10,增加sort_area_size
SELECTname,valueFROMv$sysstatWHEREnameIN('sorts(memory)','sorts(disk)');
18.监控字典缓冲区
select(sum(pins-reloads))/sum(pins)"libcache"fromv$librarycache;
select(sum(gets-getmisses-usage-fixed))/sum(gets)"rowcache"fromv$rowcache;
selectsum(pins)"executions",sum(reloads)"cachemisseswhileexecuting"fromv$librarycache;
后者除以前者,此比率小于1%,接近0%为好
selectsum(gets)"dictionarygets",sum(getmisses)"dictionarycachegetmisses"
fromv$rowcache
19.找ORACLE字符集
select*fromsys.props$wherename='NLS_CHARACTERSET';
20.监控MTS
selectbusy/(busy+idle)"sharedserversbusy"fromv$dispatcher;
此值大于0.5时,参数需加大
selectsum(wait)/sum(totalq)"dispatcherwaits"fromv$queuewheretype='dispatcher';
selectcount(*)fromv$dispatcher;
selectservers_highwaterfromv$mts;
servers_highwater接近mts_max_servers时,参数需加大
21.碎片程度
selecttablespace_name,count(tablespace_name)fromdba_free_spacegroupbytablespace_name
havingcount(tablespace_name)>10;
altertablespacenamecoalesce;
altertablenamedeallocateunused;
createorreplaceviewts_blocks_vas
selecttablespace_name,block_id,bytes,blocks,'freespace'segment_namefromdba_free_space
unionall
selecttablespace_name,block_id,bytes,blocks,segment_namefromdba_extents;
select*fromts_blocks_v;
selecttablespace_name,sum(bytes),max(bytes),count(block_id)fromdba_free_space
groupbytablespace_name;
查看碎片程度高的表
SELECTsegment_nametable_name,COUNT(*)extents
FROMdba_segmentsWHEREownerNOTIN('SYS','SYSTEM')GROUPBYsegment_name
HAVINGCOUNT(*)=(SELECTMAX(COUNT(*))FROMdba_segmentsGROUPBYsegment_name);
22.表、索引的存储情况检查
selectsegment_name,sum(bytes),count(*)ext_quanfromdba_extentswhere
tablespace_name='&tablespace_name'andsegment_type='TABLE'groupbytablespace_name,segment_name;
selectsegment_name,count(*)fromdba_extentswheresegment_type='INDEX'andowner='&owner'
groupbysegment_name;
23、找使用CPU多的用户session
12是cpuusedbythissession
selecta.sid,spid,status,substr(a.program,1,40)prog,a.terminal,osuser,value/60/100value
fromv$sessiona,v$processb,v$sesstatc
wherec.statistic#=12andc.sid=a.sidanda.paddr=b.addrorderbyvaluedesc;
2空间管理
1.察看数据库的大小,和空间使用情况
SQL>coltablespaceformata20--在显示中指明列的输出格式
SQL>selectb.file_id --文件ID,
b.tablespace_name --表空间,
b.file_name --物理文件名,
b.bytes --总字节数,
(b.bytes-sum(nvl(a.bytes,0))) --已使用,
sum(nvl(a.bytes,0)) --剩余,
sum(nvl(a.bytes,0))/(b.bytes)*100 --剩余百分比
fromdba_free_spacea,dba_data_filesb
wherea.file_id=b.file_id
groupbyb.tablespace_name,b.file_name,b.file_id,b.bytes
orderbyb.tablespace_name
/
dba_free_space--表空间剩余空间状况
dba_data_files--数据文件空间占用情况
2.查看现有回滚段及其状态
selectsegment_name,owner,tablespace_name,segment_id,file_id,statusfromdba_rollback_segs;
3.表空间大小
selecttablespace_name,count(*),sum(blocks),sum(bytes)/1024/1024
fromdba_data_files
groupbytablespace_name;
4.表空间使用情况
selectdf.tablespace_name"表空间名",totalspace"总空间M",freespace"剩余空间M",round((1-freespace/totalspace)*100,2)"使用率%"
from(selecttablespace_name,round(sum(bytes)/1024/1024)totalspace
fromdba_data_files
groupbytablespace_name)df,
(selecttablespace_name,round(sum(bytes)/1024/1024)freespace
fromdba_free_space
groupbytablespace_name)fs
wheredf.tablespace_name=fs.tablespace_name;
5.删除表空间
selectt.name,d.namefromv$tablespacet,v$datafiledwheret.name='DATA_HOST_A'andt.ts#=d.ts#;altertablespaceDATA_HOST_Aoffline;
droptablespaceDATA_HOST_Aincludingcontents;
6.查看数据文件的位置
selecttablespace_name,file_id,bytes/1024/1024,file_namefromdba_data_filesorderbyfile_id;
7.为这个表空间增加一个数据文件
altertablespace表空间名adddatafile'/u1/oradata/userdata_002.ora'size50m; --Unix
altertablespace表空间名adddatafile'c:
\oradata\userdata_002.ora'size50m; --WindowsNT
8.重新调整数据文件的大小
alterdatabasedatafile'/u1/oradata/userdata_001.ora'resize50M; --Unix
alterdatabasedatafile'c:
\oradata\userdata_002.ora'resize50M; --WindowsNT
9.临时表空间和排序表空间的使用状态
selectsubstr(vses.username,1,12)"ORA_USER",substr(osuser,1,12)"OS_USER",
substR(sql_text,1,50)"SQL_STMT"
from
V$sqlareavsql,V$sessionvses,V$sort_usagevsort
where
vsort.tablespace='TEMP'andvsort.sqladdr=vses.sql_addressandvsql.address=vsort.sqladdr
selecttablespace_name,extent_size,total_extents,used_extents,free_extents,max_used_size
fromv$sort_segment;
10.确定盘区和盘区内容及表或者空间的碎片程度
selectsegment_name,extenfromdba_extents--确定盘区的内容
descdba_segments--确定段的内容
--返回了结果表明碎片的严重
selectsegment_name,tablespace_name,extents,segment_typefromdba_segmentswhereextents>4
--空间碎片严重程度
selecttablespace_name,count(tablespace_name)fromdba_free_spacegroupbytablespace_name
havingcount(tablespace_name)>10
3基本知识
1.为一个事务指定一个回滚段
settransactionuserollbacksegmentrollback_segment_name--指定回滚段
2.如何创建和使用光标
--光标的使用
declare@namechar(30)
declare@homebasechar(40)
declare@stylechar(20)
declare@arttist_idint
createartist_cursorcursor
forselect*fromdim_age
openartist_cursor
fetchartist_cursorinto@arttist_id,@homebase,@style
while(@@sqlstatus=0)
begin
print@homebase
print@style
print@arttist_id
end
closeartist_cursor
deallocatecursorartist_cursor
go
3.如何导出和导入数据
--数据导出导入
expdss/dss@oralcequery=\"whereday_id>12\"tables=(customer)file=d:
\sample.dmplog=
rows=n
full=ytables=()owner=--三种导出方式
impuserid/pwd@oracle_sidfromuser=(dss,dwh)touser=(dss,dwh)dwhfile=sample.dmp
--分区表的到导出user1.table_name:
px分区px
expuser_id/pwd@oracle_sidtables=(user1.table_name:
px)file=sample.dmp
4.如何使数据库运行于归档模式
1.打开ini.ora文件
2.修改文件内容
log_archive_start=true
log_archive_dest_1="location=D:
\Oracle\oradata\ORACLE\archive"
log_archive_format=%%ORACLE_SID%%T%TS%S.ARC
3.进入服务管理器输入
shutdown
startupmount
alterdatabasearchivelog
alterdatabaseopen
此时数据库运行与归档模式下可以查询输入
archiveloglist
5.如何做数据库的热备份和恢复
--要对数据库做热备份需要数据库运行在归档模式下:
--首先使表空间处于备份状态
--拷贝数据文件
--使表空间回复到正常状态
--进入sqlplus输入:
altertablespaceusersbeginbackup;
$copyd:
\oracle_home\usr.orad:
\backup\user.dbf;
altertablespaceusersendbackup;
altersystemcheckpoint;
--恢复数据库需要做如下的步骤:
--将映像备份文件拷贝到各个表空间对应的正确的位置
svrmgrl
connectinternal
startupmount
alterdatabaseopen
recoverdatabase
6.如何查看所有的表和创建结构相同的表
1、查看当前所有对象
SQL>select*fromtab;
2、建一个和a表结构一样的空表
SQL>createtablebasselect*fromawhere1=2;
SQL>createtableb(b1,b2,b3)asselecta1,a2,a3fromawhere1=2;
7.如何查看当前日期
SQL>selectto_char(sysdate,'yyyy-mm-dd,hh24:
mi:
ss')fromdual;
8.如何在用户间复制数据
SQL>copyfr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 管理 常用 基础 脚本
![提示](https://static.bdocx.com/images/bang_tan.gif)