ITPub博客

首页 > 大数据 > 数据分析 > Oracle数据库日常运维

Oracle数据库日常运维

原创 数据分析 作者:pangzi913 时间:2024-11-13 22:44:36 0 删除 编辑

一利用OS工具诊断


1
2
3
4
实时查看资源情况: top  -H -u oracle
vmstat查询系统负载:vmstat  1 99
查看磁盘情况:sar -b 1 10
dstat查看cpu/net/io :dstat  1 100


二.数据库查询


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
1.查询监控library cache 命中率
select  1- sum (l.RELOADS)/ sum (l.PINS)  "Librarycache hit(%)"  from  v$librarycache l;
2.查询dict cache命中率
SELECT  ( SUM (GETS - GETMISSES - USAGE - FIXED)) /  SUM (GETS)  "ROW CACHE HINT Ratio(%)"  FROM  V$ROWCACHE;
3.查询sort排序,特定sid的session级别的sort排序,V$sort_usage;
select  sort_mem.value  "Sort memory"  ,sort_dsk.value  "Sort disk" ,(sort_mem.value/(sort_dsk.value+sort_mem.value))*100  "Sort mem_hit(%)"
from  v$sysstat sort_mem,v$sysstat sort_dsk
where  sort_mem. name  like  '%sort%memory%'
and  sort_dsk. name  like  '%sorts%disk%' ;
Sort memory  Sort disk Sort mem_hit(%)
----------- ---------- ---------------
      558889          0             100
select  name ,value  from  v$sysstat  where  name  like  '%sort%' ;
NAME                                                                   VALUE
---------------------------------------------------------------- ----------
sorts (memory)                                                        12848
sorts (disk)                                                              0
sorts ( rows )                                                         410458                   -->多少行被排序
  
select  sorts (disk)/sorts (memory)  as  sorts(disk)  from  dual;                                  -->计算排序的大小
特定session的排序情况
select  sy.CLASS,sy. NAME ,se.SID,se.VALUE  from  v$sysstat sy,v$sesstat se
where  sy.STATISTIC#=se.STATISTIC#
and  sy. name  like  '%sort%'
and  sid=( select  sid  from  v$session  where  username= 'TOM' )    /*如果从awr,addm中找到 top  sql的话可以加sql_address,sql_hash_value精确定位*/     
      CLASS  NAME                                                                     SID      VALUE
---------- ---------------------------------------------------------------- ---------- ----------
         64 sorts (memory)                                                         1088         94      -->94  是
         64 sorts (disk)                                                           1088          0
         64 sorts ( rows )                                                           1088       3453
     
      CLASS  NAME                                                                     SID      VALUE
---------- ---------------------------------------------------------------- ---------- ----------
         64 sorts (memory)                                                         1088         95     -->95
         64 sorts (disk)                                                           1088          0
         64 sorts ( rows )                                                           1088       3453
            
      CLASS  NAME                                                                     SID      VALUE
---------- ---------------------------------------------------------------- ---------- ----------
         64 sorts (memory)                                                         1088         95     -->95
         64 sorts (disk)                                                           1088          0
         64 sorts ( rows )                                                           1088       3453        select  st. name ,st.VALUE/ (st.VALUE+sy.VALUE)*100  as  hito   from  v$sysstat st,v$sysstat sy
select  st. name ,st.VALUE/(st.VALUE+sy.VALUE)*100  as  hito   from  v$sysstat st,v$sysstat sy
where  st.STATISTIC#=341  and  sy.STATISTIC#=342
         
说明:
*.是session级别的,如果要查看特定的sql则可以从v$sql中的sort字段查看
*.sorts是个递增的,当运行2条同样的sorts时并不会增加,也就解释了 temporary  tablespace uniform(pct=0) 不马上回收空间,预留下次sort的原因了


