虚拟机环境:Vmware Workstation 11.1.0 + Oracle Enterprise Linux 5.5 X86-64
1、物理机内存设置
最小:1GB
推荐:2GB或以上
检测内存大小:
# grep MemTotal /proc/meminfo
查看可用的内存空间:
free
2、交换分区(swap)设置
物理内存 交换分区大小
1~2G 前者的1.5倍
2G~16G 与前者相等
>16GB 16GB
查看交换分区的大小:
# grep SwapTotal /proc/meminfo
3、查看操作系统信息(此处主要验证操作系统版本是否对Oracle 11gr2的支持)
操作系统类型:
# uname -m
操作系统内核版本:
# cat /proc/version
# uname -r
4、安装系统包(注:安装的包版本必须等于或大于以下版本)
包安装方法:
# rpm -ivh binutils-2.17.50.0.6*
验证包是否已经安装:
# rpm -q binutils-2.17.50.0.6
安装包列表(以下这些包都在oel5.5镜像文件的Server文件夹下):
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-2.5-24 (32 bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5 (32 bit)
glibc-headers-2.5
ksh-20060214
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libaio-devel-0.3.106 (32 bit)
libgcc-4.1.2
libgcc-4.1.2 (32 bit)
libstdc++-4.1.2
libstdc++-4.1.2 (32 bit)
libstdc++-devel 4.1.2
make-3.81
sysstat-7.0.2
unixODBC-2.2.11 (32-bit) or later
unixODBC-devel-2.2.11 (32-bit) or later
unixODBC-devel-2.2.11 (64-bit) or later
unixODBC-2.2.11 (64-bit) or later
5、安装用户和用户组
# /usr/sbin/groupadd oinstall
# /usr/sbin/groupadd dba
# /usr/sbin/useradd -g oinstall -G dba oracle
6、修改系统内核参数
查看参数值:
# /sbin/sysctl -a | grep parameter_name
参数及推荐值列表:
/proc/sys/kernel/sem 250 32000 100 128
/proc/sys/kernel/shmall 2097152
/proc/sys/kernel/shmmax 536870912
/proc/sys/kernel/shmmni 4096
/proc/sys/fs/file-max 6815744
/proc/sys/net/ipv4/ip_local_port_range 9000 65500
/proc/sys/net/core/rmem_default 262144
/proc/sys/net/core/rmem_max 4194304
/proc/sys/net/core/wmem_default 262144
/proc/sys/net/core/wmem_max 1048576
/proc/sys/fs/aio-max-nr 1048576
使用vi编辑器修改参数文件/etc/sysctl.conf,增加或修改如下内容:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
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
执行以下命令或者重启(reboot)操作系统使以上修改内核参数文件生效:
# /sbin/sysctl -p
7、为Oracle软件安装用户检测资源限制条件
# su - oracle
$ ulimit -Sn
1024
$ ulimit -Hn
65536
$ ulimit -Su
2047
$ ulimit -Hu
16384
$ ulimit -Ss
10240
$ ulimit -Hs
32786
更新资源限制文件/etc/security/limits.conf,在末尾添加如下行
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
8、创建Oracle安装时需要的目录
查看所有文件系统的挂载信息:
# df -k
创建软件安装时所需目录:
# mkdir -p /u01/app/
# chown -R oracle:oinstall /u01/app/
# chmod -R 775 /u01/app/
9、配置Oracle用户的环境
以下命令需要在主机执行,以下一系列操作确保操作系统支持对图形界面的支持
# xhost +
$ su - oracle
$ xhost +
$ echo $SHELL
$ . ./.bash_profile
$ w
$ export DISPLAY=local_host:0.0
$ echo $SHELL
$ echo $DISPLAY
$ xclock
如果需要用ssh客户端工具操作图形界面,则需要执行以下命令
$ export DISPLAY=local_host:0.0
$ xclock
设置ORACLE_BASE和ORACLE_SID,以下的设置方法是基于临时会话的设置,后文中会讲述永久设置的方法
$ ORACLE_BASE=/u01/app/oracle
$ ORACLE_SID=orcl
$ export ORACLE_BASE ORACLE_SID
使用默认的ORACLE_HOME和TNS_ADMIN
$unset ORACLE_HOME
$unset TNS_ADMIN
10、准备Oracle安装软件
安装 vmware-tool工具,否则无法实现主机与物理机的文件共享
使用vmware的共享功能将下载的Oracle软件包共享给虚拟机
使用linux unzip工具将Oracle安装软件解压到/u01/目录下,具体命令如下:
# unzip /mnt/hgfs/share_file_dir/linux.x64_11gR2_database_1of2.zip /u01/
# unzip /mnt/hgfs/share_file_dir/linux.x64_11gR2_database_2of2.zip /u01/
11、安装Oracle数据库管理软件
# su - oracle
$ ./runInstaller
注意:在安装过程中,选择只安装oracle数据库软件,oracle数据库我们接下来会单独创建和配置,这样做的好处在于理解oracle的整体结构
12、创建和管理Oracle数据库
$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1/
$ cd $ORACLE_HOME/bin
$ ./dbca
注意:在安装过程中可能会提示安装监听,在另一个会话中执行以下命令完成监听器的配置
$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1/
$ cd $ORACLE_HOME/bin
$ ./netca
13、启动和登录数据库
# su - oracle
$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1/
注意:由于没有设置ORACLE_SID环境变量,连接库时可能出现错误
$ export ORACLE_SID=orcl
$ cd $ORACLE_HOME/bin
$ ./sqlplus /nolog
SQL> conn / as sysdba
SQL> startup nomount;
SQL> alter database mount;
SQL> alter database open;
/*
注意:
将数据库启动到挂载(mount)状态的时候可能会出现
ORA-01102: cannot mount database in EXCLUSIVE mode
原因分析:
1、在ORACLE_HOME/dbs/存在 "sgadef<sid>.dbf" 文件或者lk<db_name> 文件。这两个文件是用来用于锁内存的。
2、oracle的 pmon, smon, lgwr and dbwr等进程未正常关闭。
3、数据库关闭后,共享内存或者信号量依然被占用。
解决方案:
1、关闭数据库
SQL> shutdown immediate
2、fuser -u lk<db_name> 查看使用 lk<db_name> 文件的进程和用户
$ /sbin/fuser -u lkGLOBAL_ORCL
3、使用 fuser -k lk<db_name> 杀死这些正在访问lk<db_name>的进程
$ /sbin/fuser -k lkGLOBAL_ORCL
4、确认相关进程全被终止
$ /sbin/fuser -u lkGLOBAL_ORCL
5、依次启动数据库
SQL> startup nomount;
SQL> alter database mount;
SQL> alter database open;
*/
14、为了操作方便,这里说明设置环境变量的方法,这样就可以直接在会话中使用sqlplus命令了
# su - oracle
$ echo "export ORACLE_SID=orcl" >> /home/oracle/.bash_profile
$ echo "export ORACLE_BASE=/u01/app/oracle" >> /home/oracle/.bash_profile
$ echo "export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1" >> /home/oracle/.bash_profile
$ echo "export TNS_ADMIN=$ORACLE_HOME/network/admin" >> /home/oracle/.bash_profile
$ echo "export PATH=$ORACLE_HOME/bin:$PATH" >> /home/oracle/.bash_profile
15、官方参考文档
https://docs.oracle.com/cd/E11882_01/install.112/e24326/toc.htm#CEGHFFGG
https://docs.oracle.com/cd/E11882_01/server.112/e25494/create.htm#ADMIN002
https://docs.oracle.com/cd/E11882_01/server.112/e25494/start.htm#ADMIN004