$ su root
系统必须满足以下最低硬件要求:
以下是安装Oracle Database 11g Release 2(11.1)的内存要求:
最低:1 GB RAM
推荐:2 GB 内存或更多
要确定RAM大小,查看Swap分区空间(一般情况下不小于2G,具体看系统内存大小)请输入以下命令:
[root@VM-8-11-centos ~]# grep SwapTotal /proc/meminfo
SwapTotal: 0 kB # 这就表示此刻系统的交换分区为0
# 也可以使用free命令进行查看分区空间
[root@VM-8-11-centos ~]# free –h
total used free shared buff/cache available
Mem: 3782992 217256 137472 520 3428264 3284236
Swap: 0 0 0 # 同样是显示空间大小为0
下表描述了已安装的RAM与配置的交换空间建议之间的关系:
在Linux上,HugePages功能使用内存映射文件为大页表分配不可交换的内存。如果您启用了HugePages,那么在计算交换空间之前,您应该从可用RAM中扣除分配给HugePages的内存。
可用RAM | 需要交换空间 |
---|---|
1 GB到2 GB之间 | 内存大小的1.5倍 |
在2 GB到16 GB之间 | 等于RAM的大小 |
超过16 GB | 16 GB |
使用dd命令创建名为swapfile 的swap交换文件(文件名和目录任意):
[root@VM-8-11-centos ~]# dd if=/dev/zero of=/home/swap bs=1M count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 8.42517 s, 255 MB/s
if(即输入文件,input file),of(即输出文件,output file)。dev/zero是Linux的一种特殊字符设备(输入设备),可以用来创建一个指定长度用于初始化的空文件,如临时交换文件,该设备无穷尽地提供0,可以提供任何你需要的数目。 bs=1M代表增加的模块大小,count=2048代表是2048个模块,也就是2G空间大小
回车后,会执行2g的读写操作,系统会卡一段时间,耐心等待执行结果。
[root@VM-8-11-centos ~]# mkswap /home/swap
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=7859f620-c028-442f-b901-e0f13a623914
[root@VM-8-11-centos ~]# swapon /home/swap
swapon: /home/swap: insecure permissions 0644, 0600 suggested.
执行以上命令可能会出现:“不安全的权限 0644,建议使用 0600”类似提示,不要紧张,实际上已经激活了,可以忽略提示,也可以听从系统的建议修改下权限:
[root@VM-8-11-centos ~]# chmod -R 0600 /home/swap
[root@VM-8-11-centos ~]# free –h
total used free shared buff/cache available
Mem: 3782992 214572 133712 512 3434708 3287104
Swap: 2097148 0 2097148
[root@VM-8-11-centos ~]# swapon -s
Filename Type Size Used Priority
/home/swap file 2097148 0 -2
如果需要关闭swap分区则执行
- swapoff /home/swap
[root@VM-8-11-centos ~]# vim /etc/fstab
# 在fstab文件末尾追加如下内容后:wq 保存退出即可:
/home/swap swap swap default 0 0
或直接对fstab进行echo追加:
echo "/home/swap swap swap defaults 0 0" >> /etc/fstab
至此,Swap空间准备完成。
[root@VM-8-11-centos ~]# uname -m
x86_64
此命令显示处理器类型。验证处理器架构是否与要安装的甲骨文软件版本匹配。如果您没有看到预期的输出,则无法在此系统上安装软件。
由于Oracle默认不支持CentOS,需要修改为redhat
[root@VM-8-11-centos ~]# vim /etc/redhat-release
#删除CentOS Linux release 7.6.2009 (Core)(快捷键dd),改成redhat-7
redhat-7
以下是安装Oracle Database 11g Release 2(11.2)的磁盘空间要求:
/tmp
目录中至少有1 GB的磁盘空间
要确定/tmp
目录中可用的磁盘空间量,请输入以下命令:
[root@VM-8-11-centos ~]# df -h /tmp
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 59G 7.4G 50G 14% /
如果/tmp
目录中可用的可用磁盘空间少于1 GB,请完成以下步骤之一:
从/tmp
目录中删除不必要的文件,以满足磁盘空间要求。
在设置oracle
用户环境时设置TMP
和TMPDIR
环境变量。
另见:
“配置甲骨文用户环境”,了解有关设置TMP
的更多信息TMPDIR
扩展包含/tmp
目录的文件系统。如有必要,请联系系统管理员以获取有关扩展文件系统的信息。
要确定系统上的可用磁盘空间量,请输入以下命令:
[root@VM-8-11-centos ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 1.9G 24K 1.9G 1% /dev/shm
tmpfs 1.9G 488K 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/vda1 59G 7.4G 50G 14% /
tmpfs 370M 0 370M 0% /run/user/0
下表描述了Linux x86-64上每种安装类型的软件文件的磁盘空间要求和数据文件:
安装类型 | 软件文件要求(GB) |
---|---|
企业版 | 4.7 |
标准版 | 4.6 |
安装类型 | 数据文件要求(GB) |
---|---|
企业版 | 1.7 |
标准版 | 1.5 |
如果您选择配置自动备份,则快速恢复区域需要文件系统或Oracle自动存储管理磁盘组上的额外磁盘空间。
这里只是举一个例子,具体的挂载目录需要自己定义(根据需要操作、非必要条件)。如所选择硬盘在服务器已完成挂在操作,则无需再次进行挂载。
数据库存储路径这里,要按照 服务器本身存储路径,一般情况下服务器的硬盘是已经被挂载上的。但是为了防止硬盘没有挂载,也为了查看各个目录存储空间的大小。可以使用下面这个命令进行查看。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 29G 0 part
├─centos-root 253:0 0 27G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.2G 0 rom
注意:最后这个mountpoing的意思是挂载点 ,如果type类型是disk(硬盘)且没有挂载点。就证明这个硬盘还没有被挂载,需要你先去把硬盘给挂载上,在进行数据库存储路径的配置。
# mkdir /backup # 新建一个文件夹作为挂载点
# cd / # 移动至根目录下
# ls # 这里已经有这个文件夹了
backup bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var yumiso
# mount /dev/sdb /backup # 挂载硬盘,下面会报错。是因为没有对硬盘进行格式化。
mount: /dev/sdb is write-protected, mounting read-only
mount: unknown filesystem type '(null)' # Mount:未知的文件系统类型'(null)'
# mkfs.ext4 /dev/sdb # 对硬盘进行格式化(格式为ext4)
mke2fs 1.42.9 (28-Dec-2013)
/dev/sdb is entire device, not just one partition!
Proceed anyway? (y,n) y # 这里选y
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
# mount /dev/sdb /backup # 这里在执行一次挂载命令就可以了
# blkid /dev/sdb # 查看挂载硬盘的UUID,复制以下。写到下面的配置文件中,实现永久挂载。
/dev/sdb: UUID="6384d556-f444-48ee-8f1d-5257f0c350aa" TYPE="ext4"
用于挂载信息的指定填写格式中,各字段所表示的意义
设备文件 一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier)
挂载目录 指定要挂载到的目录,需在挂载前创建好
格式类型 指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等
权限选项 若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async
是否备份 若为1则开机后使用dump进行磁盘备份,为0则不备份
是否自检 若为1则开机后自动进行磁盘自检,为0则不自检
如果想将文件系统为Ext4的硬件设备/dev/sdb2在开机后自动挂载到/backup目录上,并保持默认权限
且无须开机自检,就需要在/etc/fstab文件中写入下面的信息,这样在系统重启后也会成功挂载。
# vim /etc/fstab
在最后一行增加如下信息
UUID=b8c4a45f-ed74-3089-fcdb-0273de904d6d /backup ext4 defaults 0 0
写入到/etc/fstab文件中的设备信息并不会立即生效,需要使用mount -a参数进行自动挂载:
# mount -a
df命令用于查看已挂载的磁盘空间使用情况,英文全称为“disk free”,语法格式为“df -h”。
查看当前系统中设备的挂载情况,列出系统中正在使用的设备有哪些。
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 27G 9.5G 18G 36% /
devtmpfs 899M 0 899M 0% /dev
tmpfs 911M 0 911M 0% /dev/shm
tmpfs 911M 9.6M 902M 2% /run
tmpfs 911M 0 911M 0% /sys/fs/cgroup
/dev/sda1 1014M 142M 873M 14% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/sdb 20G 45M 19G 1% /backup # 现在硬盘就已经挂在到了挂载点上了。
挂载错误之后可以使用umount命令,进行卸载,然后重新进行挂载。如果是写入到了配置文件中,也需要对配置文件进行修改。
# umount /dev/sdb
Oracle Database 11g Release 2(11.2)需要以下操作系统版本(或更高版本):
要确定安装的Linux的发行版和版本,请输入以下命令:
[root@VM-8-11-centos ~]# cat /proc/version
以下是Oracle Database 11g Release 2(11.2)的内核要求:
要确定是否安装了所需的内核,请输入以下命令:
[root@VM-8-11-centos ~]# uname -r
3.10.0-1160.71.1.el7.x86_64
Oracle Linux 7和Red Hat Enterprise Linux 7必须安装以下软件包(或更高版本):
binutils-2.23.52.0.1-12.el7.x86_64
compat-libcap1-1.10-3.el7.x86_64
compat-libstdc++-33-3.2.3-71.el7.i686
compat-libstdc++-33-3.2.3-71.el7.x86_64
gcc-4.8.2-3.el7.x86_64
gcc-c++-4.8.2-3.el7.x86_64
glibc-2.17-36.el7.i686
glibc-2.17-36.el7.x86_64
glibc-devel-2.17-36.el7.i686
glibc-devel-2.17-36.el7.x86_64
ksh
libaio-0.3.109-9.el7.i686
libaio-0.3.109-9.el7.x86_64
libaio-devel-0.3.109-9.el7.i686
libaio-devel-0.3.109-9.el7.x86_64
libgcc-4.8.2-3.el7.i686
libgcc-4.8.2-3.el7.x86_64
libstdc++-4.8.2-3.el7.i686
libstdc++-4.8.2-3.el7.x86_64
libstdc++-devel-4.8.2-3.el7.i686
libstdc++-devel-4.8.2-3.el7.x86_64
libXi-1.7.2-1.el7.i686
libXi-1.7.2-1.el7.x86_64
libXtst-1.2.2-1.el7.i686
libXtst-1.2.2-1.el7.x86_64
make-3.82-19.el7.x86_64
sysstat-10.1.5-1.el7.x86_64
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip 这两个都是安装oracle所需的资源包
oracle11gRPM 该文件夹中包含以下Centos7安装Oracle11g所需的依赖包,以及readline插件依赖包。
上传该文件夹,是为了保证服务器不能连接互联网环境使用,如可以连接互联网则不需要上传该文件夹,直接执行后面命令进行安装依赖包即可。
这里我把Oracle安装包以及rpm依赖包上传到了/opt下
[root@VM-8-11-centos opt]# ll
total 2295612
-rw-r--r-- 1 root root 1239269270 Mar 14 10:00 linux.x64_11gR2_database_1of2.zip
-rw-r--r-- 1 root root 1111416131 Mar 14 09:59 linux.x64_11gR2_database_2of2.zip
drwxr-xr-x 2 root root 12288 Mar 15 09:46 oracle11gRPM
1. 将rpm资源文件进行安装,如果有版本冲突可以先不安装,因为涉及到文件较多,请勿轻易进行强制安装更新,否则会导致环境异常。
2. 对于本机内安装文件版本,可以使用命令 rpm -qa | grep 依赖文件名称进行查看,本机会自带一些版本文件,不需要版本完全一致。
#rpm文件安装
[root@VM-8-11-centos oracle11gRPM]# rpm -ivh *.rpm
#忽略依赖关系强制安装
[root@VM-8-11-centos oracle11gRPM]# rpm -ivh --force --nodeps *.rpm
[root@VM-8-11-centos ~]# yum -y install binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
[root@VM-8-11-centos ~]# rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel | grep "not installed"
将来在使用 xshell连接 CentOS 服务器,进入 SQLPLUS 进行操作时,无法使用退格键、删除键、方向键(显示乱码)。安装软件 readline 和 rlwrap,重启系统可解决此问题。
readline可通过yum安装相关依赖包,rlwrap则需要下载上传再进行安装。
安装readline插件
[root@VM-8-11-centos ~]# yum install readline-*
[root@VM-8-11-centos opt]# wget http://download.openpkg.org/components/cache/rlwrap/rlwrap-0.42.tar.gz
上传并解压 :
[root@VM-8-11-centos opt]# tar -zxvf rlwrap-0.42.tar.gz
进入安装目录执行安装:
[root@VM-8-11-centos opt]# cd rlwrap-0.42/
[root@VM-8-11-centos opt]# ./configure
如果报错缺失依赖包有两种解决方式:
1、缺失的包可以配置本地yum源使用yum安装
2、下载缺失的依赖,然后上传进行安装
[root@VM-8-11-centos rlwrap-0.42]# make & make install
注意:下列配置环境变量要切换至oracle用户下。用户暂时还没创建,可在下面创建用后完成后再继续此步骤。
[oracle@VM-8-11-centos root]$ echo "alias sqlplus='rlwrap sqlplus'" >> /home/oracle/.bashrc
[oracle@VM-8-11-centos root]$ echo "alias rman='rlwrap rman'" >> /home/oracle/.bashrc
[oracle@VM-8-11-centos root]$ source ~/.bashrc
oracle里面可以创建对象什么的 有些内容需要在java虚拟机下运行的 所以我们在安装oracle的时候,建议安装上java运行环境.
不安装可能后期安装程序会报错。
[root@VM-8-11-centos ~]# ll /opt
total 2485392
-rw-r--r-- 1 root root 194042837 Mar 14 10:10 jdk-8u202-linux-x64.tar.gz
-rw-r--r-- 1 root root 1239269270 Mar 14 10:00 linux.x64_11gR2_database_1of2.zip
-rw-r--r-- 1 root root 1111416131 Mar 14 09:59 linux.x64_11gR2_database_2of2.zip
drwxr-xr-x 2 root root 12288 Mar 15 09:46 oracle11gRPM
drwxr-xr-x 8 oracle users 4096 Mar 15 09:54 rlwrap-0.42
-rw-r--r-- 1 root root 279608 Nov 14 2014 rlwrap-0.42.tar.gz
[root@VM-8-11-centos opt]# tar -zxvf jdk-8u202-linux-x64.tar.gz
[root@VM-8-11-centos opt]# ll
total 2485392
drwxr-xr-x 7 10 143 4096 Dec 16 2018 jdk1.8.0_202
-rw-r--r-- 1 root root 194042837 Mar 14 10:10 jdk-8u202-linux-x64.tar.gz
-rw-r--r-- 1 root root 1239269270 Mar 14 10:00 linux.x64_11gR2_database_1of2.zip
-rw-r--r-- 1 root root 1111416131 Mar 14 09:59 linux.x64_11gR2_database_2of2.zip
drwxr-xr-x 2 root root 12288 Mar 15 09:46 oracle11gRPM
drwxr-xr-x 8 oracle users 4096 Mar 15 09:54 rlwrap-0.42
-rw-r--r-- 1 root root 279608 Nov 14 2014 rlwrap-0.42.tar.gz
[root@VM-8-11-centos jdk1.8.0_202]# cd jdk1.8.0_202/
[root@VM-8-11-centos jdk1.8.0_202]# pwd
/opt/jdk1.8.0_202
[root@VM-8-11-centos ~]# vim /etc/profile
在末尾添加以下内容:
# setting jdk
export JAVA_HOME=/opt/jdk1.8.0_202 # 这里就是上面jdk的home路径
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JRE_HOME/lib
[root@VM-8-11-centos ~]# vim /etc/selinux/config
# 修改SELINUX=disabled
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
[root@VM-8-11-centos ~]# vim /etc/sysctl.conf #修改文件
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
# 把下面这些参数复制进去
fs.aio-max-nr = 1048576 # 同时可以拥有的的异步IO请求数目
fs.file-max = 6815744 # 最大打开文件数
kernel.shmmni = 4096 # 整个系统的内存segment的总个数,设置系统级最大共享内存段数量
kernel.sem = 250 32000 100 128
kernel.shmall = 2097152 # 所有内存大小(单位:页,1页 = 4Kb),计算公式16G*1024*1024*1024/4KB(页)
kernel.shmmax = 2147483648 # 单个共享内存段的大小(单位:字节)限制,计算公式64G*1024*1024*1024(字节)
net.ipv4.ip_local_port_range = 9000 65500 # 设置本地端口范围限制也就是可使用的ipv4端口范围
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
net.core.rmem_default = 262144 # 接收套接字缓冲区大小的缺省值(以字节为单位)
net.core.rmem_max= 4194304 # 接收套接字缓冲区大小的最大值(以字节为单位)
net.core.wmem_default= 262144 # 发送套接字缓冲区大小的缺省值(以字节为单位)
net.core.wmem_max= 1048576 # 发送套接字缓冲区大小的最大值(以字节为单位)
修改完后,启用新的配置
[root@VM-8-11-centos ~]# sysctl -p
如果服务器只运行单个实例(数据库),大概的建议值参考:
内存为12G
kernel.shmall = 3145728
kernel.shmmax = 12884901887
内存为16G
kernel.shmall = 4194304
kernel.shmmax = 17179869183
内存为32G
kernel.shmall = 8388608
kernel.shmmax = 34359738367
内存为64G
kernel.shmall = 16777216
kernel.shmmax = 68719476735
[root@VM-8-11-centos ~]# vi /etc/pam.d/login
注意:64位系统时,千万别写成/lib/security/pam_limits.so,否则导致无法登录
添加以下配置:
session required /lib64/security/pam_limits.so
session required pam_limits.so
[root@VM-8-11-centos ~]# vi /etc/profile
添加以下配置:
# Oracle Setting
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
# 其中oracle是用户,也就是说我们后面会创建一个oracle用户,尽量不要改动,不然后面许多地方都要改动。
[root@VM-8-11-centos ~]# source /etc/profile # 刷新配置,使更改的配置生效
[root@VM-8-11-centos ~]# vim /etc/csh.login
在文件末尾添加如下配置:
# Oracle Setting
if ( $USER == "oracle") then
limit maxproc 16384
limit descriptors 65536
endif
注意:非必要操作。根据需要选择是否修改主机名称。
三种方式:
1、主机名称可以用hostnamectl set-hostname 进行修改 2、可以修改/etc/hosts文件,来修改主机名称。 3、修改/etc/sysconfig/network文件
# hostnamectl set-hostname VM-8-11-centos
# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 VM-8-11-centos
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=VM-8-11-centos
主机名修改完成后可通过hostname命令查看。
[root@VM-8-11-centos ~]# hostname
VM-8-11-centos
oinstall
)dba
)oracle
)oper
)要确定这些组和用户是否存在,请按照以下步骤操作:
要确定oinstall
组是否存在,请输入以下命令:
[root@VM-8-11-centos ~]# more /etc/oraInst.loc
如果此命令的输出显示oinstall
组名称,则该组存在。
如果oraInst.loc
文件存在,则此命令的输出类似于以下内容:
inventory_loc=/u01/app/oraInventory
inst_group=oinstall
inst_group
参数显示Oracle Inventory组的名称,oinstall
。
要确定dba
组是否存在,请输入以下命令:
[root@VM-8-11-centos ~]# grep dba /etc/group
如果此命令的输出显示dba
组名称,则该组存在。
如有必要,请输入以下命令来创建oinstall
和dba
组:
[root@VM-8-11-centos ~]# /usr/sbin/groupadd oinstall
[root@VM-8-11-centos ~]# /usr/sbin/groupadd dba
要确定oracle
用户是否存在并属于正确的组,请输入以下命令:
[root@VM-8-11-centos ~]# id oracle
如果oracle
用户存在,则此命令显示有关用户所属组的信息。输出应类似于以下内容,表示oinstall
是主组,dba
是次要组:
uid=440(oracle) gid=200(oinstall) groups=201(dba),202(oper)
如有必要,请完成以下操作之一:
如果oracle
用户存在,但其主组不是oinstall
或不是dba
组的成员,则输入以下命令:
[root@VM-8-11-centos ~]# /usr/sbin/usermod -g oinstall -G dba oracle
如果oracle
用户不存在,请输入以下命令来创建它:
[root@VM-8-11-centos ~]# /usr/sbin/useradd -g oinstall -G dba oracle
此命令创建oracle
用户,并将oinstall
指定为主组,将dba
为次要组。
注意:这里的组名也是可以修改的,但是同理,这里改了后面许多地方都需要改动,所以这里不建议修改。
[root@VM-8-11-centos ~]# groupadd oinstall # 创建安装Oracle程序用户组
[root@VM-8-11-centos ~]# groupadd dba # 创建dba用户组
[root@VM-8-11-centos ~]# useradd -g dba -m oracle # 创建用户Oracle并加入dba用户组
[root@VM-8-11-centos ~]# usermod -a -G oinstall oracle # 将用户Oracle加入oinstall用户组
> 注意: 后面的-G(一定要的时候会大写),否则后面安装oracle的时候会报[FATAL] [INS-35341] User is not a member of the following chosen OS groups: [oinstall]
[root@VM-8-11-centos ~]# passwd oracle # 修改Oracle用户的密码
Changing password for user oracle.
New password: # 设置Oracle用户的密码
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: # 再次输入Oracle用户的密码
passwd: all authentication tokens updated successfully.
[root@VM-8-11-centos ~]# id oracle # 查看oracle用户的信息
uid=1001(oracle) gid=1002(dba) groups=1002(dba),1001(oinstall)
目录位置尽量选择比较大的硬盘上,
[root@VM-8-11-centos ~]# mkdir -p /backup/ocdata/oracle # 创建Oracle主目录
[root@VM-8-11-centos ~]# mkdir -p /backup/ocdata/inventory # 创建Oracle配置目录
[root@VM-8-11-centos ~]# mkdir -p /backup/ocdata/src # 创建Oracle压缩包解压目录
[root@VM-8-11-centos ~]# chown -R oracle:oinstall /backup/ocdata/oracle # 修改目录权限
[root@VM-8-11-centos ~]# chown -R oracle:oinstall /backup/ocdata/inventory
[root@VM-8-11-centos ~]# chown -R oracle:oinstall /backup/ocdata/src
[root@VM-8-11-centos ~]# ll /backup/ocdata # 查看目录权限
total 12
drwxr-xr-x 2 oracle oinstall 4096 Mar 15 10:39 inventory
drwxr-xr-x 2 oracle oinstall 4096 Mar 15 10:39 oracle
drwxr-xr-x 2 oracle oinstall 4096 Mar 15 10:39 src
创建/etc/oraInst.loc文件,否则安装时会报错
SEVERE: [FATAL] [INS-32038] The operating system group specified for central inventory (oraInventory) ownership is invalid.
[root@VM-8-11-centos ~]# vi /etc/oraInst.loc
inventory_loc=/backup/ocdata/inventory # 这个路径就是上面Oracle配置目录的路径
inst_group=oinstall
[root@VM-8-11-centos ~]# 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 # 最大栈大小软限制
[root@VM-8-11-centos ~]# vim /home/oracle/.bashrc
添加内容如下:
export PATH
export ORACLE_HOSTNAME=VM-8-11-centos # 这里填写之前设置的hostname
export ORACLE_BASE=/backup/ocdata/oracle # 是上面,创建Oracle主目录的文件夹路径
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 # 数据库安装目录
export ORACLE_SID=orcl # 数据库SID
export ORACLE_UNQNAME=orcl
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib # 链接库环境变量
export LC_ALL="en_US"
export LANG="en_US" # 避免乱码
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8" # 设置客户端的字符集。
# export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export DISPLAY=localhost:0.0 # 解决 配置监听时【DISPLAY environment variable not set!】
[root@VM-8-11-centos ~]# source /home/oracle/.bashrc
[root@VM-8-11-centos ~]# unzip linux.x64_11gR2_database_1of2.zip -d /backup/ocdata/src/
[root@VM-8-11-centos ~]# unzip linux.x64_11gR2_database_2of2.zip -d /backup/ocdata/src/
[root@VM-8-11-centos ~]# chown -R oracle:oinstall /backup/ocdata/src/ # 授权
[root@VM-8-11-centos opt]# ll /backup/ocdata/src/
total 4
drwxr-xr-x 8 oracle oinstall 4096 Aug 21 2009 database
[root@VM-8-11-centos opt]# reboot
静默安装Oracle11g涉及三个相关配置文件:
[root@VM-8-11-centos ~]# su oracle
[oracle@VM-8-11-centos root]$
[oracle@VM-8-11-centos response]$ pwd
/backup/ocdata/src/database/response
[oracle@VM-8-11-centos response]$ ll
total 76
-rw-rw-r-- 1 oracle oinstall 45007 Mar 15 14:02 dbca.rsp
-rw-rw-r-- 1 oracle oinstall 22739 Mar 15 13:37 db_install.rsp
-rwxrwxr-x 1 oracle oinstall 5739 Mar 15 13:44 netca.rsp
其中database是Oracle软件解压后生成的目录。可见在response目录下有三个模板,其中dbca.rsp是用来创建数据库的。db_install.rsp是用来安装Oracle软件的。netca.rsp是用来创建监听器的。
[root@VM-8-11-centos ~]# vim /backup/ocdata/src/database/response/db_install.rsp # 根据安装的实际路径
按esc,进入vim命令模式,输入/+参数名(例如oracle.install.option),根据以下值修改(要细心,一个也不能错!!!)
注意:按esc,输入/+参数名搜索不到可能是空格问题!参数输入时也要注意空格!!!
oracle.install.option=INSTALL_DB_SWONLY # 安装类型
ORACLE_HOSTNAME=VM-8-11-centos # 主机名称,用hostname查看主机名
UNIX_GROUP_NAME=oinstall # 安装组
INVENTORY_LOCATION=/backup/ocdata/inventory # INVENTORY目录
SELECTED_LANGUAGES=en,zh_CN # 选择语言
ORACLE_HOME=/backup/ocdata/oracle/product/11.2.0/db_1 # oracle_home
ORACLE_BASE=/backup/ocdata/oracle # oracle_base
oracle.install.db.InstallEdition=EE # oracle版本
oracle.install.db.DBA_GROUP=dba # dba用户组
oracle.install.db.OPER_GROUP=oinstall # oper用户组
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE # 数据库类型
oracle.install.db.config.starterdb.globalDBName=orcl # globalDBName
oracle.install.db.config.starterdb.SID=orcl # SID
oracle.install.db.config.starterdb.characterSet=AL32UTF8 # 默认数据库编码
oracle.install.db.config.starterdb.memoryLimit=800 # 自动管理内存的最小内存(M)
oracle.install.db.config.starterdb.password.ALL=oracle # 设定所有数据库用户使用同一个密码
DECLINE_SECURITY_UPDATES=true # 设置安全更新
脚本文件的路径以实际在服务器路径为准
[oracle@VM-8-11-centos root]$ /backup/ocdata/src/database/runInstaller -silent -responseFile /backup/ocdata/src/database/response/db_install.rsp -ignorePrereq
可能遇到的问题:
执行该命令时报 Exception in thread “main” java.lang.NoClassDefFoundError
原因:系统中设置了DISPLAY环境变量
解决方法:先执行一下unset DISPLAY,然后再执行上面的命令。
如果是报错:[SEVERE] - Email Address Not Specified
原因:缺少配置项
DECLINE_SECURITY_UPDATES=true
# 需要在root用户下执行本脚本文件
[root@VM-8-11-centos ~]# /backup/ocdata/oracle/product/11.2.0/db_1/root.sh
执行完后,再回到之前窗口按下回车!!!!!!
出现下面的内容就表示安装成功了。
The following configuration scripts need to be executed as the "root" user.
#!/bin/sh
#Root scripts to run
/backup/ocdata/inventory/orainstRoot.sh
/backup/ocdata/oracle/product/11.2.0/db_1/root.sh
To execute the configuration scripts:
1. Open a terminal window
2. Log in as "root"
3. Run the scripts
4. Return to this window and hit "Enter" key to continue
Successfully Setup Software.
# 执行成功
[oracle@VM-8-11-centos root]$ vim /backup/ocdata/src/database/response/netca.rsp
按esc,输入/+参数名(例如INSTALL_TYPE),根据以下值修改(要细心,一个也不能错!!!)
INSTALL_TYPE=""custom"" # 安装的类型
LISTENER_NUMBER=1 # 监听器数量
LISTENER_NAMES={"LISTENER"} # 监听器的名称列表
LISTENER_PROTOCOLS={"TCP;1521"} # 监听器使用的通讯协议列表
LISTENER_START=""LISTENER"" # 监听器启动的名称
# /backup/ocdata/oracle/product/11.2.0/db_1/bin/netca /silent /responseFile /backup/ocdata/src/database/response/netca.rsp
Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /data/src/database/response/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Configuring Listener:LISTENER
Listener configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/data/oracle/product/11.2.0/db_1/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Profile configuration complete.
Oracle Net Services configuration successful. The exit code is 0
# 执行成功
成功运行后,会在/backup/ocdata/oracle/product/11.2.0/db_1network/admin/ 中生成listener.ora和sqlnet.ora两个文件。
查看监听端口:netstat -tnulp | grep 1521
配置网络用Oracle用户执行,否则会报错
# /data/oracle/product/11.2.0/db_1/bin/netca /silent /responseFile /data/src/database/response/netca.rsp
Oracle Net Configuration Assistant cannot be run as root.
不能以root用户运行Oracle网络配置助手。
[oracle@VM-8-11-centos root]$ vim /backup/ocdata/src/database/response/dbca.rsp
按esc,输入/+参数名(例如RESPONSEFILE_VERSION),根据以下值修改(要细心,一个也不能错!!!)
RESPONSEFILE_VERSION ="11.2.0" // 不要变哦
OPERATION_TYPE ="createDatabase" // 操作为创建实例
GDBNAME ="orcl" // 数据库实例名
SID ="orcl" // 实例名字
TEMPLATENAME = "General_Purpose.dbc" // 建库用的模板文件
SYSPASSWORD = "oracle" // SYS管理员密码
SYSTEMPASSWORD = "oracle" // SYSTEM管理员密码
SYSMANPASSWORD= "oracle"
DBSNMPPASSWORD= "oracle"
DATAFILEDESTINATION =/backup/ocdata/oracle/oradata // 数据文件存放目录
RECOVERYAREADESTINATION=/backup/ocdata/oracle/flash_recovery_area // 恢复数据存放目录
CHARACTERSET ="AL32UTF8" // 字符集
NATIONALCHARACTERSET= "AL16UTF16" // 字符集
TOTALMEMORY ="1638" // 1638MB,物理内存2G*80% oracle内存,建议为物理内存70%~85%
[oracle@VM-8-11-centos root]$ /backup/ocdata/oracle/product/11.2.0/db_1/bin/dbca -silent -responseFile /backup/ocdata/src/database/response/dbca.rsp
Cleaning up failed steps
5% complete
Copying database files
7% complete
9% complete
16% complete
23% complete
30% complete
41% complete
Creating and starting Oracle instance
43% complete
48% complete
53% complete
57% complete
58% complete
59% complete
62% complete
64% complete
Completing Database Creation
68% complete
71% complete
75% complete
85% complete
96% complete
100% complete
Look at the log file "/backup/ocdata/oracle/cfgtoollogs/dbca/orcl/orcl0.log" for further details.
可能遇到的问题
The file “/data/oracle/oradata/Seed_Database.dfb” containing the datafiles information is not found. Please specify a valid file.
解决方法: 复制/data/oracle/product/11.2.0/db_1/assistants/dbca/templates/Seed_Database.dfb 到 /data/oracle/oradata
Seed_Database.dfb 的所在路径根据实际情况更改
[oracle@VM-8-11-centos root]$ ps -ef | grep ora_ | grep -v grep
oracle 19825 1 0 14:06 ? 00:00:00 ora_pmon_orcl
oracle 19827 1 0 14:06 ? 00:00:00 ora_vktm_orcl
oracle 19832 1 0 14:06 ? 00:00:00 ora_gen0_orcl
oracle 19834 1 0 14:06 ? 00:00:00 ora_diag_orcl
oracle 19836 1 0 14:06 ? 00:00:00 ora_dbrm_orcl
oracle 19838 1 0 14:06 ? 00:00:00 ora_psp0_orcl
oracle 19840 1 0 14:06 ? 00:00:00 ora_dia0_orcl
oracle 19842 1 0 14:06 ? 00:00:00 ora_mman_orcl
oracle 19844 1 0 14:06 ? 00:00:00 ora_dbw0_orcl
oracle 19846 1 0 14:06 ? 00:00:00 ora_lgwr_orcl
oracle 19848 1 0 14:06 ? 00:00:00 ora_ckpt_orcl
oracle 19850 1 0 14:06 ? 00:00:00 ora_smon_orcl
oracle 19852 1 0 14:06 ? 00:00:00 ora_reco_orcl
oracle 19854 1 0 14:06 ? 00:00:00 ora_mmon_orcl
oracle 19856 1 0 14:06 ? 00:00:00 ora_mmnl_orcl
oracle 19858 1 0 14:06 ? 00:00:00 ora_d000_orcl
oracle 19860 1 0 14:06 ? 00:00:00 ora_s000_orcl
oracle 19963 1 0 14:06 ? 00:00:00 ora_qmnc_orcl
oracle 19978 1 0 14:06 ? 00:00:00 ora_cjq0_orcl
oracle 20016 1 0 14:07 ? 00:00:00 ora_q000_orcl
oracle 20018 1 0 14:07 ? 00:00:00 ora_q001_orcl
[oracle@VM-8-11-centos root]$ vim /backup/ocdata/oracle/product/11.2.0/db_1/bin/dbstart
将ORACLE_HOME_LISTNER=$1修改为ORACLE_HOME_LISTNER=/backup/ocdata/oracle/product/11.2.0/db_1
[oracle@VM-8-11-centos root]$ vim /backup/ocdata/oracle/product/11.2.0/db_1/bin/dbshut
同上,将ORACLE_HOME_LISTNER=$1修改为ORACLE_HOME_LISTNER=/backup/ocdata/oracle/product/11.2.0/db_1
[oracle@VM-8-11-centos root]$ vi /etc/oratab
orcl:/backup/ocdata/oracle/product/11.2.0/db_1:Y # 把N改成Y
[oracle@VM-8-11-centos root]$ /backup/ocdata/oracle/product/11.2.0/db_1/bin/dbstart
注意:以下命令都是在root用户下!!!
[root@VM-8-11-centos ~]# chmod +x /etc/rc.d/rc.local
[root@VM-8-11-centos ~]# vim /etc/rc.d/rc.local
在文件最后追加以下内容:
su oracle -lc "/backup/ocdata/oracle/product/11.2.0/db_1/bin/lsnrctl start"
su oracle -lc "/backup/ocdata/oracle/product/11.2.0/db_1/bin/dbstart"
oracle用户窗口输入以下命令:
# sqlplus / as sysdba
可能存在的问题
根据分析服务器内存、cpu、io都正常;plsql和工程访问数据库非常缓慢,而sqlplus则很快;
主要有两中情况:
1、listenner.log 日志过大
解决办法:删除该文件重新创建一个文件名为listener.log的日志文件即可。
2、服务器的DNS解析
查看文件/etc/resolv.conf 可看到有两个代理ip地址,将这两个nameserver给注释掉就可以了。不需要重新启动oracle数据库,即时生效。