1 操作說(shuō)明
虛擬機(jī):Virtual Box
操作系統(tǒng):CentOS 7
Oracle 版本:Oracle 11g 11.2.0.1.0
安裝方式:靜默安裝
如果CentOS系統(tǒng)是最小化安裝版本,需要用root用戶(hù)安裝以下軟件
$yum install -y unzip vim
$yum -y install gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-devel numactl-devel sysstat unixODBC unixODBC-devel pcre-devel
2 添加硬盤(pán)
使用Virtual Box安裝CentOS時(shí),因?yàn)槲疫x擇了20G的硬盤(pán)空間,系統(tǒng)裝上后,要安裝Oracle數(shù)據(jù)庫(kù),存在空間不足的問(wèn)題。
#使用df查看磁盤(pán)空間
$df -h
文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn)
/dev/mapper/centos-root 17G 13G 4.5G 74% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 17M 903M 2% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/sda1 1014M 178M 837M 18% /boot
tmpfs 184M 4.0K 184M 1% /run/user/42
tmpfs 184M 32K 184M 1% /run/user/1000
tmpfs 184M 0 184M 0% /run/user/0
2.1 為虛擬機(jī)分配硬盤(pán)
在Virtual Box中添加一塊硬盤(pán)

這里添加了一塊大小為8G的硬盤(pán),啟動(dòng)Linux,查看硬盤(pán)情況。使用lsblk(list block device的縮寫(xiě))命令,列出所有的存儲(chǔ)設(shè)備。
$lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 8G 0 disk
sr0 11:0 1 1024M 0 rom
可以看出多了一塊sdb的硬盤(pán),不過(guò)目前我們還不能用它,要使用它,需要做以下幾個(gè)步驟
- 分區(qū),使用fdisk工具
- 格式化,使用mkfs.xfs工具
- 掛載
2.2 磁盤(pán)分區(qū)
因?yàn)槲业膕da磁盤(pán)使用的是MBR分區(qū)表格式,所以對(duì)sdb這塊新添加的磁盤(pán),我也將采用MBR分區(qū),我沒(méi)有嘗試過(guò)一塊磁盤(pán)是MBR(Master Boot Record),另一塊磁盤(pán)是GPT(GUID Partition Table)的方式,所以這里還是將sdb用fdisk工具分區(qū)。
#查看sda磁盤(pán)的信息
$parted /dev/sda print
Model: ATA VBOX HARDDISK (scsi) //生產(chǎn)廠商與磁盤(pán)接口scsi
Disk /dev/sda: 21.5GB // 磁盤(pán)空間
Sector size (logical/physical): 512B/512B
Partition Table: msdos //使用的是MBR分區(qū)
Disk Flags:
Number Start End Size Type File system 標(biāo)志
1 1049kB 1075MB 1074MB primary xfs 啟動(dòng)
2 1075MB 21.5GB 20.4GB primary lvm
這里需要要注意,如果使用MBR分區(qū)格式,請(qǐng)使用fdisk工具,如果要用GPT分區(qū)格式,使用gdisk工具,兩者都操作步驟都差不多。
$fdisk /dev/sdb
# 歡迎使用 fdisk (util-linux 2.23.2)。
#
# 更改將停留在內(nèi)存中,直到您決定將更改寫(xiě)入磁盤(pán)。使用寫(xiě)入命令前請(qǐng)三思。
#
# Device does not contain a recognized partition table
# 使用磁盤(pán)標(biāo)識(shí)符 0x96a97997 創(chuàng)建新的 DOS 磁盤(pán)標(biāo)簽。
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分區(qū)號(hào) (1-4,默認(rèn) 1):1
起始 扇區(qū) (2048-16777215,默認(rèn)為 2048):2048
Last 扇區(qū), +扇區(qū) or +size{K,M,G} (2048-16777215,默認(rèn)為 16777215):
將使用默認(rèn)值 16777215
分區(qū) 1 已設(shè)置為 Linux 類(lèi)型,大小設(shè)為 8 GiB
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤(pán)。
對(duì)于fdisk的使用還是很簡(jiǎn)單的,需要注意的是,在你沒(méi)有提交之前,所有的更改都是在內(nèi)存中的,也就是說(shuō),你可以隨意的分區(qū),然后按q命令,不保存你的操作。這里我將sdb整個(gè)磁盤(pán)劃分成了一個(gè)分區(qū),使用命令查看:
$lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 8G 0 disk
└─sdb1 8:17 0 8G 0 part
sr0 11:0 1 1024M 0 rom
可以看到sdb下多了一個(gè)類(lèi)型為part的數(shù)據(jù)行,名為sdb1,它就是我們?cè)趕db磁盤(pán)上的分區(qū)。
2.3 格式化分區(qū)
有了這個(gè)sdb1分區(qū)后需要對(duì)其格式化,使用命令mkfs(make filesystem),在CentOS 7中可以使用xfs的文件系統(tǒng)格式。
$mkfs.xfs /dev/sdb1
# meta-data=/dev/sdb1 isize=512 agcount=4, agsize=524224 blks
# = sectsz=512 attr=2, projid32bit=1
# = crc=1 finobt=0, sparse=0
# data = bsize=4096 blocks=2096896, imaxpct=25
# = sunit=0 swidth=0 blks
# naming =version 2 bsize=4096 ascii-ci=0 ftype=1
# log =internal log bsize=4096 blocks=2560, version=2
# = sectsz=512 sunit=0 blks, lazy-count=1
# realtime =none extsz=4096 blocks=0, rtextents=0
2.4 掛載
掛載sdb1分區(qū)
# 創(chuàng)建一個(gè)文件夾
$mkdir /data
# 將sdb1 掛載到 data目錄下
$mount /dev/sdb1 /data/
$df -h
文件系統(tǒng) 容量 已用 可用 已用% 掛載點(diǎn)
/dev/mapper/centos-root 17G 13G 4.5G 74% /
devtmpfs 905M 0 905M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 8.9M 911M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/sda1 1014M 178M 837M 18% /boot
tmpfs 184M 12K 184M 1% /run/user/42
tmpfs 184M 0 184M 0% /run/user/0
/dev/sdb1 8.0G 33M 8.0G 1% /data
使用df命令查看掛載情況,發(fā)現(xiàn)多了一個(gè)/dev/sdb1的記錄,這表示我們已經(jīng)將磁盤(pán)掛載到指定的目錄了。
掛載完成后,需要設(shè)置開(kāi)機(jī)自動(dòng)掛載該磁盤(pán),這里使用修改配置文件/etc/fstab的方式
$vim /etc/fstab
/dev/sdb1 /data xfs defaults 0 0
將/dev/sdb1掛載到/data目錄下,sdb1的格式是xfs
2.5 調(diào)整swap分區(qū)(補(bǔ)充)
在安裝Oracle時(shí),要求swap分區(qū)大于150M,檢查swap分區(qū)大小
[root@CentOS7-srv2 ~]# free -h
total used free shared buff/cache available
Mem: 15G 353M 8.4G 8.7M 6.8G 14G
Swap: 0B 0B 0B
發(fā)現(xiàn)swap分區(qū)是沒(méi)有空間的,再查看系統(tǒng)的磁盤(pán)情況
[root@CentOS7-srv2 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 500G 0 disk
系統(tǒng)有一塊500G的數(shù)據(jù)盤(pán)未分配,于是我們將在這塊未分配的數(shù)據(jù)盤(pán)上創(chuàng)建一個(gè)swap分區(qū)(如果沒(méi)有數(shù)據(jù)盤(pán),可以使用dd命令寫(xiě)入一個(gè)文件,并格式化)。
查看系統(tǒng)盤(pán)的分區(qū)格式:
[root@CentOS7-srv2 ~]# parted /dev/vda print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 42.9GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos #使用的是MBR分區(qū)
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 42.9GB 42.9GB primary ext4 boot
因?yàn)橄到y(tǒng)盤(pán)是MBR分區(qū),所以這里也MBR分區(qū)的方式對(duì)數(shù)據(jù)盤(pán)分區(qū),對(duì)應(yīng)的工具使用fdisk。
劃分swap分區(qū)和數(shù)據(jù)盤(pán)分區(qū)
[root@CentOS7-srv2 ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x3640a61d.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-1048575999, default 2048): 2048
# 創(chuàng)建一個(gè)1G大小的分區(qū),用于swap
Last sector, +sectors or +size{K,M,G} (2048-1048575999, default 1048575999): +1G
Partition 1 of type Linux and of size 1 GiB is set
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): 1
Invalid partition type `1'
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (2099200-1048575999, default 2099200):
Using default value 2099200
# 將剩下的空間作為數(shù)據(jù)盤(pán)分區(qū)
Last sector, +sectors or +size{K,M,G} (2099200-1048575999, default 1048575999): 1048575999
Partition 2 of type Linux and of size 499 GiB is set
# 執(zhí)行寫(xiě)入命令
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
完成分區(qū)后,查看磁盤(pán)情況:
[root@CentOS7-srv2 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 500G 0 disk
├─vdb1 253:17 0 1G 0 part
└─vdb2 253:18 0 499G 0 part
可以看到vdb磁盤(pán)下多了兩個(gè)分區(qū),一個(gè)1G一個(gè)499G。
格式化分區(qū),數(shù)據(jù)盤(pán)格式化參考上面的內(nèi)容,這里只做swap的格式化。
[root@CentOS7-srv2 ~]# mkfs.xfs /dev/vdb1
meta-data=/dev/vdb1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
制作swap
[root@CentOS7-srv2 ~]# mkswap /dev/vdb1
mkswap: /dev/vdb1: warning: wiping old swap signature.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=271baf7f-9edd-4b36-88c2-5dd7d9c28b68
激活swap
[root@CentOS7-srv2 ~]# swapon /dev/vdb1
# 可以看到swap分區(qū)已被激活
[root@CentOS7-srv2 ~]# free -m
total used free shared buff/cache available
Mem: 15884 365 7163 8 8354 15178
Swap: 1023 0 1023
[root@CentOS7-srv2 /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 500G 0 disk
├─vdb1 253:17 0 1G 0 part [SWAP]
└─vdb2 253:18 0 499G 0 part /data
設(shè)置開(kāi)機(jī)啟動(dòng)
[root@CentOS7-srv2 /]# vim /etc/fstab
/dev/vdb1 swap swap defaults 0 0
/dev/vdb2 /data xfs defaults 0 0
3 創(chuàng)建oracle用戶(hù)
Oracle安裝的時(shí)候不能用root用戶(hù)安裝,這里我們要為Oracle單獨(dú)創(chuàng)建一個(gè)用戶(hù)以及對(duì)應(yīng)的組,Oracle安裝時(shí)需要指定oinstall組,dba組以及oper組(在后面配置安裝選項(xiàng)時(shí)能夠看到該選項(xiàng)),但是這里我們只創(chuàng)建oinstall和dba兩個(gè)組,在后面配置時(shí),將oper放入dba組中。這種做法不是很正規(guī),大家視情況而定需要不要加上oper組
我們需要?jiǎng)?chuàng)建這樣一個(gè)用戶(hù)
{
"name":"oracle",
"groups":["oinstall","dba"]
}
3.1 創(chuàng)建用戶(hù)和組
# 創(chuàng)建組和用戶(hù)
$groupadd oinstall
$groupadd dba
$useradd -g oinstall -G dba oracle
$passwd oracle
#查看用戶(hù)的情況
$id oracle
uid=1002(oracle) gid=1004(oinstall) 組=1004(oinstall),1005(dba)
3.2 創(chuàng)建Oracle安裝目錄與環(huán)境變量
我在上一節(jié)掛載的硬盤(pán)上創(chuàng)建Oracle的安裝目錄,將該目錄的擁有者改為Oracle,并修改相關(guān)目錄權(quán)限。
$mkdir -p /data/oracle/product/11.2.0
$chown -R oracle:oinstall /data/oracle/
$chmod -R 755 /data/oracle/
有了安裝目錄后,我們就可以將環(huán)境變量指向該目錄了,oracle用戶(hù)需要用到的環(huán)境變量包括,ORACLE_BASE,ORACLE_HOME,ORACLE_SID,我們將這些環(huán)境變量寫(xiě)入oracle用戶(hù)的.bashrc文件中。
#切換至oracle用戶(hù),操作以下步驟
$su - oracle
$vim .bashrc
# 設(shè)置如下內(nèi)容
ORACLE_BASE=/data/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0
ORACLE_SID=orcl
PATH=$PATH:$ORACLE_HOME/bin
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
# 刷新,并測(cè)試環(huán)境變量是否已加載
$source .bashrc
$echo $ORACLE_HOME
#返回root用戶(hù)
$exit
4 系統(tǒng)設(shè)置
要保證順利的安裝Oracle,需要對(duì)CentOS系統(tǒng)進(jìn)行一些修改,包括:關(guān)閉selinux,修改內(nèi)核配置以及oracle用戶(hù)對(duì)資源的使用限制等。
4.1 關(guān)閉SELinux
SELinux(Security-Enhanced Linux),翻譯過(guò)來(lái)是安全性加強(qiáng)的Linux。簡(jiǎn)單的理解就是開(kāi)啟它后,使得linux進(jìn)程在訪問(wèn)所需資源時(shí)會(huì)受到一定的控制,進(jìn)程只能訪問(wèn)那些在他的任務(wù)中所需要的文件。至于為什么安裝或使用Oracle時(shí),要關(guān)閉selinux,我并沒(méi)有深入的研究。
$vim /etc/selinux/config
SELINUX=disabled
$setenforce 0
修改配置文件/etc/selinux/config是永久設(shè)置的方式,但是需要重啟系統(tǒng),而setenforce 0則是臨時(shí)關(guān)閉selinux,下次重啟后還是要讀取/etc/selinux/config中的配置,通過(guò)這兩條命令的配置使用,可以保證關(guān)閉selinux而不需要重啟服務(wù)器。
4.2 修改Linux內(nèi)核參數(shù)
$vim /etc/sysctl.conf
# 配置如下系統(tǒng)內(nèi)核參數(shù)
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
# 刷新內(nèi)核參數(shù)
$sysctl -p
這些內(nèi)核參數(shù)不是很明白什么意思。
4.3 配置用戶(hù)對(duì)資源的使用限制
配置oracle用戶(hù)對(duì)系統(tǒng)資源的使用,配置文件在/etc/security/limits.conf,格式如下:
<domain> <type> <item> <value>
@student hard nproc 20
domain 表示要限制的用戶(hù)或者是@用戶(hù)組
type 表示限制的類(lèi)型,有兩個(gè)值soft和hard,soft表示告警類(lèi)型,hard表示強(qiáng)制類(lèi)型,如果用戶(hù)使用的資源超出了soft的范圍,只會(huì)發(fā)出警告,而使用的資源超出了hard的范圍則會(huì)報(bào)錯(cuò)。
item 表示限制的項(xiàng)目,比如 nofile 表示用戶(hù)最大能打開(kāi)文件描述符的數(shù)量(即打開(kāi)文件的個(gè)數(shù)),nproc表示能打開(kāi)的最大進(jìn)程數(shù)
value 表示值
$vim /etc/security/limits.conf
#在limits.conf中設(shè)置Oracle用戶(hù)的對(duì)資源的限制
oracle soft nproc 2047 #oracle用戶(hù)最大打開(kāi)進(jìn)程數(shù)
oracle hard nproc 16384
oracle soft nofile 1024 #oracle用戶(hù)最大打開(kāi)文件
oracle hard nofile 65536
oracle soft stack 10240
$vim /etc/profile
# 在profile最后添加
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
unset i
unset -f pathmunge
這里同時(shí)在/etc/security/limits.conf和/etc/profile文件同時(shí)設(shè)置oracle用戶(hù)最大打開(kāi)進(jìn)程數(shù)和最大打開(kāi)文件。
切換到oracle用戶(hù),使用ulimit -a 查看oracle用戶(hù)的資源使用限制情況
$su - oracle
$ulimit -a
$exit
4.4 修改登錄驗(yàn)證
修改login程序的驗(yàn)證過(guò)程,PAM模塊參見(jiàn)鳥(niǎo)哥的Linux私房菜
$ vim /etc/pam.d/login
# 添加以下內(nèi)容:
session required /lib64/security/pam_limits.so
session required pam_limits.so
4.5 添加主機(jī)名
# 查看主機(jī)名,我這里的主機(jī)名是CentOS
$hostname
#將主機(jī)名添加到/etc/hosts中
$vim /etc/hosts
127.0.0.1 CentOS localhost localhost.localdomain localhost4 localhost4.localdomain4
目前,我暫時(shí)不知道為什么要將主機(jī)名加到hosts文件中,但是后面對(duì)Oracle安裝文件配置時(shí),有一個(gè)ORACLE_HOSTNAME參數(shù)需要指定主機(jī)名,那個(gè)名稱(chēng)就是現(xiàn)在指定的這個(gè)。
4.6 添加防火墻規(guī)則
CentOS7采用firewalld作為防火墻,遠(yuǎn)程客戶(hù)端(如:SQLDeveloper)連接Oracle數(shù)據(jù)庫(kù)時(shí),一般使用的是tcp的1521端口,這里需要在firewalld上配置該規(guī)則
#在public區(qū)域,添加一個(gè)tcp,1521端口,并永久保存
$firewall-cmd --zone=public --add-port=1521/tcp --permanent
5 安裝Oracle
5.1 解壓安裝包
下載并解壓Oracle安裝包,這里我是在Mac上下載的Linux,然后用scp命令上傳到CentOS中的。
#從mac電腦上傳Oracle安裝到CentOS指定的目錄
$scp -r linux.x64_11gR2_database_1of2.zip oracle@192.168.0.208:/home/oracle/
$scp -r linux.x64_11gR2_database_2of2.zip oracle@192.168.0.208:/home/oracle/
我Virtual Box中CentOS的IP地址是192.168.0.208,上傳完成后,使用oracle用戶(hù)解壓安裝包。
$ll -h /home/oracle/
-rw-r--r--. 1 oracle oinstall 1.2G 11月 16 15:20 linux.x64_11gR2_database_1of2.zip
-rw-r--r--. 1 oracle oinstall 1.1G 11月 16 15:23 linux.x64_11gR2_database_2of2.zip
#使用oracle用戶(hù)解壓安裝包
$unzip linux.x64_11gR2_database_1of2.zip
$unzip linux.x64_11gR2_database_2of2.zip
$ll -h /home/oracle/database
total 16K
drwxr-xr-x. 12 oracle oinstall 203 Aug 17 2009 doc
drwxr-xr-x. 4 oracle oinstall 223 Aug 15 2009 install
drwxrwxr-x. 2 oracle oinstall 61 Aug 15 2009 response
drwxr-xr-x. 2 oracle oinstall 34 Aug 15 2009 rpm
-rwxr-xr-x. 1 oracle oinstall 3.2K Aug 15 2009 runInstaller
drwxrwxr-x. 2 oracle oinstall 29 Aug 15 2009 sshsetup
drwxr-xr-x. 14 oracle oinstall 4.0K Aug 15 2009 stage
-rw-r--r--. 1 oracle oinstall 5.3K Aug 18 2009 welcome.html
Oracle安裝文件會(huì)解壓在一個(gè)database目錄中,這里我們需要關(guān)注的是該目錄下的runInstaller安裝執(zhí)行文件,以及response的配置文件目錄。
5.2 安裝配置文件說(shuō)明
要靜默安裝Oracle,需要用到Oracle的配置文件,這個(gè)配置文件在database/response中,一般的做法是copy一份該目錄,在copy的文件中做修改,這里我將response的內(nèi)容copy到oracle目錄下的etc目錄中。
$cp -a /home/oracle/database/response/ /home/oracle/etc
$ll -h /home/oracle/etc
-rw-rw-r--. 1 oracle oinstall 44K Feb 14 2009 dbca.rsp
-rw-rw-r--. 1 oracle oinstall 23K Aug 15 2009 db_install.rsp
-rwxrwxr-x. 1 oracle oinstall 5.7K Feb 26 2009 netca.rsp
可以看出Oracle的安裝配置文件主要有3個(gè),
- db_install.rsp 安裝Oracle數(shù)據(jù)庫(kù)的配置文件
- netca.rsp 監(jiān)聽(tīng)配置文件
- dbca.rsp 創(chuàng)建Oracle數(shù)據(jù)庫(kù)實(shí)例的配置文件
有這些配置文件可以看出,我們需要分三步安裝Oracle,第一步安裝Oracle數(shù)據(jù)庫(kù),第二步安裝監(jiān)聽(tīng),第三步安裝Oracle數(shù)據(jù)庫(kù)實(shí)例。
5.3 安裝Oracle數(shù)據(jù)庫(kù)
配置db_install.rsp
$vim /home/oracle/etc/db_install.rsp
#修改以下內(nèi)容
#安裝方式,選擇只安裝數(shù)據(jù)庫(kù),因?yàn)楹竺嫖覀冃枰獑为?dú)安裝實(shí)例和監(jiān)聽(tīng)
oracle.install.option=INSTALL_DB_SWONLY
#服務(wù)器名稱(chēng),使用hostname可以查看,需要在/etc/hosts中添加
ORACLE_HOSTNAME=CentOS
#oracle用戶(hù)所在組
UNIX_GROUP_NAME=oinstall
#這個(gè)目錄沒(méi)有創(chuàng)建,在安裝Oracle時(shí)會(huì)自動(dòng)生成
INVENTORY_LOCATION=/data/oracle/oraInventory
#語(yǔ)言設(shè)置
SELECTED_LANGUAGES=en,zh_CN
#oracle_home路徑,oracle數(shù)據(jù)庫(kù)安裝的位置
ORACLE_HOME=/data/oracle/product/11.2.0
#oracle的根目錄
ORACLE_BASE=/data/oracle
#安裝Oracle企業(yè)版
oracle.install.db.InstallEdition=EE
#dba用戶(hù)組
oracle.install.db.DBA_GROUP=dba
#oper操作組,注意:我在創(chuàng)建組時(shí),沒(méi)有為oracle用戶(hù)創(chuàng)建oper操作組,所以這里將操作組設(shè)置為了dba,讀者可以根據(jù)實(shí)際情況修改
oracle.install.db.OPER_GROUP=dba
#數(shù)據(jù)庫(kù)類(lèi)型,一般類(lèi)型
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
#設(shè)置安全更新
DECLINE_SECURITY_UPDATES=true
配置文件完成后,終于要安裝oracle數(shù)據(jù)庫(kù)了,使用下列命令
$/home/oracle/database/runInstaller -silent -responseFile /home/oracle/etc/db_install.rsp -ignorePrereq
在安裝過(guò)程中可以使用top去觀察oracle的安裝情況
$top
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7619 oracle 20 0 1102340 142184 6124 S 93.0 7.5 1:43.33 java
7501 root 20 0 0 0 0 S 2.3 0.0 0:02.38 kworker/0:1
可以看到oracle用戶(hù)正在安裝Oracle數(shù)據(jù)庫(kù),安裝完成后需要用root用戶(hù)執(zhí)行以下命令
#使用root用戶(hù)執(zhí)行
$sh /data/oracle/oraInventory/orainstRoot.sh
$sh /data/oracle/product/11.2.0/root.sh
5.4 安裝監(jiān)聽(tīng)
Oracle數(shù)據(jù)庫(kù)安裝成功后,可以在Oracle的bin目錄中找到網(wǎng)絡(luò)助手程序netca,配置監(jiān)聽(tīng)
#使用oracle用戶(hù)
$netca /silent /responseFile /home/oracle/etc/netca.rsp
#查看監(jiān)聽(tīng)狀態(tài)
$lsnrctl status
netca靜默安裝的時(shí)候,如果報(bào)了如下錯(cuò)誤:
UnsatisfiedLinkError exception loading native library: njni11
java.lang.UnsatisfiedLinkError: /data/oracle/product/11.2.0/lib/libnjni11.so: libclntsh.so.11.1: cannot open shared object file: No such file or directory
java.lang.UnsatisfiedLinkError: jniGetOracleHome
at oracle.net.common.NetGetEnv.jniGetOracleHome(Native Method)
at oracle.net.common.NetGetEnv.getOracleHome(Unknown Source)
at oracle.net.ca.NetCALogger.getOracleHome(NetCALogger.java:230)
at oracle.net.ca.NetCALogger.initOracleParameters(NetCALogger.java:215)
at oracle.net.ca.NetCALogger.initLogger(NetCALogger.java:130)
at oracle.net.ca.NetCA.main(NetCA.java:404)
Error: jniGetOracleHome
Oracle Net Services 配置失敗。退出代碼是1
解決辦法
cp $ORACLE_HOME/inventory/Scripts/ext/lib/libclntsh.so.11.1 $ORACLE_HOME/lib/
這里如果報(bào)這個(gè)錯(cuò),一般后面的安裝都會(huì)有問(wèn)題,所以建議卸載,后重新安裝一次,卸載Oracle參考: Linux下卸載Oracle 11g
5.5 安裝Oracle數(shù)據(jù)庫(kù)實(shí)例
修改數(shù)據(jù)庫(kù)實(shí)例配置文件/home/oracle/etc/dbca.rsp,然后用數(shù)據(jù)庫(kù)助手程序dbca,創(chuàng)建數(shù)據(jù)庫(kù)
$vim /home/oracle/etc/dbca.rsp
#數(shù)據(jù)庫(kù)名
GDBNAME = "orcl"
#sid
SID = "orcl"
#數(shù)據(jù)庫(kù)字符集
CHARACTERSET = "AL32UTF8"
$dbca -silent -responseFile /home/oracle/etc/dbca.rsp
登錄數(shù)據(jù)庫(kù),查看實(shí)例狀態(tài)
$sqlplus / as sysdba
SQL> select status from v$instance;
# STATUS
# ------------
# OPEN
5.6 手動(dòng)啟動(dòng)Oracle
當(dāng)重啟服務(wù)器后,如果沒(méi)有配置自動(dòng)啟動(dòng)Oracle,則需要手動(dòng)對(duì)其進(jìn)行啟動(dòng),主要是監(jiān)聽(tīng)和數(shù)據(jù)庫(kù)兩部分
# 使用oracle用戶(hù)啟動(dòng)監(jiān)聽(tīng)
$lsnrctl start
# 使用IPC方式登錄Oracle數(shù)據(jù)庫(kù),然后啟動(dòng)Oracle實(shí)例
$sqlplus / as sysdba
#在sqlplus中啟動(dòng)數(shù)據(jù)庫(kù)
SQL> startup
6 測(cè)試
6.1 添加測(cè)試用戶(hù)
create temporary tablespace test_temp tempfile '/data/oracle/oradata/orcl/test_temptemp.dbf' size 128M autoextend on next 100M maxsize 1024M extent management local;
create tablespace test_data logging datafile '/data/oracle/oradata/orcl/test_data.dbf' size 128M autoextend on next 100M maxsize 1024M extent management local;
create user test identified by aaaaaa default tablespace test_data temporary tablespace test_temp;
grant connect,resource,create view to test;
6.2 刪除測(cè)試用戶(hù)
drop tablespace test_data including contents and datafiles cascade constraints;
drop tablespace test_temp including contents and datafiles;
drop user test;