CentOS 7部署Oracle 12c企業版數據庫

一、安裝Oracle 12c

1、安裝CentOS 7操作系統的注意事項

由於本次安裝Oracle 12c軟件是在CentOS 7系統上實現的,那麼首先安裝CentOS 7操作系統,安裝要求如下:

  • 防火牆的配置選項設置爲禁用;

  • SELinux設置爲禁用;

  • 默認安裝設置爲軟件開發;

  • 內核選擇3.10.0-862.el7.x86_64及以上版本;

2、前置條件的準備

Oracle數據庫是一個相對龐大的應用軟件,對服務器的系統類型、內存和交換分區、硬盤空阿金、內核參數、軟件環境、用戶環境等都有相應的要求。只要滿足了這些必備的條件,才能確保Oracle 12c安裝成功、穩定運行。

1)系統及配置要求

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@Oracle ~]# cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core) 

Linux操作系統要求:

  • 物理內存:必須高於1GB,對於VMware虛擬機建議不少於2GB;

  • 交換空間:物理內存爲1~2GB時,交換分區爲物理內存的1.5~2倍;物理內存爲2~16GB時,交換分區於物理內存大小相同;物理內存超過16GB時,交換分區使用16GB就可以了;
    如果交換分區空間不足的話,可以使用以下方式擴展交換分區

查看物理內存和交換內存的命令如下:

[root@Oracle ~]# grep MemTotal /proc/meminfo 
MemTotal:        4030172 kB
[root@Oracle ~]# grep SwapTotal /proc/meminfo 
SwapTotal:       8388604 kB

對於Oracle 12c數據庫,若程序文件和數據文件安裝在同一分區,則該分區硬盤空間的最小要求爲企業級爲6.4GB,標準版6.1GB;除此之外,還應確保/tmp目錄的可用空間不少於1G。總的來說,建議爲Oracle 12c準備至少15GB的硬盤空間。通過以下命令查看磁盤空間的使用情況:

[root@Oracle ~]# df -hT
文件系統                類型      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root xfs        72G   21G   51G   30% /
devtmpfs                devtmpfs  2.0G     0  2.0G    0% /dev
tmpfs                   tmpfs     2.0G  960M 1008M   49% /dev/shm
tmpfs                   tmpfs     2.0G  9.0M  2.0G    1% /run
tmpfs                   tmpfs     2.0G     0  2.0G    0% /sys/fs/cgroup
/dev/sda1               xfs       197M  139M   59M   71% /boot
tmpfs                   tmpfs     394M   12K  394M    1% /run/user/42
tmpfs                   tmpfs     394M     0  394M    0% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /mnt

安裝Oracle數據庫前,要求規劃好主機名和IP。服務器的主機名、IP地址應提前確認無誤,一旦Oracle數據庫安裝完成,建議不要再修改主機名,否則會導致數據庫啓動失敗。查看主機名可以通過hostname命令實現,修改主機名通過配置文件/etc/hosts實現,代碼如下:

[root@centos01 ~]# hostnamectl set-hostname Oracle  <!--修改主機名-->
[root@centos01 ~]# bash   <!--刷新主機名-->
[root@oracle ~]# hostname  <!--查看主機名-->
oracle
[root@Oracle ~]# vim /etc/hosts   <!--配置主機解析-->
192.168.100.10 oracle

2)軟件環境要求

Oracle 12c的安裝過程通常是在圖形界面中進行,因此建議使用已安裝有GNOME中文桌面環境的CentOS服務器,軟件開發工具當然是必不可少的,如gcc、glibc、binutils等軟件包,建議使用yum工具來安裝以下必要的軟件環境。具體操作如下:

[root@Oracle ~]# yum -y install binutils elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make numactl-devel unixODBC unixODBC-devel

yum倉庫選擇使用本地光盤即可,Oracle 12c自身集成了Java運行環境,但安裝界面對中文的支持並不完善,因此若希望使用中文的Oracle安裝界面,建議提前安裝好Java軟件包。

3)內核要求

爲了確保數據庫運行穩定,Oracle 12c針對Linux內核參數,進程會話限制提出了一些要求,其中一部分設置可以在安裝過程中自動檢測並進行修復,但並一定很完整,所以最好的做法是根據安裝文檔提前進行配置。

