1. 程式人生 > >Linux下用unixODBC連線Oracle資料庫的配置

Linux下用unixODBC連線Oracle資料庫的配置

1.環境

1[[email protected] ~]# cat /etc/redhat-release 

Red Hat Enterprise Linux Server release 5.9 (Tikanga)
[[email protected] ~]# uname -a
Linux bakdbserver 2.6.39-300.26.1.el5uek #1 SMP Thu Jan 3 18:31:38 PST 2013 x86_64 x86_64 x86_64 GNU/Linux


2.下載
2.1 unixODBC
下載地址:
http://www.unixodbc.org/


下載檔案:
unixODBC-2.3.0.tar.gz




2.2 Oracle ODBC Driver
下載地址:
http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html



下載檔案:
instantclient-basic-linux.x64-11.2.0.3.0.zip
instantclient-odbc-linux.x64-11.2.0.3.0.zip


其他平臺到下面地址下載:
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html



將所有檔案上傳至伺服器的/opt/odbc/目錄下。


3.安裝unixODBC(root使用者)
#cd /opt/odbc/
#tar xvf unixODBC-2.3.0.tar.gz
#cd /opt/odbc/unixODBC-2.3.0
#./configure
#make
#make install
(預設是被安裝到/usr/local)


4.安裝Oracle ODBC(root使用者)
#cd /opt/odbc/
#unzip instantclient-basic-linux.x64-11.2.0.3.0.zip
#unzip instantclient-odbc-linux.x64-11.2.0.3.0.zip


(兩個檔案解壓到同一個目錄instantclient_10_2下)
#cd /opt/odbc/instantclient_11_2 


#chmod 775 odbc_update_ini.sh
#./odbc_update_ini.sh /usr/local
(沒有提示表示安裝成功)


odbc_update_ini.sh引數說明:
引數1:unixODBC DM安裝路徑。
引數2:驅動安裝的絕對路徑(可選)。預設為執行指令碼的路徑。
引數3:驅動名(可選),預設為Oracle 11g ODBC driver。
引數4:資料來源名稱(可選),預設為OracleODBC-11g。
執行完成後將新增一個DNS條目到$HOME/.odbc.ini , <DriverManager_HOME>/etc/odbcinst.ini,名稱為:OracleODBC-11g


修改odbc目錄的許可權:
chown -R 775 /opt/odbc


5.配置本地服務名:

新增本地服務名。
$TNS_ADMIN/tnsnames.ora

$ORACLE_HOME/network/admin/tnsnames.ora


例如:
bi_195 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.5.195)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = cwdb)
    )
  )


如果是非Oracle使用者,可以通過設定環境變數TNS_ADMIN來制定tnsnames.ora所在位置,當該改使用者有對tnsnames.ora讀的許可權。


6.檢查驅動配置

/usr/local/etc/odbcinst.ini

[Oracle 11g ODBC driver]
Description     = Oracle ODBC driver for Oracle 11g
Driver          = /u01/app/ora11g/product/11.2.0/db_1/odbc/utl/libsqora.so.11.1
Setup           =
FileUsage       =
CPTimeout       =
CPReuse         = 


7.新增oracle odbc配置(oracle使用者):
vi ~/.odbc.ini
[OracleODBC-11g]
Application Attributes = T
Attributes = W
BatchAutocommitMode = IfAllSuccessful
BindAsFLOAT = F
CloseCursor = F
DisableDPM = F
DisableMTS = T
Driver = Oracle 11g ODBC driver       #對應/usr/local/etc/odbcinst.ini中的驅動配置名稱
DSN = OracleODBC-11g
EXECSchemaOpt =
EXECSyntax = T
Failover = T
FailoverDelay = 10
FailoverRetryCount = 10
FetchBufferSize = 64000
ForceWCHAR = F
Lobs = T
Longs = T
MetadataIdDefault = F
QueryTimeout = T
ResultSets = T
ServerName =bi_195      #對應tnsnames.ora中配置的本地服務名
SQLGetData extensions = F
Translation DLL =
Translation ption = 0
DisableRULEHint = T
UserID =


