oracle數據庫是一個相對龐大的應用軟件,對服務器的系統類型,內存和交換分區、硬盤空間、內核參數、軟件環境、用戶環境等都有相應的要求。只有知足了必備的條件,才能確保oracle 12c安裝成功,運行穩定。html
部署oracle 12c對系統的要求:linux
- 防火牆須要放行相關流量,oracle默認端口號是5500;
- SELinux必須關閉;
- 內核選擇3.10及以上版本;
- 物理內存;必須高於1G,交換空間,當物理內存爲1~2G 時,交換分區爲物理內存的1.5\~2倍,當物理內存爲2\~16G時,交換分區與物理內存大小同樣就能夠,當物理內存超過16G時,交換分區使用16GB就好了。
- 至少須要20GB的磁盤空間,若是不單獨給oracle建立分區,那麼至少要保證根分區有15GB的可用磁盤空間
以上基本是硬件的要求,接下來開始爲了能夠部署oracle,還須要修改軟件方面的參數。c++
先下載oracle的安裝程序吧,我這裏提供了一個oracle 12c的安裝文件百度網盤連接,是oracle 12c的版本,也能夠去oracle中文官方網站,它支持oracle安裝文件的免費下載(須要註冊帳號,最新的版本是oracle 19c),找到所需的版本下載使用便可,我這裏就安裝12c了。sql
安裝oracle數據庫前,要求規劃好主機名和IP。服務器的主機名、IP地址也應提早肯定無誤,一旦oracle數據庫安裝完成,建議不要再修改主機名,不然會致使數據庫啓動失敗。通常須要執行如下操做:數據庫
[root@localhost ~]# hostnamectl set-hostname oracle #修改主機名,並寫入配置文件 [root@localhost ~]# bash #使主機名生效 [root@oracle ~]# echo "192.168.1.1 oracle" >> /etc/hosts #將本機主機名及IP對應寫入/etc/hosts文件,以便解析 #也能夠經過DNS來解析,這裏爲了省事 [root@oracle ~]# tail -1 /etc/hosts #確認已添加 192.168.1.1 oracle
oracle 12c的安裝過程是在圖形界面中進行,所以建議使用帶有GNOME中文桌面環境的centos服務器,軟件開發工具固然也是必不可少的,可使用yum安裝系統盤中的必要的軟件環境,具體以下:express
[root@oracle ~]# mount /dev/cdrom /media #掛載系統盤 #如下是配置本地yum源 [root@oracle yum.repos.d]# cd /etc/yum.repos.d/ [root@oracle yum.repos.d]# mkdir /yum.repo.bak [root@oracle yum.repos.d]# mv * /yum.repo.bak/ [root@oracle yum.repos.d]# vim system.repo #寫入如下內容 [oracle] baseurl=file:///media gpgcheck=0 [root@oracle yum.repos.d]# yum clean all #清除yum緩存 [root@oracle yum.repos.d]# cd #如下是安裝一些開發工具 [root@oracle ~]# yum -y install binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel [root@oracle ~]# vim /etc/sysctl.conf #調整內核參數,主要是內存調度、端口範圍、打開文件數、I/O請求等相關設置 ..........................#省略部份內容 #在文件末尾寫入如下參數 fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 4294967295 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 [root@oracle ~]# sysctl -p #從新加載配置文件,確保輸出的信息沒有報錯 fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 4294967295 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 262144 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 [root@oracle ~]# groupadd -g 54321 oinstall #建立安裝組 [root@oracle ~]# groupadd -g 54322 dba #建立管理組 [root@oracle ~]# useradd -u 54321 -g oinstall -G dba oracle #建立運行用戶 [root@oracle ~]# echo "123.comf" | passwd --stdin oracle #爲該用戶設置密碼 [root@oracle ~]# mkdir -p /u01/app/oracle #建立基本目錄 [root@oracle ~]# chown -R oracle:oinstall /u01/app/ #更改屬組 [root@oracle ~]# chmod -R 755 /u01/app/oracle/ #更改權限 [root@oracle ~]# vim /home/oracle/.bash_profile #調整oracle用戶的環境變量 ........................#省略部份內容 #寫入如下內容 umask 022 ORACLE_BASE=/u01/app/oracle #定義基本目錄 ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1/ #定義安裝家目錄 ORACLE_SID=orcl #定義數據庫實例名稱 NLS_LANG="SIMPLIFIED CHINESE_CHINA".UTF8 #肯定使用何種語言環境 PATH=$PATH:$ORACLE_HOME/bin LANG=zh_CN.UTF-8 export PATH LANG NLS_LANG ORACLE_BASE ORACLE_HOME ORACLE_SID export DISPLAY=:0.0
oracle用戶資源限制要求
進程會話限制能夠採用pam_limits認證模塊來實現,經過修改登陸程序login的PAM設置以啓用該認證,而後修改/etc/security/limits.conf文件,使用戶oracle可以打開的進程數、進程使用的文件數加大。以下:vim
[root@oracle ~]# vim /etc/pam.d/login #修改PAM設置以便啓用該認證 ......................#省略部份內容 #在末尾寫入如下兩行: session required /lib/security/pam_limits.so session required pam_limits.so [root@oracle ~]# 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 #Oracle軟堆棧限制 [root@oracle ~]# 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 fi
不配置oracle用戶資源的限制,也不會影響到oracle數據庫的成功安裝,可是,如有糟糕的SQL語句對服務器的資源無限佔用,致使長時間對用戶請求無響應,則建議提早限制oracle用戶資源。centos
準備工做至此就完成了,須要重啓系統,重啓以後,最好再次檢查以前的配置是否生效。建議不要作臨時配置。瀏覽器
[root@oracle ~]# mkdir /tmp/abc #建立目錄,/tmp目錄下,oracle用戶才能夠讀取到 [root@oracle ~]# mount /dev/cdrom /media #掛載我提供的oracle光盤鏡像文件 [root@oracle ~]# ls /media/ #確認oracle文件存在 linuxx64_12201_database.zip [root@oracle ~]# cd /tmp/abc #切換至/tmp/abc/目錄下 [root@oracle abc]# cp /media/linuxx64_12201_database.zip . #將安裝文件複製到當前目錄下,文件有點大,請耐心等待 [root@oracle abc]# unzip linuxx64_12201_database.zip #解壓該安裝文件
oracle 12c的安裝主要經過runInstaller腳本進行,訪問網頁welcome.html能夠查看產品手冊,其中包括產品說明、發行註記、安裝指南等文檔,爲咱們提供了極爲豐富的幫助信息。緩存
全部前置條件準備好之後,就能夠正式開始安裝了,若是當前的圖形桌面環境是以其餘用戶的身份(如root)登陸的,則還應添加受權以容許oracle使用圖形終端。例如:「xhost + oracle@localhost」表示容許用戶oracle從本機訪問,執行「xhost +」表示取消全部限制。
以用戶oracle的身份登陸到centos 的圖形桌面環境,啓動database目錄下的runInstaller腳本文件,具體操做以下(若安裝oracle 19c則須要將存放oracle 19c的目錄下都更改屬主爲oracle,如解壓出來的oracle安裝文件都位於/tmp/abc目錄下,那麼須要執行命令:chown -R oracle /tmp/abc,以便更改它的屬主,不然會報錯,這裏安裝的oracle 12c就不會出現這個問題。):
[root@oracle ~]# xhost + #必定要以root用戶在圖形環境中操做 [root@oracle ~]# su - oracle #切換至oracle用戶 [oracle@oracle ~]$ cd /tmp/abc/database/ #切換至剛纔解壓出來的oracle安裝文件目錄 [oracle@oracle database]$ ./runInstaller #執行腳本進行安裝,執行該腳本後,就會啓動oracle圖形化的安裝程序
接下來的操做基本就是在圖形化窗口上進行操做了,以下:
執行runInstaller腳本後打開的窗口以下:
一、
二、
三、
四、
五、
六、
七、
八、
九、
十、
十一、
十二、
1三、
1四、在安裝過程當中,會提示讓使用root身份,執行下面的兩個腳本,此時,切換一個工做區,使用root登陸,將腳本名複製過去執行如下,便可!以下:
1五、使用root身份執行上面圖中提示的腳本:
[root@oracle ~]# /u01/app/oraInventory/orainstRoot.sh [root@oracle ~]# /u01/app/oracle/product/12.2.0/dbhome_1/root.sh #執行第二個腳本時,會有兩次交互界面,第一次直接按回車鍵便可; #第二次是要安裝oracle跟蹤文件分析器,可直接回車,也可輸入「yes」進行安裝
1六、
1七、安裝成功,關閉便可
安裝完成後,能夠經過https://oracle服務器IP:5500/em ,實現訪問EM(Enterprise Manager,企業管理器)database Express 平臺,以便對oracle 12c的數據庫進行簡單管理,但訪問EM database express平臺,須要flase的支持。我這裏使用的Windows客戶端直接訪問的(安裝了flase),若使用Linux自帶的火狐瀏覽器,能夠下載我提供的Linux中的flase player插件,是個rpm格式的,直接執行命令rpm -ivh進行安裝便可。
登陸頁面以下:
上圖中提到的密碼,就是在下面這個過程當中定義的口令:
登陸後的界面以下:
關於這個管理界面,就很少作介紹了,自行研究便可。
使用sqlplus命令能夠在命令行界面訪問oracle數據庫,可是登陸到數據庫後,不可使用上下鍵翻歷史命令,若是想要解決,能夠進行如下操做。
一、下載我提供的tar.gz軟件包
二、掛載系統盤,而後執行如下命令:
[root@oracle ~]# yum -y install ncurses* readline* #安裝依賴包 [root@oracle abc]# tar -zxvf rlwrap-0.30.tar.gz #解壓我提供的tar包 [root@oracle abc]# cd rlwrap-0.30/ #進入解壓後的目錄 [root@oracle rlwrap-0.30]# ./configure && make && make install #編譯安裝 [root@oracle ~]# vim /home/oracle/.bash_profile #配置oracle用戶的環境變量,以便方便使用rlwrap命令 #通過以上配置,執行rlwrap + 原命令登陸到oracle數據庫,即可以使用上下鍵翻歷史命令了 [root@oracle ~]# su - oracle #切換到oracle用戶,才能夠登陸到oracle數據庫 上一次登陸:三 9月 25 16:46:42 CST 2019 [oracle@oracle ~]$ rlwrap sqlplus / as sysdba #登陸數據庫
在上面的登陸數據庫命令中,是實現了sys以sysdba的身份鏈接到本機的oracle數據庫,sys用戶是oracle的最高管理員,以sys用戶登陸的時候通常要加上as sysdba,而其餘用戶則不須要,若以其餘用戶身份登陸oracle數據庫,能夠執行命令:「[oracle@oracle ~]$ sqlplus system/oracle
」
進入SQL環境後的簡單操做(在SQL>模式下,不區分大小寫):
SQL> help index #查看支持的指令列表 SQL> show user #查看當前的用戶
若是在安裝oracle產品時不建立數據庫,那麼要使用oracle系統就必須先建立數據庫。若是在安裝oracle時選擇創建數據庫,也能夠再建立第二個數據庫(不過爲了使oracle數據庫充分利用系統資源,建議一個服務器上只建立一個數據庫)。
建立數據庫的方法有兩種:經過圖形化界面,或者採用「CREATE DATABASE」命令,這裏說一下圖形化界面建立數據庫的方法:
[oracle@oracle database]$ dbca #以oracle身份運行命令dbca,會彈出一個窗口
若是沒有彈出窗口,能夠參考前面的步驟,以root用戶運行「xhost +」命令,再以oracle身份運行「export DISPLAY=:0.0」命令。
執行命令後會彈出如下窗口:
oracle數據庫的啓動與關閉是平常工做之一。對於大多數oracle DBA來講,啓動和關閉oracle數據庫最經常使用的方式是在命令行方式下執行。
要啓動和關閉數據庫,必需要以具備oracle管理員權限的用戶登陸,一般以具備SYSDBA權限的用戶登陸。
啓動一個數據庫須要三個步驟:①啓動oracle實例(非裝載階段);②由實例裝載數據庫(裝載階段);③打開數據庫(打開階段)。
在startup命令中,可使用不一樣的選項來控制數據庫的不一樣啓動步驟。
1)startup nomount(該命令不經常使用)
nomount選項僅僅啓動一個oracle實例,讀取init.ora初始化參數文件、啓動後臺進程、初始化SGA。當實例啓動後,系統將顯示一個SGA內存結構和大小的列表,以下:
[oracle@oracle ~]$ rlwrap sqlplus / as sysdba #進入oracle數據庫 SQL> startup nomount #執行該命令 ORACLE 例程已經啓動。 Total System Global Area 1593835520 bytes Fixed Size 8793256 bytes Variable Size 1023411032 bytes Database Buffers 553648128 bytes Redo Buffers 7983104 bytes
2)startup mount(某些時候會用到該命令)
startup mount 命令啓動實例而且裝載數據庫,可是沒有打開數據庫。oracle系統讀取控制文件中關於數據文件和重作日誌文件的內容,但並不打開該文件。這種打開方式常在數據庫維護操做中使用,如對數據文件的改名、改變重作日誌及打開歸檔模式等。在這種打開方式下,除了能夠看到SGA系統列表之外,系統還會給出「數據庫裝載完畢」的提示。
SQL> alter database mount; #因爲上面已經執行了startup nomount命令,因此再更改它的狀態,就須要使用該命令
3)startup(正常時使用的命令)
startup命令完成啓動實例,裝載數據庫和打開數據庫三個步驟。此時,數據庫使數據文件和重作日誌文件在線,一般還會請求一個或者多個回滾段;系統除了能夠看到前面startup mount 方式下的全部提示外,還會給出一個「數據庫已經打開」的提示;數據庫系統處於正常的工做狀態,能夠接收用戶的請求。
若是採用startup nomount或者startup mount的數據庫打開方式,必須採用alter database命令來執行裝載或打開數據庫的操做。
前面兩條命令都執行過了(startup nomount和alter database mount),因此這裏再執行下面命令,數據庫就能夠說是正確啓動完成了。以下:
SQL> alter database open; #執行該命令
正常來講,能夠直接使用下面一條命令來正常啓動數據庫,以下:
SQL> startup #在數據庫關閉狀態下執行該命令,數據庫會依次啓動、裝載、打開。 ORACLE 例程已經啓動。 Total System Global Area 1593835520 bytes Fixed Size 8793256 bytes Variable Size 1023411032 bytes Database Buffers 553648128 bytes Redo Buffers 7983104 bytes 數據庫裝載完畢。 數據庫已經打開。
對於數據庫的關閉,有四種不一樣的關閉選項。
1)shutdown normal
shutdown normal是shutdown命令的默認選項。也就是說,若是用戶發出shutdown命令,即執行shutdown normal命令。
發出該命令後,任何新的鏈接都將再也不容許鏈接到數據庫。在數據庫關閉以前,oracle將等待目前鏈接的全部用戶都從數據庫中退出後纔開始關閉數據庫。採用這種方式關閉數據庫,在下一次啓動時不須要進行任何的實例恢復。但須要注意的是,採用這種方式時,也許關閉一個數據庫須要幾天或更長的時間。
2)shutdown immediate
shutdown immediate是經常使用的一種關閉數據庫的方式。若即想很快地關閉數據庫,又想讓數據庫「乾淨」的關閉,則常採用這種方式。
發出該命令後,當前正在被oracle處理的SQL語句當即中斷,系統中任何沒有提交的事務所有回滾。若是系統中存在一個很長的未提交的事務,那麼採用這種方式關閉數據庫也須要一段時間(該事務回滾時間)。系統不會等待鏈接到數據庫的全部用戶退出系統,而會強行回滾當前全部的活動事務,而後斷開全部的鏈接用戶。
3)shutdown transactional
shutdown transactional 命令經常使用來計劃關閉數據庫,它會等待當前鏈接到系統且正在活動的事務執行完畢,運行該命令後,任何新的鏈接和事務都是不容許的。它全部活動的事務執行完成後,數據庫將以和shutdown immediate一樣的方式關閉數據庫。
4)shutdown abort
shutdown abort是關閉數據庫方式的最後選擇,是在沒有任何辦法關閉數據庫的狀況下不得不採用的方式,通常不要採用。在下列狀況出現時能夠考慮採用這種方式關閉數據庫。
在啓動數據庫實例時遇到問題。
發出該命令後,全部正在運行的SQL語句將當即停止,全部未提交的事務將不回滾,oracle也不等待目前鏈接到數據庫的用戶退出系統;下一次啓動數據庫時須要實例恢復,所以,下一次啓動可能比平時須要更多的時間。
在關閉數據庫時最好使用shutdown immediate方式,由於這種方式安全且相對較快。不是萬不得已不要使用shutdown abort 方式,由於這種方式會形成數據丟失,而且恢復數據庫也須要較長時間。
當oracle數據庫實例啓動完成後,爲了使客戶端用戶能鏈接到oracle實例,DBA還須要在oracle所在的服務器上使用lsnrctl命令啓動監聽進程。若是數據庫實例關閉,通常也要關閉監聽進程。
啓動監聽是oracle用戶在操做系統下執行的命令,能夠直接在lsnrctl後加參數,也可在該命令提示符後進行操做,具體以下:
[oracle@oracle ~]$ lsnrctl #執行該命令 LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 25-9月 -2019 21:59:04 Copyright (c) 1991, 2016, Oracle. All rights reserved. 歡迎來到LSNRCTL, 請鍵入"help"以得到信息。 LSNRCTL> start #啓動監聽 啓動/u01/app/oracle/product/12.2.0/dbhome_1//bin/tnslsnr: 請稍候... TNSLSNR for Linux: Version 12.2.0.1.0 - Production 系統參數文件爲/u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora 寫入/u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml的日誌信息 監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521))) 監聽: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) 正在鏈接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521))) LISTENER 的 STATUS ------------------------ 別名 LISTENER 版本 TNSLSNR for Linux: Version 12.2.0.1.0 - Production 啓動日期 25-9月 -2019 21:59:12 正常運行時間 0 天 0 小時 0 分 0 秒 跟蹤級別 off 安全性 ON: Local OS Authentication SNMP OFF 監聽程序參數文件 /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora 監聽程序日誌文件 /u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml 監聽端點概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) 監聽程序不支持服務 命令執行成功
也能夠直接使用如下命令「來啓動監聽:
[oracle@oracle ~]$ lsnrctl start #啓動監聽
[oracle@oracle ~]$ lsnrctl stop #關閉監聽 LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 25-9月 -2019 22:00:31 Copyright (c) 1991, 2016, Oracle. All rights reserved. 正在鏈接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521))) 命令執行成功
———————— 本文至此結束,感謝閱讀 ————————