內核參數調整體現在/etc/sysctl.conf文件中,主要包括與內存調度、端口範圍、打開文件數、I/O請求等相關的一些設置,相關數值不可低於安裝要求。修改完畢後通過執行如下的“sysctl -p”命令使新配置立即生效。

[root@Oracle ~]# 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
[root@Oracle ~]# sysctl -p   <!--重新加載配置文件-->

4)Oracle用戶環境要求

Oracle 12c需要固定的運行用戶oracle、安裝組oinstall、管理組dba,這些賬號應提前創建好。用來存放Oracle程序及數據庫文件的基本目錄(如/u01/app/oracle)也應提前創建好。具體創建的命令如下:

[root@Oracle ~]# groupadd -g 54321 oinstall   <!--創建安裝組-->
[root@Oracle ~]# groupadd -g 54322 dba   <!--創建管理oracle組-->
[root@Oracle ~]# useradd -u 54321 -g oinstall -G dba oracle  
         <!--創建管理oracle的用戶,加入到組中 -->
[root@Oracle ~]# passwd oracle    <!--設置管理數據庫密碼-->
[root@Oracle ~]# mkdir -p /u01/app/oracle<!--創建數據庫根目錄-->
[root@Oracle ~]# chown -R oracle:oinstall /u01/app/ <!--設置目錄所有者-->
[root@Oracle ~]# chmod -R 755 /u01/app/   <!--設置目錄權限-->

Oracle 12c的安裝任務應以運行用戶oracle的身份執行,需適當調整oracle用戶的環境配置以滿足需求。具體操作如下:

[root@Oracle ~]# vim /home/oracle/.bash_profile 
............<!--此處省略部分內容-->
umask 022    <!--反碼-->
ORACLE_BASE=/u01/app/oracle   <!--定義基本目錄-->
ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1/  <!--定義安裝家目錄-->
ORACLE_SID=orcl   <!--定義數據庫實例名稱-->
LANG=zh_CN.UTF-8   <!--確定使用何種語言環境-->
NLS_LANG="AMERICAN_AMERICA".ZHS16GBK 
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID LANG NLS_LANG PATH    <!--將變量導出爲全局變量-->
[root@Oracle ~]# source /home/oracle/.bash_profile   <!--刷新配置-->

5)oracle用戶資源限制要求

進程會話限制可以採用pam_limits認證模塊來實現,通過修改登錄程序login的PAM設置以啓用該認證,然後修改/etc/security/limits.conf 文件,使用戶oracle能夠打開的進程數、進程使用的文件數加大。具體操作如下:

[root@Oracle ~]# vim /etc/pam.d/login   <!--設置pam驗證-->

session    required     /lib64/security/pam_limits.so
session    required     pam_limits.so
............<!--此處省略部分內容-->
[root@Oracle ~]# vim /etc/security/limits.conf   
                  <!--限制oracle數據庫存儲和進程使用-->
............<!--此處省略部分內容-->
oracle   soft   nofile    1024           <!--文件數軟限制-->
oracle   hard   nofile    65536         <!--文件數硬限制-->
oracle   soft   nproc    16384           <!--進程數軟限制-->
oracle   hard   nproc    16384          <!--進程數硬限制-->
oracle   soft   stack    10240              <!--Oracle軟堆棧限制-->
[root@Oracle ~]# vim /etc/profile 
............<!--此處省略部分內容-->
              <!--添加如下內容-->
if [ $USER = "oracle"]; then
        if [$SHELLO = "/bin/ksh"]; then
        ulimit -p 16384
        ulimit n 65536
else
        ulimit -u 16384 -n 65536
fi
fi

不配置oracle用戶資源限制部分,也不會影響oracle數據庫的成功安裝,但是,若有糟糕的SQL語句對服務器資源的無限佔用,導致長時間對用戶請求無響應,建議提前限制oracle用戶資源。

準備工作完成後重新啓動系統,重啓之後,再次檢查之前的配置是否生效。

3、Oracle 12c安裝過程

Oracle的中文官方網址是https://www.oracle.com/index.html 可以自行進行下載,也可通過網盤自行提取:[https://pan.baidu.com/s/1VWFYZH0itXjXN-xt7hlD0A
提取碼:9n84]進行安裝。具體操作如下:

