CentOS 7 靜默安裝 Oracle 11g

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)

添加硬盤(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;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,983評(píng)論 0 9
  • 第1章CentOS 7.1靜默安裝11.2.0.3 64位單機(jī)數(shù)據(jù)庫(kù)軟件 1.1 安裝前的準(zhǔn)備工作 1.1.1 ...
    小麥苗DB寶閱讀 793評(píng)論 0 2
  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,338評(píng)論 0 10
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,618評(píng)論 19 139
  • 這是一個(gè)關(guān)于木木的愛(ài)情故事。 木木大學(xué)畢業(yè),一個(gè)人,不認(rèn)命,只任性,甩手,從離家很遠(yuǎn)的銀川,義無(wú)反顧的踏入北京這座...
    黃本黃閱讀 571評(píng)論 7 6

友情鏈接更多精彩內(nèi)容