ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [20210507]如何实现.txt

[20210507]如何实现.txt

原创 Linux操作系统 作者:lfree 时间:2021-05-07 22:21:39 0 删除 编辑

[20210507]如何实现.txt

--//前面的测试,链接:http://blog.itpub.net/267265/viewspace-2771267/ =>[20210507]dump library_cache.txt
--//如何写简单脚本实现1个Bucket下,有2行^  LibraryHandle:的输出呢? 把转储文件拷贝出来,在家里做一个尝试.

C:\other> grep -E "^Bucket:|^  LibraryHandle:|^$" book_ora_12044_0003.trc >aa.txt

--//真心话,写了一个多小时,代码如下:

C:\other>cat a1.awk
BEGIN {
line = 0
bucket = ""
library = ""
}

/^Bucket:/,/^$/ {
    if ($0 ~ /^Bucket:/) {
        line=0
        bucket=$0
    }

    if ($0 ~ /^  LibraryHandle:/ && line == 0 ) {
        line=NR
        library=$0
    }

    if ($0 ~ /^  LibraryHandle:/ && line != 0 ) {
        if ( line+1 == NR ) {
            printf "%s\n" ,bucket
            printf "%s\n" ,library
            printf "%s\n\n" ,$0
            line = 0
            bucket = ""
            library = ""
        }
    }
}

C:\other>awk -f a1.awk aa.txt | head -20
Bucket: #=2722 Mutex=0x80a8b8a8(0, 72, 0, 6)
  LibraryHandle:  Address=0x7d6449f8 Hash=ae0e0aa2 LockMode=0 PinMode=0 LoadLockMode=0 Status=VALD
  LibraryHandle:  Address=0x7c991c18 Hash=a8240aa2 LockMode=0 PinMode=0 LoadLockMode=0 Status=VALD

Bucket: #=3845 Mutex=0x80a96820(0, 71, 0, 6)
  LibraryHandle:  Address=0x7e252928 Hash=27660f05 LockMode=0 PinMode=0 LoadLockMode=0 Status=0
  LibraryHandle:  Address=0x7e04d730 Hash=a2e00f05 LockMode=0 PinMode=0 LoadLockMode=0 Status=VALD

Bucket: #=4143 Mutex=0x80a996b0(0, 59, 0, 6)
  LibraryHandle:  Address=0x7c9bc308 Hash=f0f0102f LockMode=0 PinMode=0 LoadLockMode=0 Status=0
  LibraryHandle:  Address=0x7bd3ca68 Hash=5b5e102f LockMode=0 PinMode=0 LoadLockMode=0 Status=0

Bucket: #=7663 Mutex=0x80abbcb0(0, 59, 0, 6)
  LibraryHandle:  Address=0x7d6aea60 Hash=61ae1def LockMode=0 PinMode=0 LoadLockMode=0 Status=VALD
  LibraryHandle:  Address=0x7c516960 Hash=eb7e1def LockMode=0 PinMode=0 LoadLockMode=0 Status=0

Bucket: #=8108 Mutex=0x80ac0238(0, 70, 0, 6)
  LibraryHandle:  Address=0x7bf0d468 Hash=c21a1fac LockMode=0 PinMode=0 LoadLockMode=0 Status=0
  LibraryHandle:  Address=0x7c11b0c8 Hash=aadc1fac LockMode=0 PinMode=0 LoadLockMode=0 Status=VALD

awk: a1.awk:22: (FILENAME=aa.txt FNR=5998) fatal: printf to "standard output" failed (Invalid argument)

C:\other>awk -f a1.awk aa.txt | grep "Bucket" |wc
     57     342    2691

--//与转储的下划线看到的库缓存对象数量一致.
Library Cache Dump
SGA:0x80a6fea8 Flags=ac3
DebugContext:  DebugNameSpace=0 DebugType=0 DebugLevel=0x0
LIBRARY CACHE HASH TABLE: size=131072 count=3764
Buckets with more than 20 objects:
NONE
Hash Chain Size     Number of Buckets
---------------     -----------------
              0                127365
              1                  3650
              2                    57
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~              
              3                     0
              4                     0
              5                     0
              6                     0
              7                     0
              8                     0
              9                     0
             10                     0
             11                     0
             12                     0
             13                     0
             14                     0
             15                     0
             16                     0
             17                     0
             18                     0
             19                     0
             20                     0
            >20                     0

--//如果要写脚本实现1个Bucket下,有3行^  LibraryHandle:的输出,代码还给重新写.放弃,不擅长awk的脚本语言.

--//那位知道更好的写法..

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

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969820