[root@Oracle oracle]# ls      <!--通過rz命令上傳壓縮包-->
linuxx64_12201_database.zip
[root@Oracle oracle]# unzip linuxx64_12201_database.zip 
                       <!--解壓縮oracle包-->
[root@Oracle ~]# export DISPLAY=192.168.100.254:0.0  
                                  <!--配置界面顯示到宿主機-->
[root@Oracle ~]# xhost +    <!--一定要以root用戶的身份在圖形環境中操作-->

CentOS 7部署Oracle 12c企業版數據庫

[root@Oracle ~]# su oracle   <!--切換到oracle賬戶-->
[oracle@Oracle root]$ cd
[oracle@Oracle ~]$ export DISPLAY=192.168.100.254:0.0  
[oracle@Oracle ~]$ xhost +

CentOS 7部署Oracle 12c企業版數據庫

[oracle@Oracle ~]$ /u01/app/oracle/database/runInstaller <!--安裝oracle-->
正在啓動 Oracle Universal Installer...

CentOS 7部署Oracle 12c企業版數據庫
執行完成後過一會彈出圖形化界面,進行以下操作:

1)配置安全更新,什麼也不選下一步即可
CentOS 7部署Oracle 12c企業版數據庫
CentOS 7部署Oracle 12c企業版數據庫

2)安裝選項選擇創建和配置數據庫,單擊下一步
CentOS 7部署Oracle 12c企業版數據庫

3)系統類選擇服務器類,單擊下一步
CentOS 7部署Oracle 12c企業版數據庫

4)數據庫安裝選項選擇單實例數據庫安裝,單擊下一步
CentOS 7部署Oracle 12c企業版數據庫

5)安裝類型選擇典型安裝,單擊下一步
CentOS 7部署Oracle 12c企業版數據庫

6)設置數據庫口令,單擊下一步
CentOS 7部署Oracle 12c企業版數據庫
CentOS 7部署Oracle 12c企業版數據庫

7)清單保持默認,單擊下一步
CentOS 7部署Oracle 12c企業版數據庫

8)默認下一步
CentOS 7部署Oracle 12c企業版數據庫

9)執行腳本
CentOS 7部署Oracle 12c企業版數據庫

[root@Oracle ~]# /u01/app/oraInventory/orainstRoot.sh
[root@Oracle ~]# /u01/app/oracle/product/12.2.0/dbhome_1/root.sh

10)安裝完成,通過瀏覽器訪問
CentOS 7部署Oracle 12c企業版數據庫

11)瀏覽器訪問https://Oracle:5500/em 安裝flash player
CentOS 7部署Oracle 12c企業版數據庫

12)驗證安裝結果,瀏覽器訪問https://Oracle:5500/em
CentOS 7部署Oracle 12c企業版數據庫

CentOS 7部署Oracle 12c企業版數據庫

*接下來使用SQLPlus命令在命令行界面中訪問Oracle 12c數據庫:**

[root@Oracle ~]# su oracle  <!--切換到oracle賬戶-->
[oracle@Oracle root]$ cd
[oracle@Oracle ~]$ source .bash_profile    <!--運行此項-->
[oracle@Oracle ~]$ sqlplus / as sysdba    <!--登錄數據庫-->
SQL> help index       <!--查看支持的指令列表-->
SQL> show user;        <!--查看當前用戶-->
USER is "SYS"

在SQL>模式下,不區分大小寫,但是Linux提示符下區分大小寫。

二、Oracle 12c數據庫的創建

如果在安裝oracle產品時不創建數據庫,那麼要使用oracle系統就必須先創建數據庫。如果在安裝oracle時選擇建立數據庫,也可以再創建第二個數據庫。
創建數據庫的方法有兩種:通過圖形化界面,或者採用“CREATE DATABASE”命令,這裏說一下圖形化界面創建數據庫的方法。

在Linux環境下,採用運行數據庫配置助手(database configuration assistant, DBCA)來實現。Oracle 12c安裝完成後,會在$ORACLE_HOME/bin目錄下生成Oracle系統可執行程序,創建Oracle數據庫所用的DBCA也在該目錄下。

[oracle@Oracle ~]$ export DISPLAY=192.168.100.254:0.0
[oracle@Oracle ~]$ xhost +

CentOS 7部署Oracle 12c企業版數據庫

