Rails鏈接oracle配置

 

 
 
Ubuntu 16.04下安裝Oracle數據庫客戶端,使Django項目鏈接到遠程Oracle數據庫。
參考文檔:https://chinacheng.iteye.com/blog/2244282

1.下載oracle安裝包
下載須要登陸oracle帳號,而且要贊成協議,直接點擊下面連接沒法下載
如遇版本修改,鏈接可能失效,請在官網自行搜索下載
oracle帳號密碼
https://login.oracle.com/mysso/signon.jsp
1209374096@qq.com Lmg1209374096

要選擇好版本
64位下載地址
http://download.oracle.com/otn/linux/instantclient/121020/instantclient-basic-linux.x64-12.1.0.2.0.zip
http://download.oracle.com/otn/linux/instantclient/121010/instantclient-sqlplus-linux.x64-12.1.0.1.0.zip
http://download.oracle.com/otn/linux/instantclient/121010/instantclient-sdk-linux.x64-12.1.0.1.0.zip

32位地址
http://download.oracle.com/otn/linux/instantclient/121020/instantclient-sdk-linux-12.1.0.2.0.zip
http://download.oracle.com/otn/linux/instantclient/121020/instantclient-sqlplus-linux-12.1.0.2.0.zip
http://download.oracle.com/otn/linux/instantclient/121020/instantclient-basic-linux-12.1.0.2.0.zip


64位安裝步驟
2.將安裝包上傳到 /tmp 目錄下
cd /opt
sudo mkdir oracle
cd oracle

sudo unzip /tmp/instantclient-basic-linux.x64-12.1.0.2.0.zip
sudo unzip /tmp/instantclient-sqlplus-linux.x64-12.1.0.1.0.zip
sudo unzip /tmp/instantclient-sdk-linux.x64-12.1.0.1.0.zip

sudo apt-get install libaio1
cd instantclient_12_1
sudo ln -s libclntsh.so.12.1 libclntsh.so

3.設置環境變量
cd ~
vi ~/.bashrc
# 添加
export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_1
source ~/.bashrc

4.安裝Gem包
Gilefile裏面添加
gem 'ruby-oci8'
gem 'activerecord-oracle_enhanced-adapter'

5.執行 bundle install

6.修改config/database.yml
oracle_development: #名字可自定義,可是不能重複。
adapter: oracle_enhanced
username: A8USER
database: oaorcl
password: Admin123456
host: 192.168.100.114
port: 1521 # Oracle DB 的端口號,若是爲 Mysql 則不用寫。
encoding: utf8

7.添加model映射表,在app/models新增d_oa_database.rb
class DOaDatabase < ActiveRecord::Base
self.abstract_class = true
establish_connection :oracle_development # oracle_development 爲database.yml文件中添加的第二個 DB 配置的名字
self.table_name = "FORMMAIN_5399" #表名
end
  • oracle數據庫ip ping不通問題

因爲以前虛擬機安裝了docker,並添加了一個網橋,致使沒法ping通192.168.100.114linux

解決方法:sql

經過sudo docker network ls 能夠查看到網絡類型中多了一個staticnetdocker

sudo docker network rm 1bc9809f1c71 #刪除該網橋便可數據庫

  • 中文亂碼問題
1.先查出數據庫的字符集
出現
AMERICAN_AMERICA.UTF8
說明服務器的字符編爲utf8格式
 
2.修改~/.bashrc,添加
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
3.source ~/.baserc
4.env|grep LANG 查看環境變量
5.rails c 測試
相關文章
相關標籤/搜索