三.rman

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1.rman备份恢复
rman>restore  database ;
rman>recover  database  until  time  '09-06-22 08:55:00'
rman> alter  database  open  resetlogs;
2.rman删除过期文件脚本
rman target / <<EOF
run{ delete  obsolete;}
yes
EOF
3.rman crosscheck archivelog
这种情况就是在rman有日志gap的时候做不完全恢复后,仍然会出现找不到日志的错误信息,解决办法:
step1:rman  delete  obsolete;
step2会提示不能删除需要crosscheck archivelog  all ;
step3:rman>crosscheck archivelog  all ;
step4:rman>可以正常备份archivelog 
  over!!
rman>crosscheck archivelog  all ;


四.热点表、热点快


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
1.热块
X$bh
(TS#,FILE#,DBARFIL,DBABLK,OBJ,tch)
/*obj是object_id,tch就是touch,即接访问的意思>50比较高,dbarfil,dbablk可以去dump block*/
select  *  from  ( select  *  from  x$bh  order  by  tch)  where  rownum<=10;查询前10的热块
select  object_name,object_type fromd dba_objects  where  object_id= x$bh.obj
2.热表 dba_tables,dba_tab_modifications,dbms_stat.flush_database_info;
step1
x$bh tch字段查询热的obj(object_id)
step2 dba_object id 查询object_owner,object_type,object_name
setep3 搜集信息  exec  dbms_stats.flush_database_info;
step 4 dba_tables,dba_tab_modifications查询更新次数
select  t.table_name,t.last_analyzed,m.inserts,m.updates,m.deletes  from  dba_tables t,dba_tab_modifications m
where  t.table_name=m.table_name  and  t.owner= 'SYS'
order  by  m.inserts,m.updates,m.deletes
WRH$_SYSSTAT                   2009-7-18 15:        726          0       9801
WRH$_LATCH                     2009-7-18 15:        764          0      10314
JAVASNM$                       2009-6-30 22:        809          0          0
COM$                           2009-6-30 22:        836         12          0
WRH$_SYSTEM_EVENT              2009-7-18 15:        872          0          0
ALERT_QT                                            887        685        787
WRI$_OPTSTAT_HISTHEAD_HISTORY  2009-7-8 0:40        894          0          0
WRH$_SEG_STAT                  2009-7-18 15:        913          0          0
WRH$_SQLSTAT                   2009-7-18 15:       1011          0          0
IDL_UB1$                       2009-6-30 22:       1343         55          0
WRH$_SERVICE_STAT              2009-7-18 15:       1344          0          0
SYN$                           2009-6-30 22:       1384         58          0
OBJAUTH$                       2009-6-30 22:       1536          0          1
DEPENDENCY$                    2009-6-30 22:       3783         20        135
WRH$_PARAMETER                 2009-7-18 15:       3960          0          0
WRH$_SYSSTAT                   2009-7-18 15:       5445          0          0
WRH$_LATCH                     2009-7-18 15:       6112          0          0
  
3.热块查找
SQL>  select  bh.FILE#,bh.DBABLK, count (*)  from  x$bh bh
   2   group  by  bh.FILE#,bh.DBABLK
   3   having  count (*)>3;
  
      FILE#     DBABLK    COUNT (*)
---------- ---------- ----------
          3       2744          5
          1      53665          6
          1      14725          5
          1      48072          5
          3      14142          6
          1      14722          5
          1      27277          5
          1      14724          5
          1      48068          5
          1      27273          5
          1      27274          5
          1      14726          5
          1      27278          5
          1      26990          6
          1      14727          5
          1      48069          5

可以用这个查询查看这些块。一般而言,你会发现在任何时间点上缓存中一个块的版本大约不超过6

个,


weibo.com/ttarticle/p/show?id=2309405100016451846159



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7633405/viewspace-3048683/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Linux旧内核删除
请登录后发表评论 登录
全部评论

注册时间:2008-11-22

  • 博文量
    42
  • 访问量
    72682