[oracle@Oracle ~]$  dbca   <!--以oracle用戶身份運行dbca命令-->

CentOS 7部署Oracle 12c企業版數據庫

彈出的圖形化界面如下:
CentOS 7部署Oracle 12c企業版數據庫

CentOS 7部署Oracle 12c企業版數據庫
CentOS 7部署Oracle 12c企業版數據庫

CentOS 7部署Oracle 12c企業版數據庫

CentOS 7部署Oracle 12c企業版數據庫
數據庫已經創建完成。爲了使Oracle系統充分利用系統資源,建議一個服務器上只創建一個數據庫。

三、Oracle 12c數據庫的啓動與關閉

oracle數據庫的啓動與關閉是日常工作之一。對於大多數oracle DBA來說,啓動和關閉oracle數據庫最常用的方式是在命令行方式下執行。

1、啓動、關閉Oracle數據庫

要啓動和關閉數據庫,必須具有Oracle管理員權限的用戶登錄,通常以具有SYSDBA權限的用戶登錄。

1)數據庫的啓動

啓動(STARTUP)一個數據庫需要三個步驟:①啓動oracle實例(非裝載階段);②由實例裝載數據庫(裝載階段);③打開數據庫(打開階段)。
在STARTUP命令中,可以使用不同的選項來控制數據庫的不同啓動步驟。

①STARTUP NOMOUNT

NOMOUNT選項僅僅啓動一個oracle實例,讀取init.ora初始化參數文件、啓動後臺進程、初始化SGA。當實例啓動後,系統將顯示一個SGA內存結構和大小的列表,具體操作如下:

SQL> startup nomount;       <!--啓動數據庫-->
ORACLE instance started.

Total System Global Area 1660944384 bytes
Fixed Size          8793448 bytes
Variable Size        1056965272 bytes
Database Buffers      587202560 bytes
Redo Buffers            7983104 bytes
SQL> alter database mount;      <!--裝載數據庫-->

Database altered.
SQL> alter database open;      <!--打開數據庫-->

Database altered.

②STARTUP MOUNT

STARTUP MOUNT命令啓動實例並且裝載數據庫,但是沒有打開數據庫。Oracle系統讀取控制文件中關於數據文件和重做日誌文件的內容,但並不打開該文件。這種打開方式常在數據庫維護操作中使用,如對數據文件的更名、改變重做日誌及打開歸檔模式等。在這種打開方式下,除了可以看到SGA系統列表以外,系統還會給出“數據庫裝載完畢”的提示。具體操作如下:

SQL> startup mount;       <!--啓動實例並且裝載數據庫-->
ORACLE instance started.

Total System Global Area 1660944384 bytes
Fixed Size          8793448 bytes
Variable Size        1056965272 bytes
Database Buffers      587202560 bytes
Redo Buffers            7983104 bytes
Database mounted.
SQL> alter database open;     <!--打開數據庫-->

Database altered.

③STARTUP

STARTUP命令完成啓動實例,裝載數據庫和打開數據庫三個步驟。此時,數據庫使數據文件和重做日誌文件在線,通常還會請求一個或者多個回滾段;系統除了可以看到前面STARTUP MOUNT方式下的所有提示外,還會給出一個“數據庫已經打開”的提示;數據庫系統處於正常的工作狀態,可以接收用戶的請求。

SQL> startup;   
<!--startup命令實現了啓動實例,裝載數據庫,打開數據庫,一條命令搞定-->
ORACLE instance started.

Total System Global Area 1660944384 bytes
Fixed Size          8793448 bytes
Variable Size        1056965272 bytes
Database Buffers      587202560 bytes
Redo Buffers            7983104 bytes
Database mounted.
Database opened.

如果採用STARTUP NOMOUNT或者STARTUP MOUNT的數據庫打開方式,必須採用alter database命令來執行裝載或打開數據庫的操作。例如,如果以STARTUP NOMOUNT方式打開數據庫,也就是說實例已經啓動,但是數據庫沒有裝載和打開。這時必須運行下面的兩條命令,數據庫才能正確啓動。命令如下:

SQL> alter database mount;      <!--裝載數據庫-->
SQL> alter database open;      <!--打開數據庫-->

如果以STARTUP MOUNT方式啓動數據庫,只需要運行下面一條命令即可以打開數據庫:

