目錄
- 全網最全的linux上docker安裝oracle的詳細檔案,遇到了n個問題,查了幾十篇文章,最侄訓總版,再有解決不了的,私聊我,我幫你解決
- 1. 拉取阿里鏡像oracle
- 2. 創建初始化資料
- 3. 創建啟動容器 資料持久化
- 4. 進入oracle容器
- 5. 切換到root用戶下進行配置
- 6. 編輯profile檔案配置ORACLE環境變數
- 7. 創建軟連接
- 8. 切換到oracle 用戶
- 9. 登錄sqlplus并修改sys、system用戶密碼
- 10. 修改sys、system用戶密碼并重繪權限
- 10.1 當執行修改密碼的時候出現 :database not open
- 10.2 又提示另一個錯誤: ORA-01507: database not mounted
- 10.3 又提示另一個錯誤:ORA-00214:control file
- 11. 查看一下oracle實體狀態
- 12. 用navicat連接oracle資料庫
- 12.1 用navicat連接報錯ORA-12514: TNS :no listener
- 12.2 結果navicat連接繼續報錯ORA-12514:TNS:listener does not currently know of service requested in connect descriptor
- 12.3 The listener supports no services
- 12.4 oracle修改埠啟動的別忘了遇到的1521全改成自定義的,仔細看我上面的listener.ora和tnsname.ora里host和port我全改成一致的了,在此就不多說了,
- 12.5 就在我滿心歡喜的時候又報了個錯ORA-01031: insufficient privileges
全網最全的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試一下,

居然成功了!!!

就這樣吧,洗洗睡吧,真的累了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/539569.html
標籤:Oracle
下一篇:跨機房ES同步實戰
