? ? ? ? Linux下的Oracle數據庫實在是太難安裝了,事賊多,我都懷疑能安裝成功是不是運氣的成分更高一些。這里操作系統是Centos7,Oracle版本是Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production。
Oracle下載鏈接: https://pan.baidu.com/s/1koFPbw26lxCcsIdPEsuZXQ?pwd=nwvk 提取碼: nwvk
1、在虛擬機上安裝Centos7
? ? ? ? 要求:
????????????????a、物理內存:2G【建議啊】
? ? ? ? ? ? ? ? b、硬盤:40G【默認20G是不夠的】
? ? ? ? ? ? ? ? c、 swap交換分區:3G【小于3G則Oracle安裝檢查環境時會提示swap大小不足,當然右上角有相關選項,勾選是可以略過這步的,但沒必要,不至于窮到連3G都不能給swap】
? ? ? ? ? ? ? ? d、帶GUI的服務器【不能最小安裝,因為Oracle12的安裝是帶有圖形界面的】
? ? ? ? ? ? ? ? e、為Centos7設置固定IP【這個想當服務器用的都得有固定IP吧】
? ? ? ? 開始:
? ? ? ? ? ? ? ? 創建新的虛擬機
? ? ? ? ? ? ? ? 選擇【典型】,點擊【下一步】按鈕
? ? ? ? ? ? ? ? 選擇【稍后安裝操作系統】,點擊【下一步】
????????????????選擇【Linux】與【CentOS 7 64位】,點擊【下一步】
? ? ? ? ? ? ? ? 改好Centos7要安放的位置后點擊【下一步】
? ? ? ? ? ? ? ? 硬盤改為40G,默認的20G不夠,點擊【下一步】
? ? ? ? ? ? ? ? 點擊【自定義硬件】
? ? ? ? ? ? ? ? 點擊【關閉】按鈕后再點擊【完成】按鈕。
? ? ? ? ? ? ? ? 點擊【編輯虛擬機設置】
? ? ? ? ? ? ? ? 將你的Centos7的鏡像文件【我的是CentOS-7-x86_64-DVD-1810.iso】掛載到光盤上準備運行。點擊【確定】按鈕。
? ? ? ? ? ? ? ? 點擊【開啟此虛擬機】,等待安裝。
? ? ? ? ? ? ? ? 鼠標點擊進入安裝界面【注:一定要點擊進去啊,不會就點擊屏幕中央位置,然后鼠標會改變形狀】后按向上的方向鍵,使【Install CentOs 7】選項變白,回車開始安裝。這時鼠標是在安裝界面里的,要想出來可按【Ctrl+Alt】。
? ? ? ? ? ? ? ? 安裝界面語言選擇【中文】(鼠標要點入安裝界面啊),點擊【繼續】按鈕。
? ? ? ? ? ? ? ? 進入安裝選擇界面后要多等待一會,程序要檢查軟件安裝依賴關系,這時不要亂點。
? ? ? ? ? ? ? ? 先改日期時間
? ? ? ? 亞洲+上海,改完日期與時間后點擊左上角【完成】按鈕。
? ? ? ? ? ? ? ? 點擊【軟件選擇】,默認是最小安裝,這個不行,得改為帶GUI的服務器。
? ? ? ? ? ? ? ? 點擊【完成】按鈕后程序會重新檢查軟件依賴關系,等會,別亂動,這個看機器性能,我機器慢,等了好幾分鐘呢。
? ? ? ? ? ? ? ? 點擊【安裝位置】,我們要手工分區。
? ? ? ? ? ? ? ? 點擊【我要配置分區】,再點擊【完成】按鈕。
? ? ? ? ? ? ? ? 將新掛載點將使用的分區方案改為【標準分區】
? ? ? ? ? ? ? ? 再點擊【+】按鈕
? ? ? ? ? ? ? ? 首先是掛載【/boot】引導分區,容量1G就夠了。點擊【添加掛載點】
? ? ? ? ? ? ? ? 將文件系統改為【ext4】格式。再點擊左下角的【+】按鈕
? ? ? ? ? ? ? ? 其次選擇【swap】交換分區,容量3G,這個很重要,點擊【添加掛載點】
? ? ? ? ? ? ? ? 文件系統默認是swap格式的,不用動。再點擊【+】按鈕
? ? ? ? ? ? ? ? 最后掛載【/】根目錄,容量不用填。點擊【添加掛載點】按鈕。
????????????????將文件系統改為【ext4】格式。點擊左上角的【完成】按鈕
? ? ? ? ? ? ? ? 點擊【接受更改】按鈕完成安裝位置選項。
? ? ? ? ? ? ? ? 點擊【KDUMP】按鈕
? ? ? ? ? ? ? ? 去掉【啟用kdump】選項,點擊【完成】按鈕。
? ? ? ? ? ? ? ? 點擊【網絡和主機名】
? ? ? ? ? ? ? ? 修改主機名,再點擊【應用】按鈕。
? ? ? ? ? ? ? ? 再點擊右上角【打開/關閉】按鈕
? ? ? ? ? ? ? ? 打開網絡連接。這里要記住路由與DNS的地址,后面配置固定IP要用到。點擊【完成】按鈕。
? ? ? ? ? ? ? ? 點擊【SECURITY POLICY】選項。
? ? ? ? ? ? ? ? 點擊【打開/關閉】按鈕,取消密碼安全性限制。
? ? ? ? ? ? ? ? 點擊【完成】按鈕。
? ? ? ? ? ? ? ? 點擊【開始安裝】按鈕
? ? ? ? ? ? ? ? 先設置root密碼
? ? ? ? ? ? ? ? 我設的密碼太簡單,需要點2次【完成】按鈕才能成功。再點擊【創建用戶】
? ? ? ? ? ? ? ? 密碼簡單,再點擊2次【完成】按鈕才創建用戶成功。
? ? ? ? ? ? ? ? 耐心等待安裝就行......
? ? ? ? ? ? ? ? 漫長的時間啊,終于等到了,點擊【重啟】按鈕。
? ? ? ? ? ? ? ? 這里要接受許可。
? ? ? ? ? ? ? ? 點擊【完成】按鈕。
? ? ? ? ? ? ? ? 網絡和主機名我們前面配置過,這里就不用再配置了。點擊【完成配置】按鈕。
????????????????
? ? ? ? ? ? ? ? 這里點擊【未列出】,我們要用root登錄系統。
? ? ? ? ? ? ? ? 輸入密碼后進入系統界面。
? ? ? ? ? ? ? ? 點擊右上角【前進】按鈕,再點擊【前進】按鈕
? ? ? ? ? ? ? ? 這里關閉隱私,再點擊【前進】按鈕,再點擊下一界面的【跳過】按鈕,再點擊下一界面的開始使用按鈕。
? ? ? ? ? ? ? ? 點擊右上角的【X】退出。終于進來正常的界面了。
2、為安裝Oracle數據庫做準備工作
? ? ? ? 換yum源:
? ? ? ? ? ? ? ? 我發現yum原來默認的國外鏡像網站不好用了,你說操蛋不,我得換成阿里云的鏡像網站,你的yum要是沒事就可以略過此步。
? ? ? ? ? ? ? ? 鼠標右鍵點擊桌面,右鍵菜單選擇【打開終端】
? ? ? ? 我執行yum list提示如下
? ? ? ? ? ? ? ? 真的不好用了啊,必須為yum換源了。
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
????????清除本地yum緩存、索引、頭文件、插件
yum clean all
????????把服務器的包信息下載到本地電腦緩存起來
yum makecache
? ? ? ? ? ? ? ? 更新已安裝軟件版本,防止與原來yum源安裝的軟件依賴發生意外沖突。但不更新linux內核。
yum -y upgrade
? ? ? ? ?這個時間有點長,等待。更新完成后測試了一下yum,發現OK。
yum search ifconfig
? ? ? ? 設置固定IP:
? ? ? ? ? ? ? ? 編輯網絡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
? ? ? ? 首先將?BOOTPROTO="dhcp" 改為?BOOTPROTO="static",我這里將其注釋了然后重新復制一份再修改。
? ? ? ? 最后再在最后面補充以下內容
IPADDR="192.168.126.100"
NETMASK="255.255.255.0"
GATEWAY="192.168.126.2"
DNS1="192.168.126.2"
?
????????按【esc】鍵,再按【:wq】保存退出。
? ? ? ? IPADDR是本機固定IP,NETMASK是掩碼,GATEWAY是網關,DNS1是首選DNS。前面安裝網絡與主機名時有下面的界面顯示了IP相關信息,我們原樣拿過來用就行,我就把IP改了一下,100好記。
? ? ? ? 若前面安裝忘記了網絡相關信息也不怕,點擊虛擬機VMware的菜單【編輯】
下的【虛擬網絡編輯器】菜單
? ? ? ? 點擊【NAT】模式,再點擊【NAT設置】按鈕
? ? ? ? 在這里也能看到網絡IP相關信息。
? ? ? ? 執行下列代碼讓網絡馬上生效
systemctl restart network
再執行下面代碼查看網絡具體信息。
ifconfig
????????關閉防火墻:
????????關閉防火墻為了防止安裝過程中的某些操作被防火墻阻止,確保安裝程序可以正常訪問所需要的端口與服務。安裝完成后再重新啟動防火墻并開放oracle的1521端口就行。
? ? ? ? 執行下面3條命令
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
? ? ? ? 【systemctl stop firewalld.service】是關閉防火墻
? ? ? ? 【systemctl disable firewalld.service】是禁止防火墻的開機自啟
? ? ? ? 【systemctl status firewalld.service】是查看防火墻狀態
????????安裝依賴包:
yum install -y binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 glibc glibc.i686 glibc-devel glibc-devel.i686 ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libX11 libX11.i686 libXau libXau.i686 libXi libXi.i686 libXtst libXtst.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libxcb libxcb.i686 make nfs-utils net-tools smartmontools sysstat unixODBC unixODBC-devel gcc gcc-c++ libXext libXext.i686 zlib-devel zlib-devel.i686
? ? ? ?這些都是要安裝Oracle數據庫的軟件依賴包,好多啊,有些依賴包前面安裝系統時已經安裝過了,還有些未安裝過的。這些依賴包內容可以在Oracle官網上的文檔中查到。
? ? ? ? 執行下面命令檢查依賴包是否全部安裝完成
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' binutils compat-libcap1 compat-libstdc++-33 cpp gcc gcc-c++ glibc glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make mpfr sysstat
? ? ? ? 基本上不會有什么問題。
????????創建組:
groupadd oinstall
groupadd dba
groupadd oper
groupadd osoper
? ? ? ? 這里創建了4個組。
????????創建用戶并修改密碼:
useradd -g oinstall -G dba,oper oracle
passwd oracle
? ? ? ? 這里創建oracle用戶來管理Oracle數據庫的安裝及后面的日常操作。該用戶隸屬于【oinstall】組,附加組是【dba】與【oper】。
????????修改內核限制參數:
vim /etc/security/limits.conf
? ? ? ? 在配置文件末尾插入下面內容
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
????????按【esc】鍵,再按【:wq】保存退出。
? ? ? ? 其中【oracle soft nproc 2047】是單用戶可使用進程數量
? ? ? ? ? ? ? ? 【oracle soft nofile 1024】是用戶可打開文件數量
? ? ? ? ? ? ? ? 【oracle soft stack 10240】是堆棧設置
????????手動配置內核參數:
vim /etc/sysctl.conf
在配置文件末尾插入下面內容
fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
kernel.panic_on_oops = 1
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500
????????按【esc】鍵,再按【:wq】保存退出。
????????刷新內核參數,使其馬上生效。
sysctl -p
????????修改login配置文件:
vim /etc/pam.d/login
????????在配置文件末尾插入下面內容
session required /lib64/security/pam_limits.so
session required pam_limits.so
????????按【esc】鍵,再按【:wq】保存退出。
????????修改profile文件:
vim /etc/profile
在配置文件末尾插入下面內容
if [ $USER = "oracle" ] ; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
????????按【esc】鍵,再按【:wq】保存退出。
????????配置環境變量:
? ? ? ? 創建Oracle安裝軟件的存放目錄,后面我們會把該文件拷貝到此目錄下。
mkdir -p /setup/oracle
? ? ? ? 創建Oracle數據庫軟件安裝目錄,后面安裝時會將Oracle數據庫安裝到此目錄下。
mkdir -p /app/oracle/product/12.1.0/dbhome_1
????????配置oracle用戶的環境變量,后面我們要用前面創建的oracle用戶來專門安裝管理Oracle12數據庫,因此這里要特意為該用戶配置一下環境變量,別的用戶是不能管理Oracle數據庫的。
vim /home/oracle/.bash_profile
????????在配置文件末尾插入下面內容
export ORACLE_BASE=/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH
????????按【esc】鍵,再按【:wq】保存退出。
????????刷新配置,使其馬上生效。
source /home/oracle/.bash_profile
????????進入到Oracle軟件存放目錄
cd /setup/oracle
????????將oracle安裝軟件拷貝到該目錄,我用的是MobaXterm軟件,用啥軟件都行,能把文件拷貝過來就行。
? ? ? ? 拷貝完畢后回到Centos的終端窗口,查看文件
ls
? ? ? ? 2個文件都已經拷貝過來了,下面解壓這2個文件。
????????【注】:若無unzip軟件可先安裝【yum -y install unzip】
unzip V46095-01_1of2.zip
unzip V46095-01_2of2.zip
? ? ? ? 重新查看一下該目錄下文件
ls
? ? ? ? 2個壓縮文件已經解壓到 /setup/oracle/database目錄下了。
? ? ? ? 文件授權:
? ? ? ? ? ? ? ? 后面我們要用oracle用戶登錄來安裝Oracle數據庫,而前面的所有操作都是用root用戶來完成的,所以必須把Oracle數據庫的安裝軟件授權給oracle用戶,否則無權管理這些文件。
chown -R oracle:oinstall /setup/oracle/database/
????????查看一下授權后內容
ll
? ? ? ? 可以看到 /setup/oracle/databae/ 目錄及其下屬所有文件都已經改為oracle用戶所有了。
? ? ? ? 同理我們再把Oracle數據庫軟件要安裝到的目錄也更改一下權限,因為該目錄也是用root用戶建立的,不改不行啊!
chown -R oracle:oinstall /app/
????????建議現在重啟,然后在虛擬機上以oracle用戶登錄
reboot
因為改了很多東西,也不知道有沒有問題,改沒改錯,重啟看一下。
這里我們用oracle用戶登錄
? ? ? ? 沒問題,進來了,由于頭一次使用oracle用戶登錄,需要一些配置,與前面的相同,這里略。
在桌面上按右鍵選擇【打開終端】,這回真的要開始安裝Oracle了。
? ? ? ? 若不想重啟系統的話也沒毛病,切換用戶即可。
su - oracle
? ? ? ?【
????????????????設置DISPLAY變量:
? ? ? ? ????????我是在虛擬機上直接安裝Oracle數據庫,因此不用設置DISPLAY變量。但若你是在客戶端連接軟件上的話那就麻煩了,需安裝支持圖形界面的軟件,還得設置DISPLAY變量
????????????????export DISPLAY=192.168.126.100:0.0
? ? ? ????????? xclock
????????】
????????臨時將系統換成英文
? ? ? ? 因為Oracle安裝包提供的jdk內缺少中文字體,安裝時顯示的都是亂碼,因此最簡單的方法就是臨時將系統的中文改為英文。
export LANG=en_us
????????進入Oracle軟件存放目錄
cd /setup/oracle/database
????????顯示目錄內容
ll
? ? ? ? 運行該文件
./runInstaller
? ? ? ? 檢測通過,可以啟動Oralce安裝界面了。
? ? ? ? 我服了,分辨率不夠,看不到安裝界面全景啊。繼續改!
選擇Centos左上角菜單【應用程序】->【系統工具】->【設置】
? ? ? ? 點擊【設備】
????????修改高分辨率
? ? ? ? 點擊【應用】按鈕,再點擊【保留更改】按鈕。拉動底下向右滾動條,點擊右上角的【X】退出即可。這回就能看全了。
? ? ? ? 去掉勾選,點擊【next】按鈕。【上面2圖中的下圖是從網上找的中文對照,省得看得不習慣】
? ? ? ? 選擇【yes】按鈕
? ? ? ? 點擊【next】按鈕。
? ? ? ? 選擇【Server class】,點擊【next】按鈕。
? ? ? ? 選擇【Single instance database installation】,點擊【next】按鈕。
? ? ? ? 選擇【Typical install】典型安裝,點擊【next】按鈕。
? ? ? ? 翻譯不完全一樣,大致對照理解一下就行。輸入新數據庫登錄密碼,去掉【Create Container databae】勾選,點擊【next】按鈕。
? ? ? ? 密碼太簡單,提示安全問題,不管它,選【Yes】繼續。
? ? ? ? 點擊【next】按鈕。
? ? ? ? 上面是檢測安裝環境,若是前面swap未設置3G這里就會有提示。我們繼續
? ? ? ? 沒問題,點擊【install】按鈕
? ? ? ? 安裝中。。。
? ? ? ? 這是2個shell文件,需要以root用戶權限來執行
回到終端窗口,先按一下回車顯示正常狀態,然后切換用戶
su
輸入密碼后執行第一條命令
/app/oraInventory/orainstRoot.sh
再執行第二條命令
/app/oracle/product/12.1.0/dbhome_1/root.sh
這里會有個提示,停頓一下,回車即可。
? ? ? ? 回到Oralce安裝窗口點擊剛才那個彈出窗口中的【ok】按鈕,繼續安裝中。。。
? ? ? ? Oracle安裝程序開始創建數據庫了
? ? ? ? 點擊【ok】按鈕。
? ? ? ? 數據庫安裝成功,點擊【close】按鈕結束。
收尾工作:
? ? ? ? 【確保我們現在是以root用戶登錄,剛才前面執行2個shell命令時已經改過了。】
????????數據庫自啟動
????????????????重啟linux后oracle數據庫是不會自動啟動的,得我們手工配置一下才行。
? ? ? ? ? ? ? ? a、修改Oracle的配置文件
vim /etc/oratab
????????????????????????將? ? 【orcl:/app/oracle/product/12.1.0/dbhome_1:N】
????????????????????????改為【orcl:/app/oracle/product/12.1.0/dbhome_1:Y】
? ? ? ? ? ? ? ? ? ? ? ? 就是將最后一個字母N改為Y就ok了。
????????????????????????按【esc】鍵,再按【:wq】保存退出。
? ? ? ? ? ? ? ? b、修改Centos的自啟動配置文件
vim /etc/rc.d/rc.local
????????????????????????rc.local是開機啟動文件,通過編輯該文件,用戶可以自定義開機啟動程序。
????????????????????????將需要開機啟動的程序命令或腳本路徑添加到該文件中,系統啟動時該文件將被自動執行。
? ? ? ? ? ? ? ? ? ? ? ? 將下面的內容添加到該配置文件中。
su oracle -lc "/app/oracle/product/12.1.0/dbhome_1/bin/dbstart"
su oracle -lc "/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl start"
????????????????按【esc】鍵,再按【:wq】保存退出。
? ? ? ? ? ? ? ? 為該啟動文件設置可執行權限【默認該文件是沒有可執行權限的,不改重啟時它不執行啊】
chmod u+x /etc/rc.d/rc.local
啟動防火墻
systemctl start firewalld.service
? ? ? ? 防火墻很重要,不可能因為Oralce數據庫就永遠關閉吧,前面安裝需要關閉一下,現在安裝完事了,只要開放Oracle的1521端口就行了。
systemctl enable firewalld.service
查看一下防火墻現在的狀態
systemctl status firewalld.service
開放Oracle數據庫的1521端口
firewall-cmd --permanent --add-port=1521/tcp
讓設置馬上生效
firewall-cmd --reload
查看防火墻是否成功開放了1521端口
firewall-cmd --query-port=1521/tcp
????????OK,到此我們的收尾工作已經全部完成,馬上重啟,看看是否成功!
reboot
我們還是用oracle用戶登錄,桌面上點擊右鍵,選擇【打開終端】。
查看Oracle數據庫是否啟動,這里我們只要查看是否有Oracle的進程就可以了。
ps -ef | grep pmon
查看Oracle的監聽是否啟動
lsnrctl status
完全沒問題,都正常啟動了。
【
? ? ? ? 若Oracle數據庫未啟動,則需輸入下列命令啟動。
????????????????sqlplus / as sysdba
? ? ? ? ? ? ? ? #啟動命令
????????????????startup
????????????????#查看啟動狀態
????????????????select status from v$instance;
? ? ? ? ? ? ? ? #關閉
????????????????shutdown immediate
? ? ? ? 若監聽未啟動,則需輸入下列命令啟動。
????????????????lsnrctl start
】
測試連接:
????????用datagrip測試一下連接,成功!
搞定,收工!
【
? ? ? ? 如果,我是說如果連接不成功,總是提示:
ORA-12505: 無法連接到數據庫。SID orcl 未注冊到 host 192.168.126.100 port 1521 中的監聽程序。
? ? ? ? 也就是說監聽程序不認你給出的SID,拒絕連接。
? ? ? ? 問題是給出的SID是正確的,啥毛病也沒有啊,但監聽就是不認,咋辦啊!
? ? ? ? 那就硬改一下試試,把SID寫死!
? ? ? ? 監聽程序是listener.ora文件,編輯該文件。
vim /app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
在后面加上如下內容
SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = orcl)(ORACLE_HOME = /app/oracle/product/12.1.0/dbhome_1/)))
?????????SID_LIST_LISTENER是Oracle數據庫監聽器配置文件listener.ora中的一個條目,用于定義靜態注冊的服務信息。靜態注冊是指將數據庫實例的信息硬編碼在監聽器配置文件中,以便在數據庫實例關閉時也能通過監聽器連接到數據庫。
? ? ? ? 這也是實在沒招了啊!
????????按【esc】鍵,再按【:wq】保存退出。
先停止監聽程序
lsnrctl stop
再重新啟動監聽程序
lsnrctl start
????????有UNKNOWN提示,不管他。這回再嘗試連接數據庫,你會發現可能就好用了。寫死了當然好用了啊!
】