docker鏡像拉取及相關配置
1.在docker打開的情況下,使用下方命令拉去鏡像,大概需要下載3個G的image文件
docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
2.啟動Oracle鏡像并為鏡像新建容器,注意此處的oracle11g即為容器名,可以自主設置
docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
由于在windows10專業版系統的docker是使用wsl作為容器內核,所以存在著一系列的內存,CPU以及交換空間的一些限制,我們可以在一個
.wslconfig文件中配置如上信息。若是在運行上語句的時候發現容器并沒有正常運行,而是以一個139的錯誤代碼退出,則說明我們的wsl的一部分限制導致了此容器不能正常運行。此時,我們可以在C:\Users\username路徑下新建一個.wslconfig文件,并寫入如下內容(若是文件已存在則直接添加即可)
[wsl2] kernelCommandLine = vsyscall=emulate
3.打開容器命令如下(針對上一步沒有正常打開容器)
docker start oracle11g
4.進入已打開容器命令如下
docker exec -it oracle11g bash
5.進行環境變量的配置
使用管理員賬戶密碼為helowin
su root
編輯profile環境變量文件
vi /etc/profile
點擊i進入文件編輯模式,在文件末尾添加如下信息,按ESC鍵退出編輯模式,鍵入:wq保存文件并退出文件
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2 export ORACLE_SID=helowin export PATH=$ORACLE_HOME/bin:$PATH
鍵入exit命令退出管理員賬號,回到oracle用戶
exit
使用如下命令使剛設置的環境變量生效
source /etc/profile
由于Oracle是基于實例和用戶的,所以我們可以新建一個用戶來完成我們當前需要完成的工作
sqlplus /nolog #打開sqlplus但是不進行連接操作 conn /as sysdba; #無用戶、密碼以最高權限登錄 alter user system identified by oracle; #更改system用戶密碼為oracle conn system/oracle; #連接system數據庫 create user username identified by username; #創建一個新用戶,用戶名可自由設置 grant all privileges to username;#為新用戶賦權 shutdown immediate; #關閉當前數據庫 exit; #退出sqlplus
6.設置oracle支持外部連接訪問
登錄管理員用戶,密碼為helowin
su root
使用如下命令獲得當前主機名
hostname
獲得監聽器listener.ora和tnsnames.ora文件的目錄
find / | grep /network/admin
使用獲得的路徑編輯文件,將文件中的localhost變量用我們查詢到的hostname名替代
vi /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora vi /home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/tnsnames.ora
此時,我們需要做的配置已經全部做好了,之后只需要保持容器為運行的狀態即可。
使用Nacicat連接已經配置好的數據庫
首先,我們需要到Instant Client for Microsoft Windows (x64) 64-bit (oracle.com)即Oracle的官網下載數據庫連接要用到的證書文件。(注意,我們需要下載與自己Oracle數據庫版本對應的證書文件)
查詢數據庫的具體版本,需要在sqlplus中執行如下命令
select * from v$version
為Navicat配置OCI環境,Navicat選擇工具—>選項—>環境—>OCI環境,選中我們解壓后的證書文件夾中的oci.dll文件即可。新建連接的時候的配置如下:
使用python連接Oracle數據庫
建議使用anoconda創建一個新的虛擬環境來進行新的系統任務。
首先,使用如下命令下載需要進行連接oracle數據庫的包cx_Oracle
pip install cx_Oracle
其后,我們需要創建一個.py文件,并在其中輸入如下代碼:
import cx_Oracle conn = cx_Oracle.connect('賬號','密碼','數據IP:端口/數據庫實例名稱') cusor = conn.cursor() print('連接數據庫成功!') print(cx_Oracle.__version__)
直接運行該代碼是行不通的,我們需要將必要的驅動文件放到與該文件同級目錄下,驅動文件在我們之前下載的證書文件壓縮包中已經有了,我們需要移動的文件有oci.dll,ocijdbc11.dll,ociw32.dll,orannzsbb11.dll,oraocci11.dll,oraociei11.dll,orasql11.dll
配置好文件之后,我們運行代碼得到如下輸出即代表數據庫連接完成
連接數據庫成功! 8.3.0