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

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

WBOY
Release: 2016-06-07 16:57:58
Original
841 people have browsed it

系统环境:[root@nich4 cx_Oracle-py]# uname -aLinux nich4 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i38

系统环境:
[root@nich4 cx_Oracle-py]# uname -a
Linux nich4 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux

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

oracle版本:
oracle database 10.2.0.5 x86

cx_Oracle简介:
cx_Oracle 是一个 Python 扩展模块,通过使用所有数据库访问模块通用的数据库 API 来实现 Oracle 数据库的查询和更新。为使用一些专为 Oracle 设计的特性,还加入了多个通用数据库 API 的扩展。

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

cx_Oracle官方及下载:

下载与python版本对应的cx_Oracle版本,一般选择非UNICODE版本就行了.
我选择的是CentOS 5 i386 RPM (Oracle 10g, Python 2.4)

下载之后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模块来执行文件的拷贝.仅为演示用.

linux

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template