[Python运维]使用cx_Oracle连接Oracle(高级篇)

时间:2022-07-23
本文章向大家介绍[Python运维]使用cx_Oracle连接Oracle(高级篇),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

这个专题讲解Python相关方面的内容,首先是运维方面,例如数据库,Linux等,后续会有Web,爬虫等。


关于Python

Python可以说是目前运维领域最火的一门语言

在看文章之前最好对Python的语法及数据结构有所了解,具体可在网上搜索Python简明教程廖雪峰的Python教程观看,暂时不需要了解其高级功能。

这部分会和Oracle awr 报告穿插着写


上节讲了如何利用Python连接Oracle数据库并执行SQL语句

这节的内容较多,分别是:

1.使用sys用户连接Oracle数据库 2.通过函数执行SQL语句 3.通过读取文件内的内容来执行SQL语句 4.使用Python 捕获程序异常


使用cx_Oracle获取oracle表空间的使用率

我们新建一个文件,命名为tablespace.sql,该文件的内容是获取表空间的使用率:

文件路径为:/home/oracle/script/tablespace.sql

select a.tablespace_name,a.bytes/1024/ 1024 "Sum MB",(a.bytes-b.bytes)/1024 /1024 "used MB",b.bytes/ 1024/1024 "free MB",round(((a.bytes-b.bytes)/a.bytes)*100 ,2) "percent_used"
from(select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a,(select tablespace_name, sum(bytes) bytes,max (bytes) largest from dba_free_space group by tablespace_name) b
where a.tablespace_name=b.tablespace_name 

接下来我们上代码

代码较简单就不放源码了,大家自行手工输入


运行结果

首先我们测试下正确的输出结构

可以看到已经获取到了各个表空间的名称


然后我们故意输入给出错误的连接条件看是否可以捕获异常

我们分别输错密码和tns名称

可以看出已经捕获成功

我们是利用fetchall方法来获取数据的,返回的是一个列表(list),我们可以使用i[0]的方式只取感兴趣的列,如下图我们只获取表空间的名称

只需将代码最后一行改成:print (i[0])


至此cx_Oracle模块连接oracle(高级篇)已经讲完,下期介绍一些实用的日常运维方面的命令。

后续会讲述如何将得到的数据存入MySQL数据库供日后分析