Docker安裝Oracle詳解

隨著數據存儲的不斷增加和雲計算的普及,Oracle資料庫成為了企業中最受歡迎的資料庫,而Docker容器技術也越來越流行。在這篇文章中,我們將會詳細介紹如何使用Docker容器安裝Oracle資料庫,同時提供各種場景下的解決方案。

一、Docker安裝Oracle19c

Oracle19c是當前最新的資料庫版本,具有高效的本機加密、在內存處理JSON和圖形數據、自動並行優化等特性,而Docker安裝Oracle19c的步驟如下:

第一步:安裝Docker並啟動服務。

sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker && sudo systemctl enable docker

第二步:創建一個新的目錄並下載Oracle Docker鏡像,並執行運行命令。

 sudo mkdir -p /opt/oracle18c/dbhome
 sudo docker pull container-registry.oracle.com/database/standard:19.3.0.0
 sudo docker run --name oracle19c -p 1521:1521 -p 5500:5500 -e ORACLE_PWD=password -v /opt/oracle18c/dbhome:/opt/oracle/oradata container-registry.oracle.com/database/standard:19.3.0.0
 

其中,「-p」標識可以將Docker容器中的埠映射到主機,使得主機可以通過這些埠連接到容器內,”-v”標識可以掛載主機上的目錄到Docker容器內,實現數據的持久化。

二、Docker安裝Oracle11g

註:此方法不再推薦使用,已過時。

Oracle11g是之前最常用的版本之一,這裡我們提供在Docker中安裝Oracle11g的步驟:

第一步:安裝Docker並啟動服務,同上。

第二步:下載Oracle Docker鏡像並執行運行命令。

docker pull wnameless/oracle-xe-11g
docker run -d -p 1521:1521 -p 8080:8080 -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g
 

「-d」標識意味著容器將在後台運行,不會佔用當前終端。

三、Docker安裝Oracle19c特別慢

有時候,Docker安裝Oracle19c可能會比較緩慢,這時候可以嘗試更改Docker的鏡像源為國內高速源,然後再執行Docker命令,如下所示。

第一步:添加阿里雲Docker源。

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://7urk5sqq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
 

第二步:下載Oracle Docker鏡像並執行啟動命令。

sudo docker pull container-registry.oracle.com/database/standard:19.3.0.0
sudo docker run -d -p 1521:1521 -p 5500:5500 --name oracle19c --network=bridge -e ORACLE_SID=ORCLCDB -e ORACLE_PDB=PDB1 -e ORACLE_PWD=Oradoc_db1 -v /oracle/oradata -v /oracle/scripts -v /oracle/dpdump container-registry.oracle.com/database/standard:19.3.0.0
 

這樣我們就將Oracle19c安裝到了Docker中,注意需要使用”–network=bridge”參數啟用橋接網路模式。

四、Docker安裝Oracle橋接網路

在默認情況下,容器內的網路是與主機隔離的。為了使容器可以通過網路訪問其他容器和主機,我們需要使用橋接網路。步驟如下:

第一步:創建一個新的橋接網路。

docker network create mynet
 

第二步:啟動Oracle容器並指定剛剛創建的橋接網路。

docker run -d --name oracle11g --network=mynet ......
 

現在,我們可以在同一橋接網路中啟動其他容器,例如使用Tomcat容器連接Oracle資料庫。

五、Docker安裝Oracle19c卡在42

有時,Docker安裝Oracle19c可能會卡在43%(或42%),這時候可以使用以下方法解決問題。

第一步:安裝依賴軟體包。

apt-get install libaio1 libaio-dev
 

第二步:將Linux內核參數更改為適合Oracle的設置。

sudo sysctl -w fs.file-max=6815744
sudo sysctl -w kernel.sem=250 32000 100 128
sudo sysctl -w fs.suid_dumpable=1
sudo sysctl -w net.ipv4.ip_local_port_range='9000 65500'
sudo sysctl -w kernel.sysrq=1
sudo sysctl -w kernel.shmall=1073741824
sudo sysctl -w kernel.shmmax=4398046511104
sudo sysctl -w kernel.panic_on_oops=1
sudo sysctl -w net.core.rmem_default=262144
sudo sysctl -w net.core.rmem_max=4194304
sudo sysctl -w net.core.wmem_default=262144
sudo sysctl -w net.core.wmem_max=1048576
sudo sysctl -w vm.max_map_count=262144
 

第三步:重新啟動伺服器並重試Oracle19c Docker安裝。

六、Docker安裝Oracle19c卡在46

在安裝Oracle19c期間,Docker進度條可能會卡在46%-47%左右。這個問題也可以通過以下解決方案來解決。

第一步:終止Docker容器。

docker stop [container-name]
docker rm [container-name]
 

第二步:刪除Docker容器的目錄。

rm -rf /u01/app/oracle
rm -rf /u01/app/oraInventory
 

注意,如果你有其他的容器需要保留,那麼不要刪除Docker的目錄。

