在計(jì)算機(jī)信息安全領(lǐng)域中,數(shù)據(jù)庫(kù)系統(tǒng)無(wú)疑有著舉足輕重的地位。比如:SQL Server、MySQL、DB2、Oracle等,都是比較知名的數(shù)據(jù)庫(kù)管理軟件,由于Oracle數(shù)據(jù)庫(kù)的安全性,所以在一些比較重要的場(chǎng)合被普遍使用,比如:電信、銀行、政府部門(mén)等。
創(chuàng)新互聯(lián)的客戶來(lái)自各行各業(yè),為了共同目標(biāo),我們?cè)诠ぷ魃厦芮信浜?,從?chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對(duì)我們的要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。專業(yè)領(lǐng)域包括網(wǎng)站建設(shè)、做網(wǎng)站、電商網(wǎng)站開(kāi)發(fā)、微信營(yíng)銷(xiāo)、系統(tǒng)平臺(tái)開(kāi)發(fā)。
本次博文以O(shè)racle 12c數(shù)據(jù)庫(kù)的64位企業(yè)版為例,學(xué)習(xí)如何在Centos 操作系統(tǒng)中的安裝和基本配置,包括安裝的準(zhǔn)備等。
博文大綱:
一、安裝Oracle 12c
二、創(chuàng)建Oracle 12c數(shù)據(jù)庫(kù)
三、Oracle 12c數(shù)據(jù)庫(kù)的啟動(dòng)與關(guān)閉
四、將Oracle數(shù)據(jù)庫(kù)設(shè)置為開(kāi)機(jī)自啟動(dòng)
由于本次安裝Oracle 12c軟件是在CentOS 7系統(tǒng)上實(shí)現(xiàn)的,那么首次安裝CentOS 7操作系統(tǒng)有幾點(diǎn)要求:
Oracle數(shù)據(jù)庫(kù)是一個(gè)相對(duì)龐大的應(yīng)用軟件,對(duì)服務(wù)器的系統(tǒng)類型、內(nèi)存和交換分區(qū)、硬盤(pán)空阿金、內(nèi)核參數(shù)、軟件環(huán)境、用戶環(huán)境等都有相應(yīng)的要求。只要滿足了這些必備的條件,才能確保Oracle 12c安裝成功并穩(wěn)定運(yùn)行。
Oracle 12c明確支持的Linux操作系統(tǒng)包括Oracle Linux 7、Oracle Linux 6、Oracle Linux 5、Red Hat Enterprise Linux 7、Red Hat Enterprise Linux 6、Red Hat Enterprise Linux 5等,因?yàn)镽ed Hat Enterprise 和CentOS屬于同步并行的操作系統(tǒng),所以O(shè)racle 12 c同樣支持CentOS 7、CentOS 6、CentOS 5操作系統(tǒng)。在其他Linux系統(tǒng)中安裝時(shí),個(gè)別軟件或配置文件可能需要進(jìn)行適當(dāng)?shù)恼{(diào)整。
[root@localhost ~]# cat /etc/centos-release //查看系統(tǒng)版本信息
CentOS Linux release 7.5.1804 (Core)
[root@localhost ~]# uname -r //查看系統(tǒng)內(nèi)核信息
3.10.0-862.el7.x86_64
Linux操作系統(tǒng)要求:
如果交換分區(qū)空間不足的話,可以使用以下方式擴(kuò)展交換分區(qū)
[root@localhost ~]# dd if=/dev/zero of=/swap_file bs=1024 count=2097152
//這是擴(kuò)展了2GB的交換分區(qū),2097152除以1024等于2048,所以是2GB
[root@localhost ~]# mkswap /swap_file
[root@localhost ~]# swapon /swap_file
//完成之后,再次查詢就會(huì)發(fā)現(xiàn)交換分區(qū)多了2GB的空間
[root@localhost ~]# grep MemTotal /proc/meminfo
MemTotal: 7992344 kB
[root@localhost ~]# grep SwapTotal /proc/meminfo
SwapTotal: 18568716 kB //交換分區(qū)空間及內(nèi)存空間已經(jīng)滿足要求
對(duì)于Oracle 12c數(shù)據(jù)庫(kù),若程序文件和數(shù)據(jù)文件安裝在同一分區(qū),則該分區(qū)硬盤(pán)空間的最要要求為企業(yè)級(jí)為6.4G,標(biāo)準(zhǔn)版6.1G;除此之外,還應(yīng)確保/tmp目錄的可用空間不少于1G??偟膩?lái)說(shuō),建議安裝Oracle 12c準(zhǔn)備至少15G的硬盤(pán)空間。
[root@localhost ~]# df -hT /tmp //查看/tmp目錄的磁盤(pán)使用情況
文件系統(tǒng) 類型 容量 已用 可用 已用% 掛載點(diǎn)
/dev/mapper/centos-root xfs 50G 21G 30G 42% /
//很明顯,滿足了要求
安裝Oracle數(shù)據(jù)庫(kù)前,要求規(guī)劃好主機(jī)名和IP。服務(wù)器的主機(jī)名、IP地址應(yīng)提前確認(rèn)無(wú)誤,一旦Oracle數(shù)據(jù)庫(kù)安裝完成,建議不要輕易的修改主機(jī)名,否則會(huì)導(dǎo)致數(shù)據(jù)庫(kù)啟動(dòng)失敗。方法如下:
[root@localhost ~]# sed -i '1c oracle' /etc/hostname
//設(shè)置主機(jī)名為oracle
[root@localhost ~]# echo -e "192.168.1.1 oracle" >> /etc/hosts
//添加主機(jī)名與IP地址的對(duì)應(yīng)關(guān)系
Oracle 12c的安裝過(guò)程通常是在圖形界面中進(jìn)行,因此建議使用已安裝有GNOME中文桌面環(huán)境的CentOS服務(wù)器,軟件開(kāi)發(fā)工具當(dāng)然是必不可少的,應(yīng)使用yum方式安裝以下必要的軟件環(huán)境。
[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
//使用本地光盤(pán)或者網(wǎng)絡(luò)yum都可以
Oracle 12c自身集成了Java運(yùn)行環(huán)境,但安裝界面對(duì)中文的支持并不完善,因此若希望使用中文的Oracle安裝界面,建議提前安裝好Java軟件包。
為了確保數(shù)據(jù)庫(kù)運(yùn)行穩(wěn)定,Oracle 12c針對(duì)Linux內(nèi)核參數(shù),進(jìn)程會(huì)話限制提出了一些要求,其中一部分設(shè)置可以在安裝過(guò)程中自動(dòng)檢測(cè)并進(jìn)行修復(fù),但并一定很完整,所以最好的做法是根據(jù)安裝文檔提前進(jìn)行配置。
內(nèi)核參數(shù)調(diào)整體現(xiàn)在/etc/sysctl.conf文件中,主要包括與內(nèi)存調(diào)度、端口范圍、打開(kāi)文件數(shù)、I/O請(qǐng)求等相關(guān)的一些設(shè)置,相關(guān)數(shù)值不可低于安裝要求。如下:
[root@localhost ~]# vim /etc/sysctl.conf
……………… //省略部分內(nèi)容,在末尾添加即可!
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 //重新加載配置文件
各參數(shù)詳解:
- fs.aio-max-nr:此參數(shù)限制并發(fā)未完成的請(qǐng)求,應(yīng)該設(shè)置避免I/O子系統(tǒng)故障;
- fs.file-max:該參數(shù)決定了系統(tǒng)中所允許的最大可以打開(kāi)的文件數(shù)量;
- kernel.shmall:該參數(shù)控制可以使用的共享內(nèi)存的總頁(yè)數(shù);.
- kernel.shmmax:是核心參數(shù)中最重要的參數(shù)之一,用于定義單個(gè)共享內(nèi)存段的最大值。
建議:
32位linux系統(tǒng):可取最大值為4GB(4294967296bytes)-1byte,即4294967295。建議值為多于內(nèi)存的一半,所以如果是32為系統(tǒng),一般可取值為4294967295。
64位linux系統(tǒng):可取的最大值為物理內(nèi)存值-1byte,建議值為多于物理內(nèi)存的一半,例如,如果為12GB物理內(nèi)存,可取1210241024*1024-1=12884901887。- kernel.shmmni:該參數(shù)是共享內(nèi)存段的最大數(shù)量。shmmni缺省值4096,一般肯定是夠用了。
- kernel.sem:
以kernel.sem = 250 32000 100 128為例:
250是參數(shù)semmsl的值,表示一個(gè)信號(hào)量集合中能夠包含的信號(hào)量最大數(shù)目。
32000是參數(shù)semmns的值,表示系統(tǒng)內(nèi)可允許的信號(hào)量最大數(shù)目。
100是參數(shù)semopm的值,表示單個(gè)semopm()調(diào)用在一個(gè)信號(hào)量集合上可以執(zhí)行的操作數(shù)量。
128是參數(shù)semmni的值,表示系統(tǒng)信號(hào)量集合總數(shù)。- net.ipv4.ip_local_port_range:表示應(yīng)用程序可使用的IPv4端口范圍;
- net.core.rmem_default:表示套接字接收緩沖區(qū)大小的缺省值;
- net.core.rmem_max:表示套接字接收緩沖區(qū)大小的最大值;
- net.core.wmem_default:表示套接字發(fā)送緩沖區(qū)大小的缺省值;
- net.core.wmem_max:表示套接字發(fā)送緩沖區(qū)大小的最大值;
Oracle 12c需要固定的運(yùn)行用戶oracle、安裝組oinstall、管理組dba,這些賬號(hào)應(yīng)提前創(chuàng)建好。用于存放Oracle程序及數(shù)據(jù)庫(kù)文件的基本目錄也應(yīng)提前創(chuàng)建好。
[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:所有的身份驗(yàn)證令牌已經(jīng)成功更新。
[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的安裝任務(wù)應(yīng)以運(yùn)行用戶oracle的身份執(zhí)行,需適當(dāng)調(diào)整oracle用戶的環(huán)境配置以滿足需求。
[root@localhost ~]# vim /home/oracle/.bash_profile
……………… //省略部分內(nèi)容,在末尾添加即可!
umask 022
ORACLE_BASE=/u01/app/oracle #oracle基本目錄
ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1/ #安裝家目錄
ORACLE_SID=orcl #定義數(shù)據(jù)庫(kù)實(shí)例名稱
NLS_LANG="SIMPLIFIED CHINESE_CHINA".UTF8 #是針對(duì)Oracle語(yǔ)言、地區(qū)、字符集的設(shè)置
PATH=$PATH:$ORACLE_HOME/bin
LANG=zh_CN.UTF-8 #LANG是針對(duì)Linux系統(tǒng)的語(yǔ)言、地區(qū)、字符集的設(shè)置。
DISPLAY=:0.0 #在哪個(gè)終端可以使用圖形
export PATH LANG NLS_LANG ORACLE_BASE ORACLE_HOME ORACLE_SID DISPLAY #將變量導(dǎo)出為全局變量
進(jìn)程會(huì)話限制可以采用pam_limits認(rèn)證模塊來(lái)實(shí)現(xiàn),通過(guò)修改登錄程序login的PAM設(shè)置以啟用該認(rèn)證,然后修改/etc/security/limits.conf 文件,使用戶oracle能夠打開(kāi)的進(jìn)程數(shù)、進(jìn)程使用的文件數(shù)加大。
[root@localhost ~]# vim /etc/pam.d/login
……………… //省略部分內(nèi)容,在末尾添加即可!
session required /lib/security/pam_limits.so
session required pam_limits.so
[root@localhost ~]# vim /etc/security/limits.conf
……………… //省略部分內(nèi)容,在末尾添加即可!
oracle soft nproc 2047 #設(shè)置進(jìn)程數(shù)軟限制
oracle hard nproc 16384 #設(shè)置進(jìn)程數(shù)硬限制
oracle soft nofile 1024 #設(shè)置文件數(shù)軟限制
oracle hard nofile 65536 #設(shè)置文件數(shù)硬限制
oracle soft stack 10240 # Oracle軟堆棧限制
配置oracle用戶資源限制,不配置也不會(huì)影響oracle數(shù)據(jù)庫(kù)的成功安裝,但是考慮到若有糟糕的sql語(yǔ)句對(duì)服務(wù)器資源的無(wú)限占用,導(dǎo)致長(zhǎng)時(shí)間對(duì)用戶請(qǐng)求無(wú)響應(yīng),建議提前限制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
準(zhǔn)備工作完成后重新啟動(dòng)系統(tǒng),重啟之后,再次檢查之前的配置是否生效。
Oracle的中文官方網(wǎng)址是https://www.oracle.com/index.html 可以自行進(jìn)行下載,也可通過(guò)本人提供的Oracle安裝包 進(jìn)行安裝。
[root@oracle ~]# cd /
[root@oracle /]# unzip /root/linuxx64_12201_database.zip
//進(jìn)入根目錄對(duì)下載的Oracle軟件包進(jìn)行解壓
[root@oracle /]# ls database/ //解壓之后生成database目錄
install response rpm runInstaller sshsetup stage welcome.html
授權(quán)允許用戶oracle使用圖形終端,例如執(zhí)行:xhost + oracle@localhost,表示允許用戶oracle從本機(jī)訪問(wèn),或者執(zhí)行xhost + 表示取消所有限制,這里執(zhí)行xhost +即可。
[root@oracle /]# xhost + //一定要以root用戶的身份在圖形環(huán)境中操作
[root@oracle /]# su - oracle //切換到oracle用戶
[oracle@oracle ~]$ cd /database/
[oracle@oracle database]$ export DISPLAY=:0.0 設(shè)置DISPLAY環(huán)境變量
[oracle@oracle database]$ ./runInstaller //執(zhí)行安裝腳本
執(zhí)行完成后會(huì)彈出圖形化界面,進(jìn)行以下操作:
執(zhí)行過(guò)程中,會(huì)有這樣的提示信息:
[root@oracle ~]# /u01/app/oraInventory/orainstRoot.sh
[root@oracle ~]# /u01/app/oracle/product/12.2.0/dbhome_1/root.sh
//執(zhí)行第二個(gè)腳本,遇到提示,一路回車(chē)即可!
Web頁(yè)面訪問(wèn)如下:
接下來(lái)使用命令行進(jìn)行登錄訪問(wèn):
首先需要解決sqlplus命令行方向鍵不能使用的問(wèn)題,方法如下:
獲取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身份進(jìn)行編譯安裝,安裝完成后即可使用!
[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>
這樣登錄到數(shù)據(jù)庫(kù)庫(kù)時(shí),就可以使用方向鍵了。但是這樣每次登錄數(shù)據(jù)庫(kù)時(shí)都需要使用 rlwrap 命令稍嫌麻煩,可以進(jìn)行一下操作:
[oracle@oracle ~]$ vim /home/oracle/.bash_profile
……………… //在末尾添加以下內(nèi)容
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
//就是將命令創(chuàng)建別名而已
退出當(dāng)前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數(shù)據(jù)庫(kù)
如果在安裝oracle產(chǎn)品時(shí)不創(chuàng)建數(shù)據(jù)庫(kù),那么要使用oracle系統(tǒng)就必須先創(chuàng)建數(shù)據(jù)庫(kù)。如果在安裝oracle時(shí)選擇建立數(shù)據(jù)庫(kù),也可以再創(chuàng)建第二個(gè)數(shù)據(jù)庫(kù)(不過(guò)為了使oracle數(shù)據(jù)庫(kù)充分利用系統(tǒng)資源,建議一個(gè)服務(wù)器上只創(chuàng)建一個(gè)數(shù)據(jù)庫(kù))。
創(chuàng)建數(shù)據(jù)庫(kù)的方法有兩種:通過(guò)圖形化界面,或者采用“CREATE DATABASE”命令,這里說(shuō)一下圖形化界面創(chuàng)建數(shù)據(jù)庫(kù)的方法:
[oracle@oracle ~]$ dbca //使用oracle用戶創(chuàng)建數(shù)據(jù)庫(kù)
//執(zhí)行這條命令就會(huì)彈出圖形化界面創(chuàng)建數(shù)據(jù)庫(kù)
如果沒(méi)有彈出窗口,可以參考前面的步驟,以root用戶運(yùn)行“xhost +”命令,再以oracle身份運(yùn)行“export DISPLAY=:0.0”命令。
彈出的圖形化界面如下:
數(shù)據(jù)庫(kù)已經(jīng)創(chuàng)建完成!
oracle數(shù)據(jù)庫(kù)的啟動(dòng)與關(guān)閉是日常工作之一。對(duì)于大多數(shù)oracle DBA來(lái)說(shuō),啟動(dòng)和關(guān)閉oracle數(shù)據(jù)庫(kù)最常用的方式是在命令行方式下執(zhí)行。
要啟動(dòng)和關(guān)閉數(shù)據(jù)庫(kù),必須具有Oracle管理員權(quán)限的用戶登錄,通常以具有SYSDBA權(quán)限的用戶登錄。
啟動(dòng)一個(gè)數(shù)據(jù)庫(kù)需要三個(gè)步驟:①啟動(dòng)oracle實(shí)例(非裝載階段);②由實(shí)例裝載數(shù)據(jù)庫(kù)(裝載階段);③打開(kāi)數(shù)據(jù)庫(kù)(打開(kāi)階段)。
在startup命令中,可以使用不同的選項(xiàng)來(lái)控制數(shù)據(jù)庫(kù)的不同啟動(dòng)步驟。
1)startup nomount(該命令不常用)
nomount選項(xiàng)僅僅啟動(dòng)一個(gè)oracle實(shí)例,讀取init.ora初始化參數(shù)文件、啟動(dòng)后臺(tái)進(jìn)程、初始化SGA。當(dāng)實(shí)例啟動(dòng)后,系統(tǒng)將顯示一個(gè)SGA內(nèi)存結(jié)構(gòu)和大小的列表,如下:
[oracle@oracle ~]$ sqlplus / as sysdba //以oracle用戶登錄數(shù)據(jù)庫(kù)
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(某些時(shí)候會(huì)用到該命令)
startup mount 命令啟動(dòng)實(shí)例并且裝載數(shù)據(jù)庫(kù),但是沒(méi)有打開(kāi)數(shù)據(jù)庫(kù)。oracle系統(tǒng)讀取控制文件中關(guān)于數(shù)據(jù)文件和重做日志文件的內(nèi)容,但并不打開(kāi)該文件。這種打開(kāi)方式常在數(shù)據(jù)庫(kù)維護(hù)操作中使用,如對(duì)數(shù)據(jù)文件的更名、改變重做日志及打開(kāi)歸檔模式等。在這種打開(kāi)方式下,除了可以看到SGA系統(tǒng)列表以外,系統(tǒng)還會(huì)給出“數(shù)據(jù)庫(kù)裝載完畢”的提示。
SQL> alter database mount;
//由于上面已經(jīng)執(zhí)行了startup nomount命令,所以再更改它的狀態(tài),就需要使用該命令
3)startup(正常時(shí)使用的命令)
startup命令完成啟動(dòng)實(shí)例,裝載數(shù)據(jù)庫(kù)和打開(kāi)數(shù)據(jù)庫(kù)三個(gè)步驟。此時(shí),數(shù)據(jù)庫(kù)使數(shù)據(jù)文件和重做日志文件在線,通常還會(huì)請(qǐng)求一個(gè)或者多個(gè)回滾段;系統(tǒng)除了可以看到前面startup mount 方式下的所有提示外,還會(huì)給出一個(gè)“數(shù)據(jù)庫(kù)已經(jīng)打開(kāi)”的提示;數(shù)據(jù)庫(kù)系統(tǒng)處于正常的工作狀態(tài),可以接收用戶的請(qǐng)求。
如果采用startup nomount或者startup mount的數(shù)據(jù)庫(kù)打開(kāi)方式,必須采用alter database命令來(lái)執(zhí)行裝載或打開(kāi)數(shù)據(jù)庫(kù)的操作。
前面兩條命令都執(zhí)行過(guò)了(startup nomount和alter database mount),所以這里再執(zhí)行下面命令,數(shù)據(jù)庫(kù)就可以說(shuō)是正確啟動(dòng)完成了。如下:
SQL> alter database open;
正常來(lái)說(shuō),可以直接使用下面一條命令來(lái)正常啟動(dòng)數(shù)據(jù)庫(kù),如下:
SQL> startup //在數(shù)據(jù)庫(kù)關(guān)閉狀態(tài)下執(zhí)行該命令,數(shù)據(jù)庫(kù)會(huì)依次啟動(dòng)、裝載、打開(kāi)。
ORACLE 例程已經(jīng)啟動(dòng)。
Total System Global Area 1593835520 bytes
Fixed Size 8793256 bytes
Variable Size 1023411032 bytes
Database Buffers 553648128 bytes
Redo Buffers 7983104 bytes
數(shù)據(jù)庫(kù)裝載完畢。
數(shù)據(jù)庫(kù)已經(jīng)打開(kāi)。
對(duì)于數(shù)據(jù)庫(kù)的關(guān)閉,有四種不同的關(guān)閉選項(xiàng)。
1)shutdown normal
shutdown normal是shutdown命令的默認(rèn)選項(xiàng)。也就是說(shuō),如果用戶發(fā)出shutdown命令,即執(zhí)行shutdown normal命令。
發(fā)出該命令后,任何新的連接都將不再允許連接到數(shù)據(jù)庫(kù)。在數(shù)據(jù)庫(kù)關(guān)閉之前,oracle將等待目前連接的所有用戶都從數(shù)據(jù)庫(kù)中退出后才開(kāi)始關(guān)閉數(shù)據(jù)庫(kù)。采用這種方式關(guān)閉數(shù)據(jù)庫(kù),在下一次啟動(dòng)時(shí)不需要進(jìn)行任何的實(shí)例恢復(fù)。但需要注意的是,采用這種方式時(shí),也許關(guān)閉一個(gè)數(shù)據(jù)庫(kù)需要幾天或更長(zhǎng)的時(shí)間。
2)shutdown immediate
shutdown immediate是常用的一種關(guān)閉數(shù)據(jù)庫(kù)的方式。若即想很快地關(guān)閉數(shù)據(jù)庫(kù),又想讓數(shù)據(jù)庫(kù)“干凈”的關(guān)閉,則常采用這種方式。
發(fā)出該命令后,當(dāng)前正在被oracle處理的SQL語(yǔ)句立即中斷,系統(tǒng)中任何沒(méi)有提交的事務(wù)全部回滾。如果系統(tǒng)中存在一個(gè)很長(zhǎng)的未提交的事務(wù),那么采用這種方式關(guān)閉數(shù)據(jù)庫(kù)也需要一段時(shí)間(該事務(wù)回滾時(shí)間)。系統(tǒng)不會(huì)等待連接到數(shù)據(jù)庫(kù)的所有用戶退出系統(tǒng),而會(huì)強(qiáng)行回滾當(dāng)前所有的活動(dòng)事務(wù),然后斷開(kāi)所有的連接用戶。
3)shutdown transactional
shutdown transactional 命令常用來(lái)計(jì)劃關(guān)閉數(shù)據(jù)庫(kù),它會(huì)等待當(dāng)前連接到系統(tǒng)且正在活動(dòng)的事務(wù)執(zhí)行完畢,運(yùn)行該命令后,任何新的連接和事務(wù)都是不允許的。它所有活動(dòng)的事務(wù)執(zhí)行完成后,數(shù)據(jù)庫(kù)將以和shutdown immediate同樣的方式關(guān)閉數(shù)據(jù)庫(kù)。
4)shutdown abort
shutdown abort是關(guān)閉數(shù)據(jù)庫(kù)方式的最后選擇,是在沒(méi)有任何辦法關(guān)閉數(shù)據(jù)庫(kù)的情況下不得不采用的方式,一般不要采用。在下列情況出現(xiàn)時(shí)可以考慮采用這種方式關(guān)閉數(shù)據(jù)庫(kù)。
在啟動(dòng)數(shù)據(jù)庫(kù)實(shí)例時(shí)遇到問(wèn)題。
發(fā)出該命令后,所有正在運(yùn)行的SQL語(yǔ)句將立即中止,所有未提交的事務(wù)將不回滾,oracle也不等待目前連接到數(shù)據(jù)庫(kù)的用戶退出系統(tǒng);下一次啟動(dòng)數(shù)據(jù)庫(kù)時(shí)需要實(shí)例恢復(fù),因此,下一次啟動(dòng)可能比平時(shí)需要更多的時(shí)間。
在關(guān)閉數(shù)據(jù)庫(kù)時(shí)最好使用shutdown immediate方式,因?yàn)檫@種方式安全且相對(duì)較快。不是萬(wàn)不得已不要使用shutdown abort 方式,因?yàn)檫@種方式會(huì)造成數(shù)據(jù)丟失,并且恢復(fù)數(shù)據(jù)庫(kù)也需要較長(zhǎng)時(shí)間。
當(dāng)oracle數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)完成后,為了使客戶端用戶能連接到oracle實(shí)例,DBA還需要在oracle所在的服務(wù)器上使用lsnrctl命令啟動(dòng)監(jiān)聽(tīng)進(jìn)程。如果數(shù)據(jù)庫(kù)實(shí)例關(guān)閉,一般也要關(guān)閉監(jiān)聽(tīng)進(jìn)程。
啟動(dòng)監(jiān)聽(tīng)是oracle用戶在操作系統(tǒng)下執(zhí)行的命令,可以直接在lsnrctl后加參數(shù),也可在該命令提示符后進(jìn)行操作,具體如下:
[oracle@oracle ~]$ lsnrctl //執(zhí)行該命令
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.
歡迎來(lái)到LSNRCTL, 請(qǐng)鍵入"help"以獲得信息。
LSNRCTL> start //啟動(dòng)監(jiān)聽(tīng)
啟動(dòng)/u01/app/oracle/product/12.2.0/dbhome_1//bin/tnslsnr: 請(qǐng)稍候...
TNSLSNR for Linux: Version 12.2.0.1.0 - Production
系統(tǒng)參數(shù)文件為/u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
寫(xiě)入/u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml的日志信息
監(jiān)聽(tīng): (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
監(jiān)聽(tīng): (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
啟動(dòng)日期 25-9月 -2019 21:59:12
正常運(yùn)行時(shí)間 0 天 0 小時(shí) 0 分 0 秒
跟蹤級(jí)別 off
安全性 ON: Local OS Authentication
SNMP OFF
監(jiān)聽(tīng)程序參數(shù)文件 /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
監(jiān)聽(tīng)程序日志文件 /u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
監(jiān)聽(tīng)端點(diǎn)概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
監(jiān)聽(tīng)程序不支持服務(wù)
命令執(zhí)行成功
也可以直接使用以下命令“來(lái)啟動(dòng)監(jiān)聽(tīng):
[oracle@oracle ~]$ lsnrctl start //啟動(dòng)監(jiān)聽(tīng)
[oracle@oracle ~]$ lsnrctl stop //關(guān)閉監(jiān)聽(tīng)
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)))
命令執(zhí)行成功
注意先啟動(dòng)監(jiān)聽(tīng)再啟動(dòng)數(shù)據(jù)庫(kù)!
[root@oracle ~]# vim /etc/oratab
……………… //修改以下內(nèi)容
orcl:/u01/app/oracle/product/12.2.0/dbhome_1:Y
[root@oracle ~]# vim /etc/rc.local
su - oracle -c 'dbstart' //啟動(dòng)數(shù)據(jù)庫(kù)
su - oracle -c 'lsnrctl start' //啟用監(jiān)聽(tīng)進(jìn)程
[root@oracle ~]# chmod +x /etc/rc.d/rc.local
//添加執(zhí)行權(quán)限
重啟之后,進(jìn)行驗(yàn)證:
[root@oracle ~]# netstat -anpt | grep 5500 //oracle數(shù)據(jù)庫(kù)的監(jiān)聽(tīng)端口
tcp6 0 0 :::5500 :::* LISTEN 2144/tnslsnr
[root@oracle ~]# netstat -anpt | grep 1521 //oracle數(shù)據(jù)庫(kù)監(jiān)聽(tīng)進(jìn)程
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 -
———————— 本文至此結(jié)束,感謝閱讀 ————————