SQL> alter database open;      <!--打開數據庫-->

2)數據庫的關閉

對於數據庫的關閉,有四種不同的關閉選項。

①SHUTDOWN NORMAL

SHUTDOWN NORMAL是SHUTDOWN命令的默認選項。也就是說,如果用戶發出SHUTDOWN命令,即執行SHUTDOWN NORMAL命令。
發出該命令後,任何新的連接都將不再允許連接到數據庫。在數據庫關閉之前,Oracle將等待目前連接的所有用戶都從數據庫中退出後纔開始關閉數據庫。採用這種方式關閉數據庫,在下一次啓動時不需要進行任何的實例恢復。但需要注意的是,採用這種方式時,也許關閉一個數據庫需要幾天或更長的時間。

SQL> shutdown;
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> shutdown normal;
Database closed.
Database dismounted.
ORACLE instance shut down.

②SHUTDOWN IMMEDIATE

SHUTDOWN IMMEDIATE是常用的一種關閉數據庫的方式。若即想很快地關閉數據庫,又想讓數據庫“乾淨”的關閉,則常採用這種方式。
發出該命令後,當前正在被Oracle處理的SQL語句立即中斷,系統中任何沒有提交的事務全部回滾。如果系統中存在一個很長的未提交的事務,那麼採用這種方式關閉數據庫也需要一段時間(該事務回滾時間)。系統不會等待連接到數據庫的所有用戶退出系統,而會強行回滾當前所有的活動事務,然後斷開所有的連接用戶。

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

③SHUTDOWN TRANSACTIONAL

SHUTDOWN TRANSACTIONAL命令常用來計劃關閉數據庫,它會等待當前連接到系統且正在活動的事務執行完畢,運行該命令後,任何新的連接和事務都是不允許的。它所有活動的事務執行完成後,數據庫將以和SHUTDOWN IMMEDIATE同樣的方式關閉數據庫。

SQL> shutdown transactional;
Database closed.
Database dismounted.
ORACLE instance shut down.

④SHUTDOWN ABORT

SHUTDOWN ABORT是關閉數據庫方式的最後選擇,是在沒有任何辦法關閉數據庫的情況下不得不採用的方式,一般不要採用。在下列情況出現時可以考慮採用這種方式關閉數據庫。

SQL> shutdown abort;
ORACLE instance shut down.

數據庫處於一種非正常工作狀態,不能用SHUTDOWN NORMAL或SHUTDOWN IMMEDIATE命令關閉數據庫;

  • 需要立即關閉數據庫;

  • 在啓動數據庫實例時遇到問題。

發出該命令後,所有正在運行的SQL語句將立即中止,所有未提交的事務將不回滾,oracle也不等待目前連接到數據庫的用戶退出系統;下一次啓動數據庫時需要實例恢復,因此,下一次啓動可能比平時需要更多的時間。

在關閉數據庫時最好使用SHUTDOWN IMMEDIATE方式,因爲這種方式安全且相對較快。不是萬不得已不要使用SHUTDOWN ABORT 方式,因爲這種方式會造成數據丟失,並且恢復數據庫也需要較長時間。

2、啓動、關閉Oracle監聽進程

當oracle數據庫實例啓動完成後,爲了使客戶端用戶能連接到oracle實例,DBA還需要在oracle所在的服務器上使用lsnrctl命令啓動監聽進程。如果數據庫實例關閉,一般也要關閉監聽進程。

1)啓動監聽

啓動(Start)監聽是Oracle用戶在操作系統下執行的命令,可以直接在lsnrctl後加參數,也可在該命令提示符後進行操作,具體操作如下:

[oracle@oracle ~]$ lsnrctl       <!--執行該命令-->

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 06-JAN-2020 19:28:52

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> start           <!--啓動監聽-->
Starting /u01/app/oracle/product/12.2.0/dbhome_1//bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.2.0.1.0 - Production
System parameter file is /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date                06-JAN-2020 19:28:54
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

也可以直接使用以下命令“來啓動監聽:

[oracle@Oracle ~]$ lsnrctl start

2)關閉監聽

[oracle@oracle ~]$ lsnrctl stop

LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 06-JAN-2020 19:33:04

Copyright (c) 1991, 2016, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
The command completed successfully

———————— 本文至此結束,感謝閱讀 ————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章