Maison  >  Article  >  développement back-end  >  Explication détaillée des étapes d'installation du module cx_Oracle

Explication détaillée des étapes d'installation du module cx_Oracle

Y2J
Y2Joriginal
2017-05-10 11:52:493606parcourir

Cet article présente principalement en détail les informations pertinentes sur l'installation et l'utilisation du module python cx_Oracle. Les amis qui en ont besoin peuvent se référer à

Installation du module python cx_Oracle

Récemment, j'ai besoin d'écrire un script de migration de données pour migrer les données d'un seul Oracle vers le cluster

MySQL Sharding. Il est encore un peu gênant d'installer cx_Oracle sous linux. Faisons le tri et faisons un résumé. Pour le client Oracle, vous devez non seulement installer le module python correspondant (ici j'ai utilisé le module python officiel d'Oracle - cx_Oracle), mais également installer le client Oracle. Généralement, il suffit de choisir Instant Client, et vous devez également le configurer tnsnames.ora (bien sûr, il est également accessible simplement via host:port/schema).

Installation :


1. Déterminez d'abord la version. Parce que nos données Oracle sont un peu anciennes, j'ai choisi une ancienne version : Oracle Instant Client 10.2.0.4.

2. Téléchargez instantclient-basic. Adresse de téléchargement : http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html. Il s'agit d'un BS sérieux contre Oracle. Vous devez vous inscrire avant de pouvoir le télécharger. La clé est que lors de l'inscription, le mot de passe nécessite en fait des chiffres et des lettres, et les lettres doivent être en majuscules et en minuscules. au moins 8 caractères. Ils m'ont forcé à obtenir un mot de passe

plus sûr

que mon mot de passe bancaire (enfin, maintenant j'ai oublié ce que j'ai renseigné...), et à télécharger simplement le basique.

3. Installation et configuration
$wget download.oracle.com/otn/linux/instantclient/10204/basic-10.2.0.4.0-linux-x86_64.zip

4. Configurez tnsnames.ora (tns n'a pas besoin d'être configuré)
$unzip instantclient-basic-linux.x64-10.2.0.4.0.zip
$cd instantclient_10_2
$cp * /usr/lib  #直接放到动态库搜索路径中,不需要额外的环境配置

或
$unzip instantclient-basic-linux.x64-10.2.0.4.0.zip
$cp -rf instantclient_10_2 /opt/
$vi /etc/profile
   export ORACLE_HOME=/opt/instantclient_10_2
   export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME

$source /etc/profile

Notez que tnsnames.ora le fait. n'existe pas réellement ; il faut le créer soi-même (c'est aussi dégoûtant, je pensais au début que je devais installer quelque chose...), je n'ai pas utilisé cette méthode, si cela vous intéresse, vous pouvez la rechercher sur Google.

5. Téléchargez et installez le module python cx_Oracle

6. Vérification et résolution de problème
$wget downloads.sourceforge.net/project/cx-oracle/5.1.2/cx_Oracle-5.1.2-10g-py26-1.x86_64.rpm
$rpm -ivh cx_Oracle-5.1.2-10g-py26-1.x86_64.rpm 
$ls /usr/lib/python2.6/site-packages/cx_Oracle.so #有这个文件表示安装成功,根据python的位置,也可能在其他地方,自己找一下吧

$python
>>import cx_Oracle
Si une erreur est signalée : importez cx_Oracle a donné ImportError : libclntsh. so.10.1 : impossible d'ouvrir le fichier objet partagé : aucun fichier ou répertoire de ce type

signifie que la bibliothèque dynamique du client instantané n'est pas trouvée. Vérifiez si la variable d'environnement

.

est configuré, s'il est efficace et la version est-elle correcte. Si une erreur est signalée : ImportError : ./cx_Oracle.so : symbole non défini : PyUnicodeUCS4_Decode

Alors recompilez python
Google的信息:There is nothing wrong with Debian. Python supports two incompatible 
 modes of operation for Unicode, UCS2 (the default), and UCS4. Debian uses the default,
 Redhat uses UCS4. You need to recompile the extension for UCS-2 mode
 (i.e. using a Debian installation); this would fix the undefined symbol: PyUnicodeUCS4_Decode

et vérifiez à nouveau, enfin l'importation est normale.
$./configure --prefix=/usr/local/python2.6.5 --enable-shared -enable-unicode=ucs4
$make;make install

Utilisation :


1. Connexion de base – utilisez l'alias Oracle tns

2. L'utilisateur saisit le mot de passe pour se connecter
connection =cx_Oracle.connect("tp/tp@ocn_test")
#查看tns alias命令
cmd>tnsping ocn_test
TNS Ping Utility forLinux: Version 9.2.0.8.0-Production on 27-SEP-201110:47:48
Copyright (c) 1997, 2006, Oracle Corporation. Allrights reserved.
Used parameter files:
/opt/……/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL =TCP)(HOST =10.20.36.19)(PORT =1520))) (CONNECT_DATA =(SID =ocntest)))
OK (10msec)

3. L'utilisateur saisit directement les informations du compte de connexion dans la commande Python, au format tel que python script.py tp/tp@ocn_test

pwd =getpass.getpass()
connection =cx_Oracle.connect("tp",pwd,"ocn_test")

4. Utilisez la syntaxe Easy Connect pour vous connecter à la base de données via Drive

connection =cx_Oracle.connect(sys.argv[1])

5. Utilisez d'abord DSN pour former TNSNAME

connection =cx_Oracle.connect('tp','tp','10.20.36.19:1521/ocntest')
#or
connection =cx_Oracle.connect('tp/tp@10.20.36.19:1521/ocntest')

6. Connectez-vous en tant que SYSDBA

tns_name =cx_Oracle.makedsn('10.20.36.19','1521',' ocntest ')
connection =cx_Oracle.connect('tp','tp',tns_name)

An. une erreur s'est produite lors de l'exécution d'opérations Oracle sur le serveur Linux :

connection =cx_Oracle.connect('tp/tp@ocn_test', mode=cx_Oracle.SYSDBA)
#or as SYSOPER
connection =cx_Oracle.connect('tp/tp@ocn_test', mode=cx_Oracle.SYSOPER)

[Recommandations associées]

TNS:listener does not currently know of service requested in connect descriptor

1
Tutoriel vidéo gratuit Python

2. Tutoriel vidéo orienté objet Python

3 Manuel d'introduction aux bases de Python

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn