全網最全的linux上docker安裝oracle的詳細文檔,遇到了n個問題,查了幾十篇文章,最終彙總版,再有解決不了的,私聊我,我幫你解決

来源:https://www.cnblogs.com/gitBook/archive/2022/12/08/16966884.html
-Advertisement-
Play Games

全網最全的linux上docker安裝oracle的詳細文檔,遇到了n個問題,查了幾十篇文章,最終彙總版,再有解決不了的,私聊我,我幫你解決 1. 拉取阿裡鏡像oracle docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11 ...


目錄

全網最全的linux上docker安裝oracle的詳細文檔,遇到了n個問題,查了幾十篇文章,最終彙總版,再有解決不了的,私聊我,我幫你解決

1. 拉取阿裡鏡像oracle

docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

在這裡插入圖片描述

2. 創建初始化數據

#容器啟動
docker run -di --name oracle11521 --restart=always  \
-p 1521:1521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
# 創建文件夾
mkdir -p /home/esopadm/data/oracle
#複製文件出來 
docker cp oracle11521:/home/oracle/app/ /home/esopadm/data/oracle

docker cp oracle11521:/etc/profile  /home/esopadm/data/oracle/

cd /home/esopadm/data/oracle
# 500 500 是容器內 oracle 組和用戶的 id
chown -R 500.500  app
# 刪除容器
docker rm -f oracle11521

3. 創建啟動容器 數據持久化

docker run -d -p 11521:11521 -v /home/esopadm/data/oracle/app:/home/oracle/app \
-v  /home/esopadm/data/oracle/profile:/etc/profile \
--restart=always --name oracle11521 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

4. 進入oracle容器

docker exec -it oracle /bin/bash

這個命令就是我噩夢的開始,由於我用的是公司的開發環境的伺服器,別人已經事先裝過oracle了,所以我上面那個命令進入的是別人oracle,導致下麵執行的命令都是在別人地盤上玩的,白白浪費了好長時間,所以我只能改個埠號繼續玩,那容器名也不能一樣了,我把埠改成了11521,容器名為oracle11521。

那正確的命令應該是下麵這個

docker exec -it oracle11521 /bin/bash

5. 切換到root用戶下進行配置

su root
#密碼:helowin

6. 編輯profile文件配置ORACLE環境變數

vi /etc/profile
# 添加:
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH

7. 創建軟連接

ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

8. 切換到oracle 用戶

su - oracle

9. 登錄sqlplus並修改sys、system用戶密碼

sqlplus /nolog

conn /as sysdba

在這裡插入圖片描述

10. 修改sys、system用戶密碼並刷新許可權

alter user system identified by 123456;
alter user sys identified by 123456;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
exit 退出

上面簡單的三步我這就開始報錯了,下麵是我遇到的錯誤及解決辦法

10.1 當執行修改密碼的時候出現 :database not open

提示資料庫沒有打開,不急按如下操作

輸入:alter database open;

10.2 又提示另一個錯誤: ORA-01507: database not mounted

輸入:alter database mount;

10.3 又提示另一個錯誤:ORA-00214:control file

在這裡插入圖片描述

這個解決方法很多,我只用了其中一個,想看其他方法,查看這篇文章:https://blog.csdn.net/Ruishine/article/details/115323525

由於control102.ctl版本號是845比control101.ctl版本號841高,所以我將control101.ctl刪除,然後將control102.ctl拷貝到control101.ctl目錄下並改名為control101.ctl。

也就是說用高版本的覆蓋低版本的

11. 查看一下oracle實例狀態

lsnrctl status

在這裡插入圖片描述

12. 用navicat連接oracle資料庫

服務名:helowin(一定要填寫helowin)
用戶名:system 第10步設置的用戶)
密碼:123456(第10步設置的密碼)

終於大功告成了,這回開始使用吧。。。結果。。。

12.1 用navicat連接報錯ORA-12514: TNS :no listener

這個錯誤卡了我很久,我也不能每次都指定ip吧,其他同事用我再把他們ip加上?太蠢了。最後終於找到一個靠譜的

修改/home/oracle/app/oracle/product/11.2.0/dbhome_2/network/admin/listener.ora文件里的host

在這裡插入圖片描述

HOST預設是localhost ,本機連接正常,遠程無法連接。改為機器名,本地、遠程都可以連接!

那我們就通過hostname查看主機名唄。

在這裡插入圖片描述

註意:是容器的主機名,而不是宿主機的。

修改完需要重新開啟監聽。先停止,再啟動。

lsnrctl stop
lsnrctl start

12.2 結果navicat連接繼續報錯ORA-12514:TNS:listener does not currently know of service requested in connect descriptor

大概意思是當前服務不可用

