分类目录归档:技术分享

用cx_Oracle在Python中连接Oracle数据库

1. 首先下载cx_Oracle,下载地址:http://sourceforge.net/projects/cx-oracle/
2. 下载Oracle客户端程序instantclient,下载地址(可能有变化,建议百度一下instantclient):http://www.oracle.com/technetwork/cn/database/features/instant-client/index-092699-zhs.html
3. 安装instantclient
4. cx_Oracle的使用方法参见 $Python_Home\cx_Oracle-doc\html\index.html (如:C:\Python27\cx_Oracle-doc\html\index.html)

使用过程中遇到的问题:
1. 执行import cx_Oracle 提示“找不到指定的模块”

>>> import cx_Oracle
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed: 找不到指定的模块。
>>> 
解决办法,将instantclient目录中的oci.dll拷贝到$Python_Home 或者 $Python_Home\Lib\site-packages 目录下

2. 执行import cx_Oracle 提示“DLL load failed: %1 不是有效的 Win32 应用程序”

>>> import cx_Oracle
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。
>>> 
解决办法:如果操作系统是64位系统,则拷贝64位instantclient中的oci.dll拷贝到$Python_Home 或者 $Python_Home\Lib\site-packages 目录下。
 

oracle安装成功但dbca执行失败的一个解决方案

环境:
      Red Hat Enterprise Linux Server release 5.8
      Release 10.2.0.1.0

错误现象:
      oracle安装成功,执行dbca以后,完成所有配置以后,点击了finish后无反应。查看/var/log/message 中有错误“kernel: sqlplus[26511]: segfault at 00000000775dff5c rip 00002b093cb14e87 rsp 00000000775dff64 error 6”提示。执行 sqlplus命令有错误“Segmentation fault”提示。

解决方案:
      操作步骤:
      1. 以root用户执行如下命令:

      # cd /usr/bin
      # mv gcc gcc.script
      # g++ g++.script
      # ln -s gcc34 gcc
      # ln -s g++34 g++

      2. 以oracle用户执行如下命令:

      # cd $ORACLE_HOME/bin
      # relink all

参考:http://efficientappsdba.blogspot.com/p/segmentation-fault-when-connect-to.html

Solaris 下新启用一个网口

    通常情况下,Sun服务器都配置了多个网口,如果要新启用一个未用的网口,需要激活网口和设置IP地址。
我在Sun Netra240上的操作步骤如下:
 
1. 查看网口名称
# dladm show-link
bge0            类型: 非 vlan   mtu: 1500       设备: bge0
bge1            类型: 非 vlan   mtu: 1500       设备: bge1
bge2            类型: 非 vlan   mtu: 1500       设备: bge2
bge3            类型: 非 vlan   mtu: 1500       设备: bge3
 
2. 增加网口对应主机名
# cp /etc/hostname.bge0 /etc/hostname.bge3
# vi /etc/hostname.bge3
as-2
 
3. 增加IP地址和主机名的对应关系
vi /etc/hosts
192.168.1.126 as-2
 
4. 增加网口地址的掩码
# vi /etc/netmasks
192.168.1.0 255.255.255.0
 
5. 激活网口
# ifconfig bge3 plumb && ifconfig bge3
 
6. 设置网口地址
# ifconfig bge3 192.168.1.126 netmask 255.255.255.0 up
 
7. 查看网口是否启用成功
# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000 
bge0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.1.245 netmask ffffff80 broadcast 192.168.1.255
        ether 0:14:4f:38:df:79 
bge3: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
        inet 192.168.1.126 netmask ffffff00 broadcast 192.168.1.255
        ether 0:14:4f:38:df:7c