您好,登錄后才能下訂單哦!
在計算機信息安全領域中,數據庫系統無疑有著舉足輕重的地位。比如:SQL Server、MySQL、DB2、Oracle等,都是比較知名的數據庫管理軟件,由于Oracle數據庫的安全性,所以在一些比較重要的場合被普遍使用,比如:電信、銀行、政府部門等。
本次博文以Oracle 12c數據庫的64位企業版為例,學習如何在Centos 操作系統中的安裝和基本配置,包括安裝的準備等。
博文大綱:
一、安裝Oracle 12c
二、創建Oracle 12c數據庫
三、Oracle 12c數據庫的啟動與關閉
四、將Oracle數據庫設置為開機自啟動
由于本次安裝Oracle 12c軟件是在CentOS 7系統上實現的,那么首次安裝CentOS 7操作系統有幾點要求:
Oracle數據庫是一個相對龐大的應用軟件,對服務器的系統類型、內存和交換分區、硬盤空阿金、內核參數、軟件環境、用戶環境等都有相應的要求。只要滿足了這些必備的條件,才能確保Oracle 12c安裝成功并穩定運行。
Oracle 12c明確支持的Linux操作系統包括Oracle Linux 7、Oracle Linux 6、Oracle Linux 5、Red Hat Enterprise Linux 7、Red Hat Enterprise Linux 6、Red Hat Enterprise Linux 5等,因為Red Hat Enterprise 和CentOS屬于同步并行的操作系統,所以Oracle 12 c同樣支持CentOS 7、CentOS 6、CentOS 5操作系統。在其他Linux系統中安裝時,個別軟件或配置文件可能需要進行適當的調整。
[root@localhost ~]# cat /etc/centos-release //查看系統版本信息
CentOS Linux release 7.5.1804 (Core)
[root@localhost ~]# uname -r //查看系統內核信息
3.10.0-862.el7.x86_64
Linux操作系統要求:
如果交換分區空間不足的話,可以使用以下方式擴展交換分區
[root@localhost ~]# dd if=/dev/zero of=/swap_file bs=1024 count=2097152
//這是擴展了2GB的交換分區,2097152除以1024等于2048,所以是2GB
[root@localhost ~]# mkswap /swap_file
[root@localhost ~]# swapon /swap_file
//完成之后,再次查詢就會發現交換分區多了2GB的空間
[root@localhost ~]# grep MemTotal /proc/meminfo
MemTotal: 7992344 kB
[root@localhost ~]# grep SwapTotal /proc/meminfo
SwapTotal: 18568716 kB //交換分區空間及內存空間已經滿足要求
對于Oracle 12c數據庫,若程序文件和數據文件安裝在同一分區,則該分區硬盤空間的最要要求為企業級為6.4G,標準版6.1G;除此之外,還應確保/tmp目錄的可用空間不少于1G。總的來說,建議安裝Oracle 12c準備至少15G的硬盤空間。
[root@localhost ~]# df -hT /tmp //查看/tmp目錄的磁盤使用情況
文件系統 類型 容量 已用 可用 已用% 掛載點
/dev/mapper/centos-root xfs 50G 21G 30G 42% /
//很明顯,滿足了要求
安裝Oracle數據庫前,要求規劃好主機名和IP。服務器的主機名、IP地址應提前確認無誤,一旦Oracle數據庫安裝完成,建議不要輕易的修改主機名,否則會導致數據庫啟動失敗。方法如下:
[root@localhost ~]# sed -i '1c oracle' /etc/hostname
//設置主機名為oracle
[root@localhost ~]# echo -e "192.168.1.1 oracle" >> /etc/hosts
//添加主機名與IP地址的對應關系
Oracle 12c的安裝過程通常是在圖形界面中進行,因此建議使用已安裝有GNOME中文桌面環境的CentOS服務器,軟件開發工具當然是必不可少的,應使用yum方式安裝以下必要的軟件環境。
[root@localhost ~]# yum -y install binutils compat-* gcc gcc-c++ glibc glibc-devel ksh \
libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat \
unixODBC unixODBC-devel
//使用本地光盤或者網絡yum都可以
Oracle 12c自身集成了Java運行環境,但安裝界面對中文的支持并不完善,因此若希望使用中文的Oracle安裝界面,建議提前安裝好Java軟件包。
為了確保數據庫運行穩定,Oracle 12c針對Linux內核參數,進程會話限制提出了一些要求,其中一部分設置可以在安裝過程中自動檢測并進行修復,但并一定很完整,所以最好的做法是根據安裝文檔提前進行配置。
內核參數調整體現在/etc/sysctl.conf文件中,主要包括與內存調度、端口范圍、打開文件數、I/O請求等相關的一些設置,相關數值不可低于安裝要求。如下:
[root@localhost ~]# vim /etc/sysctl.conf
……………… //省略部分內容,在末尾添加即可!
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_max = 4194304
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
[root@localhost ~]# sysctl -p //重新加載配置文件
各參數詳解:
- fs.aio-max-nr:此參數限制并發未完成的請求,應該設置避免I/O子系統故障;
- fs.file-max:該參數決定了系統中所允許的最大可以打開的文件數量;
- kernel.shmall:該參數控制可以使用的共享內存的總頁數;.
- kernel.shmmax:是核心參數中最重要的參數之一,用于定義單個共享內存段的最大值。
建議:
32位linux系統:可取最大值為4GB(4294967296bytes)-1byte,即4294967295。建議值為多于內存的一半,所以如果是32為系統,一般可取值為4294967295。
64位linux系統:可取的最大值為物理內存值-1byte,建議值為多于物理內存的一半,例如,如果為12GB物理內存,可取1210241024*1024-1=12884901887。- kernel.shmmni:該參數是共享內存段的最大數量。shmmni缺省值4096,一般肯定是夠用了。
- kernel.sem:
以kernel.sem = 250 32000 100 128為例:
250是參數semmsl的值,表示一個信號量集合中能夠包含的信號量最大數目。
32000是參數semmns的值,表示系統內可允許的信號量最大數目。
100是參數semopm的值,表示單個semopm()調用在一個信號量集合上可以執行的操作數量。
128是參數semmni的值,表示系統信號量集合總數。- net.ipv4.ip_local_port_range:表示應用程序可使用的IPv4端口范圍;
- net.core.rmem_default:表示套接字接收緩沖區大小的缺省值;
- net.core.rmem_max:表示套接字接收緩沖區大小的最大值;
- net.core.wmem_default:表示套接字發送緩沖區大小的缺省值;
- net.core.wmem_max:表示套接字發送緩沖區大小的最大值;
Oracle 12c需要固定的運行用戶oracle、安裝組oinstall、管理組dba,這些賬號應提前創建好。用于存放Oracle程序及數據庫文件的基本目錄也應提前創建好。
[root@localhost ~]# groupadd oinstall
[root@localhost ~]# groupadd dba
[root@localhost ~]# useradd -g oinstall -G dba oracle
[root@localhost ~]# echo '123456' | passwd --stdin oracle
更改用戶 oracle 的密碼 。
passwd:所有的身份驗證令牌已經成功更新。
[root@localhost ~]# mkdir -p /u01/app/oracle
[root@localhost ~]# chown -R oracle:oinstall /u01/app
[root@localhost ~]# chmod -R 775 /u01/app/oracle
Oracle 12c的安裝任務應以運行用戶oracle的身份執行,需適當調整oracle用戶的環境配置以滿足需求。
[root@localhost ~]# vim /home/oracle/.bash_profile
……………… //省略部分內容,在末尾添加即可!
umask 022
ORACLE_BASE=/u01/app/oracle #oracle基本目錄
ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1/ #安裝家目錄
ORACLE_SID=orcl #定義數據庫實例名稱
NLS_LANG="SIMPLIFIED CHINESE_CHINA".UTF8 #是針對Oracle語言、地區、字符集的設置
PATH=$PATH:$ORACLE_HOME/bin
LANG=zh_CN.UTF-8 #LANG是針對Linux系統的語言、地區、字符集的設置。
DISPLAY=:0.0 #在哪個終端可以使用圖形
export PATH LANG NLS_LANG ORACLE_BASE ORACLE_HOME ORACLE_SID DISPLAY #將變量導出為全局變量
進程會話限制可以采用pam_limits認證模塊來實現,通過修改登錄程序login的PAM設置以啟用該認證,然后修改/etc/security/limits.conf 文件,使用戶oracle能夠打開的進程數、進程使用的文件數加大。
[root@localhost ~]# vim /etc/pam.d/login
……………… //省略部分內容,在末尾添加即可!
session required /lib/security/pam_limits.so
session required pam_limits.so
[root@localhost ~]# 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軟堆棧限制
配置oracle用戶資源限制,不配置也不會影響oracle數據庫的成功安裝,但是考慮到若有糟糕的sql語句對服務器資源的無限占用,導致長時間對用戶請求無響應,建議提前限制oracle用戶資源。
[root@localhost ~]# 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的中文官方網址是https://www.oracle.com/index.html 可以自行進行下載,也可通過本人提供的Oracle安裝包 進行安裝。
[root@oracle ~]# cd /
[root@oracle /]# unzip /root/linuxx64_12201_database.zip
//進入根目錄對下載的Oracle軟件包進行解壓
[root@oracle /]# ls database/ //解壓之后生成database目錄
install response rpm runInstaller sshsetup stage welcome.html
授權允許用戶oracle使用圖形終端,例如執行:xhost + oracle@localhost,表示允許用戶oracle從本機訪問,或者執行xhost + 表示取消所有限制,這里執行xhost +即可。
[root@oracle /]# xhost + //一定要以root用戶的身份在圖形環境中操作
[root@oracle /]# su - oracle //切換到oracle用戶
[oracle@oracle ~]$ cd /database/
[oracle@oracle database]$ export DISPLAY=:0.0 設置DISPLAY環境變量
[oracle@oracle database]$ ./runInstaller //執行安裝腳本
執行完成后會彈出圖形化界面,進行以下操作:
執行過程中,會有這樣的提示信息:
[root@oracle ~]# /u01/app/oraInventory/orainstRoot.sh
[root@oracle ~]# /u01/app/oracle/product/12.2.0/dbhome_1/root.sh
//執行第二個腳本,遇到提示,一路回車即可!
Web頁面訪問如下:
接下來使用命令行進行登錄訪問:
首先需要解決sqlplus命令行方向鍵不能使用的問題,方法如下:
獲取rlwrap軟件包
[root@oracle ~]# yum -y install ncurses* readline* //安裝軟件包所需依賴
[root@oracle ~]# tar zxf rlwrap-0.30.tar.gz.zip -C /usr/src
[root@oracle ~]# cd /usr/src/rlwrap-0.30/
[root@oracle rlwrap-0.30]# ./configure && make && make install
//使用root身份進行編譯安裝,安裝完成后即可使用!
[oracle@oracle ~]$ rlwrap sqlplus "/ as sysdba"
SQL*Plus: Release 12.2.0.1.0 Production on 星期二 11月 26 10:51:44 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
連接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL>
這樣登錄到數據庫庫時,就可以使用方向鍵了。但是這樣每次登錄數據庫時都需要使用 rlwrap 命令稍嫌麻煩,可以進行一下操作:
[oracle@oracle ~]$ vim /home/oracle/.bash_profile
……………… //在末尾添加以下內容
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
//就是將命令創建別名而已
退出當前oracle用戶,重新登錄才可使用。
[oracle@oracle ~]$ sqlplus sys/123456 as sysdba
//使用命令行登錄
SQL*Plus: Release 12.2.0.1.0 Production on 星期二 11月 26 10:57:41 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
連接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL>
或者
[oracle@oracle ~]$ sqlplus /nolog
SQL*Plus: Release 12.2.0.1.0 Production on 星期二 11月 26 10:59:10 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
SQL> conn sys/123456 as sysdba
已連接。
//也可以使用這樣方式登錄Oracle數據庫
如果在安裝oracle產品時不創建數據庫,那么要使用oracle系統就必須先創建數據庫。如果在安裝oracle時選擇建立數據庫,也可以再創建第二個數據庫(不過為了使oracle數據庫充分利用系統資源,建議一個服務器上只創建一個數據庫)。
創建數據庫的方法有兩種:通過圖形化界面,或者采用“CREATE DATABASE”命令,這里說一下圖形化界面創建數據庫的方法:
[oracle@oracle ~]$ dbca //使用oracle用戶創建數據庫
//執行這條命令就會彈出圖形化界面創建數據庫
如果沒有彈出窗口,可以參考前面的步驟,以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 ~]$ sqlplus / as sysdba //以oracle用戶登錄數據庫
SQL*Plus: Release 12.2.0.1.0 Production on 星期二 11月 26 11:18:36 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
連接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> startup nomount
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)))
命令執行成功
注意先啟動監聽再啟動數據庫!
[root@oracle ~]# vim /etc/oratab
……………… //修改以下內容
orcl:/u01/app/oracle/product/12.2.0/dbhome_1:Y
[root@oracle ~]# vim /etc/rc.local
su - oracle -c 'dbstart' //啟動數據庫
su - oracle -c 'lsnrctl start' //啟用監聽進程
[root@oracle ~]# chmod +x /etc/rc.d/rc.local
//添加執行權限
重啟之后,進行驗證:
[root@oracle ~]# netstat -anpt | grep 5500 //oracle數據庫的監聽端口
tcp6 0 0 :::5500 :::* LISTEN 2144/tnslsnr
[root@oracle ~]# netstat -anpt | grep 1521 //oracle數據庫監聽進程
tcp 0 0 192.168.1.1:24251 192.168.1.1:1521 ESTABLISHED 1816/ora_lreg_orcl
tcp6 0 0 :::1521 :::* LISTEN 2144/tnslsnr
tcp6 0 0 192.168.1.1:1521 192.168.1.1:24251 ESTABLISHED 2144/tnslsnr
tcp6 0 0 192.168.1.1:1521 192.168.1.1:24143 TIME_WAIT -
———————— 本文至此結束,感謝閱讀 ————————
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。