Python+cx_Oracle安裝及一個簡單樣本(歸檔下熱備資料檔案)

來源:互聯網
上載者:User

系統內容:
[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 設計的特性,www.bkjia.com還加入了多個通用資料庫 API 的擴充。

cx_Oracle 的開發曆時十多年,涵蓋了大多數需要在 Python 中訪問 Oracle 的客戶的需求。2008 年 12 月,一個新的主要版本解決了早期版本的眾多限制,並增添了對 Python 3.0 和 Oracle 新推出的一些特性的支援。

cx_Oracle官方及下載:http://cx-oracle.sourceforge.net/

下載與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模組來執行檔案的拷貝.僅為示範用.

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.