Oracle從10的企業(yè)級版本開始就不在對Mac進行相關(guān)技術(shù)支持和運維服務(wù),采用docker的方式安裝orcal。
一.安裝docker
參考文檔:https://www.runoob.com/docker/macos-docker-install.html
采用命令行的方式安裝
brew install --cask --appdir=/Applications docker
遇到的問題
-
Error: /usr/local is not writable.
解決方案如下:
首先卸載已有的homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
重新安裝
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
其中/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)" 執(zhí)行比較慢,需要等待,因為這個需要外網(wǎng)下載內(nèi)容。
參考:https://www.cnblogs.com/shmily2018/p/9237790.html
- 安裝brew的時候失敗了,提示:
curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercontent.com:443
使用外網(wǎng)鏈接安裝,代碼如下:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
參考:https://blog.csdn.net/fgx_123456/article/details/109529180
二. 通過Docker來安裝Oracle11g
在命令行里面搜索oracle
docker search docker-oracle-xe-11g
下載安裝
docker pull deepdiver/docker-oracle-xe-11g
把鏡像轉(zhuǎn)化為容器,使用端口1521進行映射
docker run -d -p 1521:1521 --name oracle11g deepdiver/docker-oracle-xe-11g
三. 配置數(shù)據(jù)庫
進入容器內(nèi)部的命令如下:
docker exec -it 你的容器Id(可通過docker ps命令獲得) /bin/bash
通過sqlplus進入oracle
sqlplus system/oracle
創(chuàng)建用戶
create user wenbin(用戶名) identified by password(密碼) ;
查詢創(chuàng)建好的用戶
select * from all_users;
在創(chuàng)建完新用戶之后,需要對該用戶進行授權(quán),該用戶具有什么權(quán)限都是通過自己指定的,這也是為什么推薦使用自定義用戶登錄數(shù)據(jù)庫的原因,sql如下:
grant connect,resource to WENBIN;(這里需要將用戶名大寫,否則授權(quán)不成功)
connect表示具有連接數(shù)據(jù)庫的權(quán)限;resource表示具有操作數(shù)據(jù)庫的權(quán)限
參考文檔:https://blog.csdn.net/qq_36314960/article/details/100111935
四. 連接數(shù)據(jù)庫
通過Navicat軟件鏈接數(shù)據(jù)庫,下載鏈接
問題1. 提示文件損壞無法打開
執(zhí)行下面的語句,注意下面的安裝路徑替換成自己的實際安裝路徑。
sudo xattr -r -d com.apple.quarantine '/Applications/Navicat Premium.app'
參考鏈接:https://blog.csdn.net/weixin_58276266/article/details/118445423
問題2. Service Name的填寫
連接數(shù)據(jù)庫,注意:下面service name填寫XE,這個可以通過命令查詢相應(yīng)的service name

查詢service name的命令,在oracle的命令窗口執(zhí)行:
select INSTANCE_NAME from v$instance;
參考鏈接:https://www.cnblogs.com/lixuwu/p/7127148.html
五. docker的一些簡單命令
運行容器:docker run -it 鏡像名 /bin/bash
退出容器:exit 或者 Ctrl+P+Q
查看容器:docker ps -a
查看運行的容器:docker ps
重啟容器:docker restart 容器ID
重啟容器后進入交互式:docker start -i 5c6ce895b979
進入容器:docker attach 容器ID docker exec -it 容器ID /bin/bash