荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: 数据库DBA管理系统的实现
发信站: BBS 荔园晨风站 (Thu Jan 21 22:51:49 1999), 转信


  对于一个大型数据库,就安全而言,限制数据库管理员(DBA)对库的
操作是很有必要的,但由于应用程序的不完善等原因,DBA对库的操作
又不可避免。为了确保应用系统安全运行,笔者研制出一个实用的数
据库DBA管理系统。本管理系统是在Informix数据库上实现的。
    DBA对库的直接操作是利用数据库查询语言isql,如果能将DBA的
进库操作进行同步跟踪并映射到硬盘上,对于日后的操作分析是很有
帮助的。为此,笔者用C语言编制一个isql硬盘映射程序,将DBA每一步
操作都记录在一个文件中,然后再用Shell语言编制一个管理程序,从
而方便地查阅DBA操作类型、次数及相应日志,使得DBA每个操作都有
据可查。
    系统实现

    1.以informix注册,转到$HOME/bin下,将isql换名,编辑C语言程
序并编译,执行文件名为isql,组改为group,权限为754。

    2.创建dba用户,组为group,权限为731,形成CXLOG空文件,权限改
为666,在.profile最后增加两行:
    dbamain
    exit

    3.编辑shell程序dbamain及CX1~CX5等六个程序,属主为dba,权
限改为700。
    系统功能及完善
    该系统具有操作简单,使用方便、移植性好等优点,具体来说,本
系统可对DBA日志/usr/ dba/CXLOG进行检测。若此文件字节数大于零
则可对DBA进库操作进行分类统计或查询浏览, 否则系统提示无记录

    由于这套系统仅是本人在Informix CSE、ONLINE5.0上对isql的
简单加工,因此尚有一定的局限性,希望各位同仁不吝赐教,使DBA对库
的操作受到更加严密的监督控制,以确保数据库的安全。
    程序清单附后。
    dbamain:
    dispmenu(){
    clear
    echo"\t  DBA ADMINISTRATION SYSTEM"
    echo
    echo"\t\t 1.Display Number of DBA Into DB"
    echo"\t\t 2.Display Number of DBA Query DB"
    echo"\t\t 3.Display Number of DBA Add DB"
    echo"\t\t 4.Display Number of DBA Update DB"
    echo"\t\t 5.Display Number of DBA Remove DB"
    echo"\t\t 6.Browse LOG of DBA Into  DB"
    echo"\t\t 7.Browse  LOG of DBA Query DB"
    echo"\t\t 8.Browse LOG of DBA Add  DB"
    echo"\t\t 9.Browse LOG of DBA Update  DB"
    echo"\t\t 10.Browse LOG of DBA Remove DB"
    echo"\t\t 0.Quit"echoechoecho"\t\t Please choose[0-10]:\
c"
    }
    while[1]  do
      dispmenu
    read ans
    if["$ans"=0]
    then
      clear
      exit
    fi
    if[$"ans"-lt 1-o $ "ans"-gt 10]
    then
      echo"\007\n\t\tInvalid choice!!"
      sleep 1
    else
      clear
      case $ans in
      1) if[-s/usr/dba/CXLOG]
          then
          echo "DBA into DB number is:\c"
          grep -c’date +%Y’ /usr/dba/CXLOG
          else
          echo"\t\007\007\007No record!!!"
          fi
         sleep 2;;
      2) if[-s /usr/dba/CXLOG]
          then
          echo"DBA into DB Query Number is:\c"
          grep -c Searching.../usr/dba/CXLOG
          else
          echo "\t\007\007\007No record!!!"
          fi
          sleep 2;;
      3) if[-s /usr/dba/CXLOG]
          then
          echo "DBA into DB Add Number is:\c"
          grep -c added /usr/dba/CXLOG
          else
          echo"\t\007\007\007No record!!!"
          fi
          sleep 2;;
      4) if[-s /usr/dba/CXLOG]
          then
          echo "DBA into DB Update number is:\c"
          grep -c changed /usr/dba/CXLOG
          else
          echo"\t\007\007\007No record!!!"
          fi
          sleep 2;;
      5) if[-s /usr/dba/CXLOG]
          then
          echo"DBA into DB Remove number is:\c"
          grep -c deleted /usr/dba/CXLOG
          else
          echo"\t\007\007\007No record!!!。
          fi
          sleep 2;;
      6) if[-s usr/dba/CXLOG]
          then
          clear
          echo"DBA into DB context is:\c"
          ./CX1
          else
          echo"\t\007\007\007No record!!!"
          fi;;
      7) if[-s /usr/dba/CXLOG]
          then
          echo"DBA into DB Query context is:\c"
          ./CX2
          else
          echo"\t\007\007\007No record!!!"
          fi
          sleep 2;;
      8) if[-s /usr/dba/CXLOG]
         then
         ./CX3
         else
         echo"\t\007\007\007No record!!!"
         fi
         sleep 2;;
      9) if[-s /usr/dba/CXLOG]
         then
         ./CX4
         else
         echo"\t\007\007\007No record!!!"
         if
         sleep 2;;
      10) if[-s /usr/dba/CXLOG]
          then
          ./CX5
          else
          echo"\t\007\007\007No record!!!"
          fi
          sleep 2;;
         esca
         fi
         done
    C程序:
    #include<stdio.h>
    #include<curses.h>
    #include<fcntl.h>
    #include<signal.h>
    #include<time.h>
    #include<sys/ioctl.h>
    #include<sys/ipc.h>
    #include<sys/sem.h>
    #define BS 8#define ENTER 10
    #define SPACE 32
    #define MAX 5
    main(){system("date>>/usr/dba/CXLOG");
    system("who am i>>/usr/dba/CXLOG");
    system("cxcx|tee -a /usr/dba/CXLOG");
    CX1:
    fgrep -v ’INFORMIX
    informix
    ALL
    Press
    Copyright’/usr/dba/CXLOG|more
    CX2~CS6略。

--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店