首页 > 编程语言 >转 python 自动监控表空间,并自动添加数据文件

转 python 自动监控表空间,并自动添加数据文件

时间:2022-10-26 17:37:02浏览次数:65  
标签:tmp 数据文件 python dat tablespace sql 自动 txt os

侯志清-江西南昌  

python 自动监控表空间,并自动添加数据文件

复制代码
#!/usr/bin/python
import os
import time
import linecache

# 定义记录日志文件
def rlog(log):
        LTIME=time.strftime('%Y-%m-%d %H:%M:%S')
        f=open('/tmp/poracle.log','a')
        f.write("\033[32;1m"+LTIME+' '+log+"\n\033[0m")
        f.close()
def wlog(log):
        LTIME=time.strftime('%Y-%m-%d %H:%M:%S')
        f=open('/tmp/poracle.log','a')
        f.write("\033[31;1m"+LTIME+' '+log+"\n\033[0m")
        f.close()

#定义sql def sql(sql): f=open('/tmp/tmp.sql','w') f.write("spool /tmp/output.txt\n") f.write(sql+"\n") f.write("spool off\n") f.write("exit\n") f.close()
#构造查询表空间的SQL语句 sql('''set linesize 500 pagesize 100; select a.tablespace_name "tablespace", trunc(a.total) "allocated(M)", trunc(a.total-b.free) "Used (M)", trunc(b.free) " free space(M)", ceil((1-b.free/a.total)*100) "Usage %" from (select tablespace_name, sum(nvl(bytes,0))/1024/1024 total from dba_data_files group by tablespace_name) a, (select tablespace_name, sum(nvl(bytes,0))/1024/1024 free from dba_free_space group by tablespace_name) b where a.tablespace_name=b.tablespace_name order by 3 desc;''')
#将结果输出到/tmp/output.txt try: os.system("sqlplus / as sysdba @/tmp/tmp.sql") except: pass #格式化 /tmp/ouput.txt到/tmp/outtmp.txt i=3 fl=open('/tmp/outtmp.txt','a') while True: try: line=linecache.getlines('/tmp/output.txt')[i] if len(str.strip(line))==0: fl.close() break else: fl.write(line) i += 1 except: break os.remove('/tmp/output.txt') os.remove('/tmp/tmp.sql') #获取数据文件目录 sql('select name from v$datafile where file#=1;') try: os.system("sqlplus / as sysdba @/tmp/tmp.sql") except: pass linecache.clearcache() path=os.path.dirname(str.strip(linecache.getline(r'/tmp/output.txt',4))) os.remove('/tmp/output.txt') os.remove('/tmp/tmp.sql') #如果表空间大于95%,则构造添加数据文件SQL语句 ftmp=open('/tmp/outtmp.txt','r') f=open('/tmp/tmp.sql','a') for line in ftmp: dat_in = line.split() if int(dat_in[4])>95: if dat_in[0]=="SYSTEM" or dat_in[0]=="SYSAUX" or dat_in[0]=='UNDOTBS1': pass else: wlog(dat_in[0]+" Now is "+dat_in[4]+"% outoff 95%") f.write("alter tablespace "+dat_in[0] + " add datafile '"+path+"/"+dat_in[0]+time.strftime('%Y%m%d%H%M%S')+".dbf' size 20G autoextend on;\n") f.write("exit\n") f.close() ftmp.close() os.remove('/tmp/outtmp.txt') #添加数据文件到表空间 try: CMD=os.system("sqlplus / as sysdba @/tmp/tmp.sql") except: pass os.remove('/tmp/tmp.sql') if CMD==0: rlog("add datafile to tablespace success!") else: wlog("add datafile to tablespace faild!")

标签:tmp,数据文件,python,dat,tablespace,sql,自动,txt,os
From: https://www.cnblogs.com/feiyun8616/p/16829227.html

相关文章

  • python进程
    1、概念进程是一个执行中的程序,资源分配的最小单位。每个进程都拥有自己的地址空间、内存、数据栈以及其他用于跟踪执行的辅助数据。在单核CPU系统中的多进程,内存中可以有......
  • websocket接口自动化集成pytest测试框架
    websocket协议1、介绍WebSocket是一种在单个TCP通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC6455,并由RFC7936补充规范。WebSocketAPI也被W3C定为标准。We......
  • python切片数组越界?
    1.在对list进行切片时,如x[9:12],若len(x)=10,只会返回x[9],而不会像其他语言直接数组越界错误。x=[iforiinrange(10)]print(x)foriinrange(0,10,3):print(x[i:i+3]......
  • 图像处理:opencv-python给图像加文字
    1.起因计算机视觉中常常会需要在图片上加文字,这样可以增强图像数据的可读性。2.工具opencv-python3.方法importmatplotlib.pyplotaspltfromPILimportImag......
  • python3 使用位图排序
    代码frombitmapimportBitMapa=[1,5,3,4,7,8,15,6,9]print(a)bm=BitMap(max(a))#print(dir(bm))print(bm.tostring())foriina:bm.set(i)print(bm......
  • HSSFSheet的autoSizeColumn(1); //调整列为自动宽度报错
    HSSFSheet的autoSizeColumn(1);//调整列为自动宽度报错发现很奇怪的现象,导出的excel表测试服务器跑的飞起来。到正式环境就不断报错2022-10-2518:02:33.903[http-bio-......
  • AIoT 对工业自动化的 5 大好处
        如果没有物联网(IoT)和人工智能(AI)的应用,科技世界就不会像今天这样。这些现代解决方案改变了商业格局,尤其是在工业自动化领域。物联网和人工智能推动了工业......
  • 哈夫曼树及python实现
    3.1基本概念路径和路径长度:树中一个结点到另一个结点之间的分支构成这两个结点之间的路径;路径上的分枝数目称作路径长度,它等于路径上的结点数减1.结点的权和带权路径长度......
  • python的优雅退出
    #!/usr/bin/envpython#-*-coding:utf-8-*-importosimportsignalimportsysfromconcurrentimportfuturesimportloggingfromloguruimportloggerimpor......
  • eclipse自动生成实体类
    可以根据下面的步骤让eclipse自动生成实体类,这样可以大大提高开发的效率:1,显示标签datasourceexplorer:2,选中databaseconnection,右键new:3,在弹出框中选择自己目......