8.設定環境變數(oracle使用者):
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: /opt/odbc/instantclient_11_2:/usr/local/lib
PATH=$PATH:/usr/local/bin
TNS_ADMIN(如果安裝有oracle軟體那麼對應的就是$ORACLE_HOME/network/admin/目錄,如果沒有安裝相應oracle軟體,需要指定tnsnames.ora所在的目錄,可選)
NLS_LANG(設定合適的字符集,可選)


9.測試(oracle使用者)


+---------------------------------------+
[[email protected] ~]# isql OracleODBC-11g bi bi -v
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select * from v$version;
+-----------------------------------------------------------------+
| BANNER                                                          |
+-----------------------------------------------------------------+
| Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi|
| PL/SQL Release 10.2.0.5.0 - Production                          |
| CORE  10.2.0.5.0      Production                                      |
| TNS for Linux: Version 10.2.0.5.0 - Production                  |
| NLSRTL Version 10.2.0.5.0 - Production                          |
+-----------------------------------------------------------------+
SQLRowCount returns -1
5 rows fetched


測試方法:
isql <資料來源名稱> <使用者名稱> <密碼> -v


10.遇到的問題:

isql OracleODBC-11g system oracle -v
出錯:
isql: symbol lookup error: /usr/lib/oracle/11.2/client/lib/libsqora.so.11.1: undefined symbol: SQLGetPrivateProfileStringW

這個問題就是unixODBC的版本問題啦,如果前面安裝了unixODBC 2.3.0的話不會出現這個錯誤(開始裝的unixODBC 2.3.2版本)

參考:

http://blog.itpub.net/23135684/viewspace-667126/

http://blog.csdn.net/karl_max/article/details/6896014

相關推薦

LinuxunixODBC連線Oracle資料庫配置

1.環境 1[[email protected] ~]# cat /etc/redhat-release  Red Hat Enterprise Linux Server release 5.9 (Tikanga) [[email protected]

Python Test API - python連線Oracle資料庫並操作

目的: 通過python連線遠端的一臺oracle資料庫伺服器,並用python程式碼實現增刪改查的操作。本研究是為測試API準備資料庫環境的第一步。 環境配置(如果用64bit的,就都需要64bit):  1. 在本地計算機上安裝好oralce client (64bit) 2.

Navicat連線Oracle資料庫出錯解決方案

 用Navicat連線Oracle資料庫時出現如下錯誤     上網一查原來是oci.dll版本不對。因為Navicat是通過oracle客戶端連線Oracle伺服器的,Oracle的客戶端分為兩種,一種是標準版,一種是簡潔版,即Or

Linux的C#連線Mysql資料庫

今天在嘗試在 Linux 系統下使用C#連線資料庫,發現網上這方面的資訊很少,所以就寫一篇部落格記錄一下。 Linux下這裡使用的是mono。 首先是缺少Mysql.Data.dll這個庫的,所以需要安裝 https://dev.mysql.com/downloads/connector/net/ 安

Navicat連線Oracle資料庫時報錯ORA-28547:connection to server failed, probable Oracle Net admin error

  用Navicat連線Oracle資料庫時出現如下錯誤     上網一查原來是oci.dll版本不對。因為Navicat是通過Oracle客戶端連線Oracle伺服器的,Oracle的客戶端分為兩種,一種是標準版,一種是簡潔版,即Oracle Install Clie

【解決】Mac升級Mojave後Navicat連線Oracle資料庫報ORA-21561: OID generation failed

一、原因排查 終端執行命令: xxxdeMacBook-Pro:~ xxx$ hostname xxxdeMacBook-Pro.local 發現是 輸出的hostname為 .local 而不是 localhost  檢視 hosts 檔案 : vim /e