第三步:重新構建Docker鏡像。

sudo docker build -t myoracle:19c .
 

接著,重新啟動Docker容器,就可以正常安裝Oracle19c。

七、Docker安裝Oracle19c

這裡我們提供一個最簡單的安裝Oracle19c的方法:

第一步:下載Oracle Docker鏡像並啟動容器。

docker run --name oracle19c -p 1521:1521 -p 5500:5500 -e ORACLE_PWD=password -v /my/oracle/home:/opt/oracle/oradata container-registry.oracle.com/database/standard:19.3.0.0
 

這樣,我們就成功地將Oracle19c安裝在了Docker容器中。

八、Docker安裝Oracle重啟後數據沒了

如果在Docker容器中安裝Oracle,並且在容器重啟後你發現數據變丟失了,這裡提供一種解決方案。

第一步:使用docker-compose管理Oracle容器。

第二步:將Oracle數據文件卷掛載到本地目錄。

  volumes:
      - ./db_data:/opt/oracle/oradata
 

第三步:在docker-compose.yml文件中添加一些其餘設置。

 environment:
      - ORACLE_ALLOW_REMOTE=true
      - ORACLE_PWD=p@ssword
      - ORACLE_CHARACTERSET=AL32UTF8
      - ORACLE_DBNAME=orcl
      - ORACLE_BASE=/opt/oracle
      - ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
      - ORACLE_SID=ORCLCDB
 

第四步:啟動Oracle容器並檢查數據是否成功持久化。

sudo docker-compose up -d
docker exec -it oracle19c bash
ls /opt/oracle/oradata
 

九、Docker安裝Oracle客戶端

有時候,我們可能需要在Docker容器中安裝Oracle客戶端,可以使用以下命令來安裝:

docker pull mjung/oracle11g-client
docker run --name oracle_client --network host -e TWO_TASK= -e ORACLE_HOME=/usr/lib/oracle/11.2/client64 mjung/oracle11g-client
 

其中,”-e”標識可以指定Docker容器中的環境變數,使得容器中的應用程序可以獲取這些值。

十、Docker安裝Oracle利弊

最後,我們對Docker安裝Oracle的優缺點進行了總結:

優點:

1、能夠以容器化的方式部署Oracle資料庫,提高了數據存儲的彈性和可操作性。

2、使用容器鏡像可以實現Oracle資料庫的快速部署,減少伺服器資源的損耗和管理成本。

3、能夠為企業提供更快、更高效、更穩定的操作方式。

缺點:

1、Docker容器中的Oracle資料庫不能使用所有的Oracle功能。

2、在容器中部署Oracle資料庫會涉及到網路和數據存儲等問題,需要特別注意。

3、Docker容器中的Oracle資料庫可能會涉及到性能問題,在高負載情況下,容器可能無法提供足夠的性能。

以上就是Docker安裝Oracle的詳細介紹,不同的安裝方法適用於不同的場景,如有需要,請選擇適合自己的方式進行安裝和配置。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/278936.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-20 15:02
下一篇 2024-12-20 15:02

相關推薦

  • docker-ce-18.03.1.ce-1.el7.centos.x86_64需要pigz這個依賴的解決方案

    當我們在linux centos系統中安裝docker-ce-18.03.1.ce-1.el7.centos.x86_64時,有時可能會遇到「nothing provides pi…

    編程 2025-04-29
  • 如何將Oracle索引變成另一個表?

    如果你需要將一個Oracle索引導入到另一個表中,可以按照以下步驟來完成這個過程。 一、創建目標表 首先,需要在資料庫中創建一個新的表格,用來存放索引數據。可以通過以下代碼創建一個…

    編程 2025-04-29
  • 如何解決Docker+k8s報錯413 Request Entity Too Large

    對於使用Docker容器和Kubernetes集群的開發人員,在處理HTTP請求時,常常會遇到413 Request Entity Too Large的報錯。這通常是由於請求的大小…

    編程 2025-04-27
  • docker-compose編寫用法介紹

    本文將詳細介紹docker-compose編寫的各個方面,包括語法、常見命令等等,旨在幫助讀者更好的了解如何使用docker-compose。 一、docker-compose的語…

    編程 2025-04-27
  • Docker 垃圾電腦的解決方案

    Docker 是一種輕量級的容器化技術,可以在一個操作系統中,同時運行多個獨立的應用。在使用 Docker 的過程中,可能會出現 Docker 佔用大量硬碟空間,導致電腦變得極其緩…

    編程 2025-04-27
  • Docker掛載目錄–graph用法介紹

    本文將從如下幾個方面詳細闡述Docker掛載目錄–graph: 一、基本概念 在Docker中,鏡像是由一系列只讀層組成的文件系統。當我們啟動一個容器時,Docker會…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變數讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性感測器,能夠同時測量加速度和角速度。它由三個感測器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25

發表回復

登錄後才能評論