CentOS6.3中安装Oracle 11g数据库
因为我的vCenter server用的是Appliance版本,原来用的是内置数据库,由于些内置数据库只能支持小于5台Host的小清单数据中心,我想升级VC,有两种选择,一个是重新安装基于Windows的VC,一个是保留现的的Appliance虚机,然后将内置数据库修改成Oracle。
考虑到安装Windows版的VC的复杂性,我还是决定安装Oracle。
1)先安装CentOS6.3,安装时选择Database模式。
2)然后到Oracle上下载Database安装文件。下载的是linux.x64_11gR2_database_1of2.zip和linux.x64_11gR2_database_2of2.zip两个ZIP文件,这里有点奇怪的是,我在同一个地方下载,第一次用的是迅雷下载,文件名相同,但是ZIP包中的文件却不同,没有runInstaller,但是有一个Setup.exe文件,我将此ZIP解压到CentOS上,在命令行下运行setup,居然可以打开一个配置的界面。下载到本地后,用WinSCP将两个文件上传到CentOS的Tmp目录中。
3)按要求检查系统中Package的情况
先是根据网上的资料,检查如下列表中的包
Binutils | 已安装 | binutils-2.20.51.0.2-5.34.el6.x86_64 |
Compat-libstdc++ | 未安装 | |
elfutils-libelf | 已安装 | elfutils-libelf-0.152-1.el6.x86_64 |
Elfutils-libelf-devel | 未安装 | elfutils-libelf-devel-0.152-1.el6.x86_64 |
glibc | 已安装 | glibc-2.12-1.80.el6.x86_64 |
Glibc-devel | 未安装 | glibc-devel-2.12-1.107.el6.x86_64 |
Glibc-headers | 安装 | glibc-headers-2.12-1.107.el6.x86_64 |
gcc | 未安装 | gcc-4.4.7-3.el6.x86_64 |
Gcc-c++ | 未安装 | gcc-c++-4.4.7-3.el6.x86_64 |
Libaio | 安装 | libaio-0.3.107-10.el6.x86_64 |
Libaio-devel | 未安装 | libaio-devel-0.3.107-10.el6.x86_64 |
libgcc | 安装 | libgcc-4.4.7-3.el6.x86_64 |
Libstdc++ | 未安装 | libstdc++-4.4.7-3.el6.x86_64 |
Libstdc++-devel | 安装 | libstdc++-devel-4.4.7-3.el6.x86_64 |
make | 安装 | make-3.81-20.el6.x86_64 |
sysstat | 未安装 | sysstat-9.0.4-20.el6.x86_64 |
unixODBC | 未安装 | unixODBC-2.2.14-11.el6.x86_64 |
unixODBC-devel | 未安装 | unixODBC-devel-2.2.14-12.el6_3.x86_64 |
其中未安装的,用yum install ..安装都成功了,只有compat-libstdc++,安装不成功。完成后,又去Oracle上下载了手册,看到手册中的必须列表却又不同
手册上的必须包列表如下:
binutils-2.20.51.0.2-5.11.el6 (x86_64) |
compat-libcap1-1.10-1 (x86_64) |
compat-libstdc++-33-3.2.3-69.el6 (x86_64) |
compat-libstdc++-33-3.2.3-69.el6.i686 |
gcc-4.4.4-13.el6 (x86_64) |
gcc-c++-4.4.4-13.el6 (x86_64) |
glibc-2.12-1.7.el6 (i686) |
glibc-2.12-1.7.el6 (x86_64) |
glibc-devel-2.12-1.7.el6 (x86_64) |
glibc-devel-2.12-1.7.el6.i686 |
ksh |
libgcc-4.4.4-13.el6 (i686) |
libgcc-4.4.4-13.el6 (x86_64) |
libstdc++-4.4.4-13.el6 (x86_64) |
libstdc++-4.4.4-13.el6.i686 |
libstdc++-devel-4.4.4-13.el6 (x86_64) |
libstdc++-devel-4.4.4-13.el6.i686 |
libaio-0.3.107-10.el6 (x86_64) |
libaio-0.3.107-10.el6.i686 |
libaio-devel-0.3.107-10.el6 (x86_64) |
libaio-devel-0.3.107-10.el6.i686 |
make-3.81-19.el6 |
sysstat-9.0.4-11.el6 (x86_64) |
再检查一遍,用yum install安装不包括的包。最后括号内为(i686)的包都没有安装,另外,compat-libstdc++的两个版本包也未安装成功。
后来在网上找到资料,用yum install compat-libstdc++-33安装就行了,我原来一直是用yum install compat=libstdc++来安装的。
对于i686版本的,就用yum install compat-libstdc++-33*.i686
可用一个命令全部安装
yum installbinutilscompat-libcap1compat-libstdc++-33compat-libstdc++-33*.i686elfutils-libelf-devel #这个官方文档是没有的gccgcc-c++glibc*.i686glibcglibc-develglibc-devel*.i686kshlibgcc*.i686libgcclibstdc++libstdc++*.i686libstdc++-devellibstdc++-devel*.i686libaiolibaio*.i686libaio-devellibaio-devel*.i686makesysstatunixODBCunixODBC*.i686unixODBC-develunixODBC-devel*.i686
/usr/sbin/groupadd oinstall/usr/sbin/groupadd dba/usr/sbin/useradd -g oinstall -G dba oraclepasswd oracle
250 3200 32 128
其中
SEMMSL:每个信号量集中的最大信号量数,手册建议最小值250
SEMMNS:系统中信号量集的最大数,建议最小值32000
SEMOPM:每个semop调用所包含的最大操作数,建议100
SEMMNI:系统中信号量集的最小数,建议128
修改参数
vi /etc/sysctl.conf
在最后增加
kernel.sem = 250 32000 100 128
运行
/sbin/sysctl -p
后再看相关参数,已经发生了变化。分别用
/sbin/sysctl -a |grep shmall
/sbin/sysctl -a |grep shmmax
/sbin/sysctl -a |grep shmmni
查看参数,都符合推荐值。
其中,shmall是全部允许使用的共享共存大小,shmmax是单个段允许的使用的大小,shmni是允许的共享内存段总数。
/sbin/sysctl -a |grep file-max
得到fs.file-max=385021,推荐值为6815744
file-max表示文件句柄的最大数量。也就是在系统中可打开文件数量的最大值。
/sbin/sysctl -a |grep ip_local_port_range
得到
net.ipv4.ip_local_port_range = 32768 61000
推荐为9000 65500
主要是为了增加可用的端口数量。
/sbin/sysctl -a |grep rmem_default
得到net.core.rmem_default = 229376
推荐为262144
/sbin/sysctl -a |grep rmem_max
得到net.core.rmem_max = 131071
推荐4194304
/sbin/sysctl -a |grep wmem_default
得到net.core.wmem_default = 229376
推荐262144
/sbin/sysctl -a |grep wmem_max
得到net.core.wmem_max = 131071
推荐1048576
rmem_default表示套接字接收缓冲区大小的缺省值。
rmem_max表示套接字接收缓冲区大小的最大值。
wmem_default表示套接字发送缓冲区大小的缺省值。
wmen_max表示套接字发送缓冲区大小的最大值。
/sbin/sysctl -a |grep aio-max-nr
得到fs.aio-max-nr = 65536
推荐1048576
此参数限制并发未完成的请求,应该设置避免I/O子系统故障。
再打开sysctl.conf增加
fs.aio-max-nr = 1048576
fs.file-max = 6815744
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
保存退出后,/sbin/sysctl -p,应用修改。
6)下面需要修改资源限制,根据官方文档,这个限制是指用来安装的账号的限制。
这里涉及3个参数,
一个是nofile指打开文件数,Soft Limit是至少1024,Hard Limit是至少65536
一个是nproc指单用户可用进程数,Soft Limit是至少2047,Hard Limit是至少16384
一个是stack指进程的堆栈段大小,Soft Limit是至少10240KB,Hard Limit是至少10240KB,至少32768KB
可以在以相关用户登录后,用
ulimit -Sn
ulimit -Hn
ulimit -Su
ulimit -Hu
ulimit -Ss
ulimit -Hs
来查看。
现在用vi /etc/security/limits.conf,增加
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
# mkdir -p /u01/app/# chown -R oracle:oinstall /u01/app/# chmod -R 775 /u01/app/
1)安装依赖yum -y install binutils compat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-devel glibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel make sysstat2)添加用户/usr/sbin/groupadd oinstall/usr/sbin/groupadd dba/usr/sbin/useradd -g oinstall -G dba oraclepasswd oracle3)修改内核参数 vi /etc/sysctl.conf#######fs.aio-max-nr = 1048576fs.file-max = 6815744kernel.shmall = 2097152kernel.shmmax = 536870912kernel.shmmni = 4096kernel.sem = 250 32000 100 128net.ipv4.ip_local_port_range = 9000 65500net.core.rmem_default = 262144net.core.rmem_max = 4194304net.core.wmem_default = 262144net.core.wmem_max = 1048586#######保存后,/sbin/sysctl -p4)修改用户资源限制 vi /etc/security/limits.conf#####oracle soft nproc 2047oracle hard nproc 16384oracle soft nofile 1024oracle hard nofile 65536oracle soft stack 10240#####5)创建目录mkdir -p /usr/local/oracle /usr/local/oraInventory /usr/local/oradata/chown -R oracle:oinstall /usr/local/oracle /usr/local/oraInventory /usr/local/oradata/chmod -R 775 /usr/local/oracle /usr/local/oraInventory /usr/local/oradata/6)设置用户环境su – oraclevi .bash_profile打开后填入:#####export ORACLE_BASE=/usr/local/oracleexport ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1export ORACLE_SID=salesexport ORACLE_OWNER=oracleexport PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin####保存修改后执行source .bash_profile7)将下载的Oracle文件用WinScp拷贝到Home目录下,先切换到root用户,su –并解压。然后修改目录权限:chmod 777 /home/databasechown -R oracle.oinstall /home/database8)创建oraInst.loc文件: vi /etc/oraInst.loc#####inventory_loc=/usr/local/oraInventoryinst_group=oinstall#####保存修改后再赋权chown oracle:oinstall /etc/oraInst.locchmod 664 /etc/oraInst.loc9)创建Response文件:vi /home/database/response/db_install.rsp###oracle.install.option=INSTALL_DB_AND_CONFIGORACLE_HOSTNAME=oracledbUNIX_GROUP_NAME=oinstallINVENTORY_LOCATION=/usr/local/oraInventorySELECTED_LANGUAGES=en,zh_CNORACLE_HOME=/usr/local/oracle/product/11.2.0/db_1ORACLE_BASE=/usr/local/oracleoracle.install.db.InstallEdition=EEoracle.install.db.DBA_GROUP=oinstalloracle.install.db.OPER_GROUP=oinstalloracle.install.db.config.starterdb.type=GENERAL_PURPOSEoracle.install.db.config.starterdb.globalDBName=oracleoracle.install.db.config.starterdb.SID=salesoracle.install.db.config.starterdb.memoryLimit=512oracle.install.db.config.starterdb.password.ALL=Oracle123oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGEoracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/usr/local/oradata/ora11g/ORA11GDECLINE_SECURITY_UPDATES=true###我是把原来的内容都注释掉再将此文件复制进去,按说只要复制到文件的最后就可以了。10)开始安装su – oracle/home/database/runInstaller -silent -responseFile /home/database/response/db_install.rsp安装很快,然后出现一些错误提示切换到Rootsu –再运行一下/usr/local/oracle/product/11.2.0/db_1/root.sh仍有错误提示。
sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Tue Jun 18 15:03:48 2013Copyright (c) 1982, 2009, Oracle. All rights reserved.Connected to:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options
select * from v$version;
SQL> select * from v$version;
BANNER——————————————————————————–Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – 64bit ProductionPL/SQL Release 11.2.0.1.0 – ProductionCORE 11.2.0.1.0 ProductionTNS for Linux: Version 11.2.0.1.0 – ProductionNLSRTL Version 11.2.0.1.0 – Production