Django連線Oracle資料庫配置

Django專案中,settings.py檔案中: service_name   DATABASES = {     'default': {       'ENGINE': 'django.db.backends.oracle',       'NAME': 'IP:埠號/service_name',   

Windows 7通過Excel2007連線Oracle資料庫並對錶查詢

1. 環境變數的設定1.1  ORACLE_HOME環境變數的設定,我這裡指向了我的Oracle 10g的客戶端ORACLE_HOME=C:\oracle\product\10.2.0\client_21.2 TNS_ADMIN環境變數的設定,TNS_ADMIN目錄下需有tn

JDBC--實現java連線oracle資料庫的操作(簡單實用)

在網上找了好多JDBC連線方法,試了又試總是有問題,最後結合好多方法,終於發現了一個簡單的連線步驟,分享給大家。 1. 建立一個Dynamic web project  2. 在專案名上右鍵-->

windowspython連結Oracle資料庫

DATACENT= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ip地址)(PORT

使用Navicat premium 連線oracle 資料庫配置

 Navicat premium是一款資料庫管理工具,是一個可多重連線資料庫的管理工具,它可以讓你以單一程式同時連線到 MySQL、SQLite、Oracle及PostgreSQL 資料庫,讓管理不同型別的資料庫更加的方便。 一、需要準備的軟體    1.Nav

[C++]linux使用occi連線oracle遇到的兩個錯誤

-- 我的makefile如下: [plain] view plaincopyprint? includepath=${ORACLE_HOME}/precomp/public   occpath=${ORACLE_HOME}/oci/include 

linuxqt5.5 連線mysql資料庫詳細步驟

1. .pro 檔案包含 sql,標頭檔案包含 #include <QtSql> , private中構建QSqlDatabase db; 2. cpp中函式: void MainWindow::showDatabaseDate() { this-&g

linux centOs中安裝好資料庫,客戶端plsql連線oracle

  原創作品,轉載請在文章顯眼位置註明出處:https://www.cnblogs.com/sunshine5683/p/10030375.html  首先,回顧上篇 CenOs7安裝oracle圖文詳細過程(02) ,安裝好oracle後再伺服器端使用sqlplu

MacOracleSQLDeveloper連線Windows虛擬機器的Oracle資料庫

因為在OS X中無法安裝Oracle資料庫(除了雪豹系統)所以只能用虛擬機器安裝Oracle來替代。 你需要的東西有:OracleSQLDeveloper For OS X

linuxc++使用occi連線oracle資料庫步驟,及出現的問題和解決

1. 所需安裝包 (64 位 ) oracle-instantclient-basic-10.2.0.3-1.x86_64.rpm oracle-instantclient-devel-10.2.0.3-1.x86_64.rpm 2. 安裝 安裝後,庫檔案路

菜鳥:只安裝和配置instantclient,plsql developer,navicat for oracle,sqlplus連線oracle資料庫

環境配置: 1.到oracle官網下載instantclient basic包,解壓縮到E:\oracle\instantclient_11_2; 2.設定環境變數 NLS_lANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK(注意中間有空格,這個如

在windowspython指令碼訪問Oracle資料庫環境變數配置常見報錯與解決方法集合

4. ImportError: No module named luhn:下載地址 https://pypi.org/project/luhn/#files,下載後的包直接解壓到 ~:\Python27\Lib\site-packages下。或者直接cmd命令列直

WildFly10 配置連線Oracle資料庫

一、Oracle資料庫的連線引數 1、URL: jdbc:oracle:thin:@127.0.0.1:1521:XE   // 127.0.0.1是本機地址,XE是精簡版Oracle的預設資料庫名 2、username/password 自己建立的使用者名稱和密

linuxApache一個IP多個網站多域名配置方法

# <VirtualHost 219.13.34.32> ServerAdmin [email protected] DocumentRoot /usr/local/apache/htdocs/upload ServerName desk.xker.com </VirtualHo