Python+cx_Oracle安装及一个简单示例(归档下热备数据文件)

2014-11-24 17:53:58 · 作者: · 浏览: 1

python版本:
[root@nich4 cx_Oracle-py]# python -V
Python 2.4.3


oracle版本:
oracle database 10.2.0.5 x86


cx_Oracle 的开发历时十多年,涵盖了大多数需要在 Python 中访问 Oracle 的客户的需求。2008 年 12 月,一个新的主要版本解决了早期版本的众多限制,并增添了对 Python 3.0 和 Oracle 新推出的一些特性的支持。


下载之后rpm -ivh 安装.
修改oracle环境变量,加入:
export LD_LIBRARY_PATH=/opt/oracle/10g\:/opt/oracle/10g/network/lib


连接数据库示例:
以下是一个在归档数据库下热备份数据文件的脚本.
#!/bin/env python
# -*- coding: UTF-8 -*-
# Modified: 20101012-23:25:43 by nich4@msn.com
# Filename: hotbak.py
#
import subprocess
import cx_Oracle
import os


db_username = 'sys'
db_passwd = 'oracle123'
db_sid = 'sol10g'
bak_dir = '/u01/app/oracle/oradata/bak/sol10g/'


db = cx_Oracle.connect(db_username,db_passwd,db_sid,cx_Oracle.SYSDBA)
print "连接数据库成功!"
curs = db.cursor()


sql = r'''select 'cp '||name||' %s' from v$datafile''' % bak_dir
res = []
for rs in curs.execute(sql):
res.append(rs[0])


curs.execute('alter database begin backup')
print "开始备份数据文件..."
for i in res:
fname = i.split()[1].split('/')[-1].strip()
print "正在备份%s 到 %s ..." % (fname,bak_dir)
subprocess.call(i,shell=True)
print "数据文件%s 备份完成!" % fname


curs.execute('alter database end backup')
db.close()
print "备份完成!"


注: 该脚本在solaris-10+oracle-10gR2下测试. 这个脚本没有使用python的shutil模块来执行文件的拷贝.仅为演示用.