在這裡插入圖片描述

結果又是一頓瞎搞,結果lsnrctl status命令顯示的內容和以前又不一樣了,沒有可用的服務。
在這裡插入圖片描述

12.3 The listener supports no services

這個問題也找到解決辦法了。

繼續修改listener.ora 文件。

在這裡插入圖片描述

SID_LIST_LISTENER =
(SID_LIST =
  (SID_DESC =
  (GLOBAL_DBNAME = helowin)
  (SID_NAME = helowin) 
  )
)

繼續lsnrctl stop然後lsnrctl start
在這裡插入圖片描述
熟悉的服務、實例終於又回來了。

12.4 oracle修改埠啟動的別忘了遇到的1521全改成自定義的,仔細看我上面的listener.ora和tnsname.ora里host和port我全改成一致的了,在此就不多說了。

12.5 就在我滿心歡喜的時候又報了個錯ORA-01031: insufficient privileges

在這裡插入圖片描述

許可權不足???

這個簡單查了一下

解決Navicat連接Oracle資料庫用戶許可權問題:

第一步:在cmd視窗運行[sqlplus],

第二步:輸入Oracle的用戶名和口令連接Oracle資料庫,

第三步:執行授權代碼,給用戶授予DBA許可權 [grant dba to 用戶名;],

如果還有許可權不足問題再執行第四步,

第四步:執行[grant all privileges to 用戶名;]

我這裡用戶名就是system了,執行完了沒什麼鳥用。

後來想起來了,之前蒙頭撞牆的時候改了高級里的角色為sysdba,改回default試一下。

在這裡插入圖片描述

居然成功了!!!

在這裡插入圖片描述

就這樣吧。洗洗睡吧。真的累了。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • .NET 6 使用 MagicOnion MagicOnion開源地址:https://github.com/Cysharp/MagicOnion 什麼是MagicOnion? MagicOnion 是用於 .NET 平臺的現代 RPC 框架,它提供雙向實時通信(如SignalR和Socket.io ...
  • 一、需求描述 由於WTM預設只支持查詢關係型資料庫,但實際生產過程中,我們的數據可能會存在時序資料庫。 WTM LayUI的架構下,實現通過查詢InfluxDB時序資料庫數據,並將數據放到DataTable中。 二、解決思路 通過Influx語法,將數據查詢出來放到List的容器中,然後再在GetS ...
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家講的是國內外串列NOR Flash廠商官網Cross Reference功能。 串列 NOR Flash 是一個相對發展穩定的市場,目前全球市場約 90% 的份額被中國的三家廠商(Winbond華邦/MXIC旺巨集/GigaDevice兆易創新) ...
  • ​ 摘要:本文主要歸納總結藍牙模塊的不同工作模式,通過藍牙模塊不同的工作模式瞭解其扮演不同角色時工作的一個基本原理,為更深入的研究藍牙模塊底層的工作機制和技術方案進行鋪墊。 1、主設備工作模式 主設備是能夠搜索別人並主動建立連接的一方,從掃描狀態轉化而來的。其可以和一個或多個從設備進行連接通信,它會 ...
  • Valheim伺服器 Mod修改安裝 註意! **不建議在為通關游戲的情況下對游戲進行任何修改,這會極大的縮短游戲的新鮮度,不建議安裝任何mod及修改器** mod的安裝將直接影響你的游戲體驗 伺服器安裝mod還需要參與伺服器的玩家一併安裝mod文件 本mod非往游戲中添加游戲元素,只是在原有的基礎 ...
  • 一、SSL認證 也就是我們常說的伺服器認證,為的是啟動加密傳輸協議https,步驟如下: 1、生成證書請求 進入IIS,選擇伺服器的伺服器證書設置選項, 創建證書申請,填值如圖所示 選擇加密服務提供程式,並設置證書密鑰長度,EV證書需選擇位長2048 完成之後,會保留一條請求記錄,如圖 生成的證書請 ...
  • 在 Linux 中一切皆文件。文件管理主要是涉及文件/目錄的創建、刪除、移動、複製和查詢,有mkdir/rm/mv/cp/find 等命令。其中 find 文件查詢命令較為複雜,參數豐富,功能十分強大;查看文件內容是一個比較大的話題,文本處理也有很多工具供我們使用,本文涉及到這兩部分的內容只是點到為... ...
  • Redis項目總結--緩存更新策略 1.更新策略 | | 記憶體淘汰 | 超時剔除 | 主動更新 | | : : | : : | : : | : : | | 說明 | 不用自己維護,利用Redis記憶體淘汰機制,記憶體不足時自動淘汰部分數據,下次查詢時更新緩存 | 給緩存數據添加過期時間,到期刪除,下次查 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...