一 安装linux
1 Linux系统 安装前的准备
linux安装建议:
1)脑内存1G+,交换空间是物理内存的两倍,空闲空间(/tmp目录)至少1G
2)选择服务时,建议全部选中,关闭防火墙,关闭selinux
3)安装时,不要设置主机名,ip和DNS,在安装完毕之后再设置
4)安装redhat5时要独立分配磁盘给SWAP,空间大小应该是内存大小*2
2 安装
把RedHat linux第一张安装光盘插入光驱(BIOS里面设置从光盘引导)。
引导成功之后
选择F3-GeneralGH
按Tab键,选中SKIP,再按回车键,系统开始安装
选择“简体中文”
选择“美国英语式”
在弹出的对话框输入序列号“2515dd4e215225dd”
在分区时选择“建立自定义的分区结构”
开始分区
建议分区配置504G
/ ……5G
/boot ……2G
/swap ……20G
/home ……30G
/opt ……12G
/oracle ……360G
/app ……20G
/tmp ……10G
/usr ……20G
/usr/local……10G
/var ……15G
主机名填写“mobile”
根密码填写“rootadmin”
选择“软件开发” ,“现在定制”
选择上面所选的安装,语言支持只选择“中文支持” ,“英语支持”
安装完成后,自动重启
3 开启服务
3.1 设置网卡地址
3.2 开启FTP
成功以后,点击“保存”
最后重启服务器
二 安装前的配置
1 创建用户和用户组
# groupadd dba
# groupadd oinstall
# useradd oracle -g oinstall -G dba
# passwd oracle
如果nobody用户不存在(# id nobody命令查看),则创建:
# useradd nobody
2 创建oracle安装文件夹(sample)
# mkdir -p /opt/oracle/product/11g
# mkdir /opt/oracle/ oradata
# mkdir /opt/oraInventory
# chown -R oracle.oinstall /opt/oracle
# chown oracle.oinstall /opt/oraInventory/
# chmod 755 -R /opt/oracle
# chmod 755 /opt/oraInventory/
3 配置环境变量
要使用 Oracle 产品,应该或必须设置几个环境变量。如果您在同一服务器上安装了多个 Oracle 产品或数据库,则 ORACLE_HOME、ORACLE_SID 和 PATH 变量可能会更改。ORACLE_BASE 变量不应更改,并可以在需要时在您的登录配置文件中设置它。Oracle 提供了一个称作 oraenv 的实用程序来设置其他变量。
对于数据库服务器,建议设置以下环境变量:
使用第一步创建的用户名Oracle登陆:
su oracle
vi ~/.bash_profile
修改以下是配置文件的内容
ORACLE_BASE=/opt/oracle
export ORACLE_BASE
ORACLE_HOME=/opt/oracle/product/11g
export ORACLE_HOME
ORACLE_SID=orcl
export ORACLE_SID
PATH=$ORACLE_HOME/bin:$PATH
export PATH
ESC(退出vi的编辑环境)
:wq(退出vi应用程序并保存修改)
安装好后再取消屏蔽这些环境变量设置
#TNS_ADMIN=$ORACLE_HOME/network/admin
#export TNS_ADMIN
#NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#export NLS_LANG
#LANG=AMERICAN_AMERICA.ZHS16GBK
#export LANG
配置好后用 source .bash_profile 命令使配置生效
4 设置系统内核参数
Oracle 数据库 10g 需要以下所示的内核参数设置。
其中给出的是最小值,因此如果您的系统使用的值较大,则不要更改它。
切换到root用户:
su root
a) 修改/etc/sysctl.conf(vi /etc/sysctl.conf), 添加:
[root@localhost install]# vi /etc/sysctl.conf
# oracel intall add parameters
#kernel.shmmax = 2147483648
kernel.shmmni=4096
#kernel.shmall = 2097152
kernel.sem=250 32000 100 128
fs.file-max=6815744
fs.aio-max-nr=1048576
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"命令使得内核改变立即生效;
b) 设置oracle对文件的要求:
编辑文件:vi /etc/security/limits.conf 加入以下语句:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
编辑文件:vi /etc/pam.d/login 加入以下语句(可能应该加在最后一条规则之前):
session required /lib/security/pam_limits.so
三 开始安装
Oracle的安装建议在物理机器上安装,如果只能使用SSH远程安装的话,可以使用支持图形显示的SSH软件进行安装
解压缩oracle 11g 的安装文件
# unzip linux_11gR2_database_1of2.zip
# unzip linux_11gR2_database_2of2.zip
# cd database
# ./runInstaller
如果出现提示 Check if the DISPLAY variable is set. 错误提示信息,则使用root用户执行:
# xhost +
# export DISPLAY=:1.0
# su oracle 切换回oracle用户再次执行# ./runInstaller
如果还出现错误的话,则重启系统,直接使用oracle用户登录系统
开始安装之后出现如下界面
选择oracle服务器的类型,简单安装的话选择‘桌面类型’就可以了,对于正式应用的话需要选择‘服务器类型’安装
第一项:单个oracle服务器安装,第二项:oracle集群安装
选择语言,默认选择english
ora11g/ora11g
设置oracle使用的内存大小,按默认设置就好了
这里需要设置字符集,设置字符集为utf-8
设置oracle数据库文件存放路径 /u01/oracle/oradata
设置oracle的自动备份功能,按需求设定
设置sys,system等用户的密码,可以设置成同一个也可以分别设置,按需配置 (这里如果设置的密码过于简单,oracle会给出错误提示,可以直接跳过)
sys 数据库的拥有者
system 数据库管理员
sysdba 数据库超级用户
默认设置就好
Oracle检查安装前置条件,这里列出了所有检查失败的前置条件,我们首先要解决这些错误前置条件才能继续安装
我们逐个来查看具体的错误提示信息
所有的错误信息分两大类,上面的为系统内核的配置错误(基本是由于一些参数配置过小而不符合oracle的建议参数);下面的为oracle服务的依赖包没有安装
STEP 1:
安装缺少的依赖包,(需要用root用户),这些缺少的依赖包可以在系统的安装iso中找到:
查询包是否存在的命令:rpm -q grep binutils-2.*
安装包的命令:rpm -Uvh glibc-2.*
STEP 2:
修改内核配置参数,以支持oracle的建议参数,在/etc/sysctl.conf配置中加入以下配置(如果在“安装前的配置”步骤中已经配置了则这里无需再配置)
[root@localhost install_file]# vi /etc/sysctl.conf
# oracel intall add parameters
kernel.shmmni=4096
kernel.sem=250 32000 100 128
fs.file-max=6815744
fs.aio-max-nr=1048576
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
修改之后运行,是内核配置立即生效
[root@localhost install_file]# /sbin/sysctl -p
解决完错误之后,点击 Check Again按钮,重新检查之后,可以看到所有问题已经解决,点击Finish 按钮完成安装
四 配置oracle服务随系统启动
1 第一步
修改/etc/oratab文件,需要将localorc:/opt/oracle/product/11g:N最后的N改成Y
(如果/etc/oratab文件不存在,则需要使用root用户执行$ORACLE_HOME/root.sh文件
# sh /opt/oracle/product/11g/root.sh)
[root@lzc-centos6 ~]# cat /etc/oratab
orcl:/opt/oracle/product/11g:N
[root@lzc-centos6 ~]# vi /etc/oratab
localorc:/opt/oracle/product/11g:Y
2 第二步
使用oracle的安装用户(oracle)修改$ORACLE_HOME/bin/dbstart文件,修改之前最好先备份一下,使用如下命令
[oracle@lzc-centos6 bin]$ cp /opt/oracle/product/11g/bin/dbstart /opt/oracle/product/11g/bin/dbstart.bak
找到ORACLE_HOME_LISTNER=…这行,修改成
ORACLE_HOME_LISTNER=/opt/oracle/product/11g
或者直接修改成:
ORACLE_HOME_LISTNER=$ORACLE_HOME
3 第三步
测试运行dbshut,dbstart
(1)修改dbstart和dbshut的日志文件的权限(如果这两个文件不存在,先手工touch):
root用户先创建这两个文件
# cd $ORACLE_HOEM/bin
[root@lzc-centos6 11g]# touch startup.log
[root@lzc-centos6 11g]# chown oracle.oinstall startup.log
[root@lzc-centos6 11g]# chmod 755 startup.log
[root@lzc-centos6 11g]# touch shutdown.log
[root@lzc-centos6 11g]# chown oracle.oinstall shutdown.log
[root@lzc-centos6 11g]# chmod 755 shutdown.log
[root@lzc-centos6 11g]# ls -l startup.log shutdown.log
-rwxr-xr-x. 1 oracle oinstall 0 Jan 8 13:50 shutdown.log
-rwxr-xr-x. 1 oracle oinstall 0 Jan 8 13:49 startup.log
(2)执行相应的脚本进行测试
[root@lzc-centos6 11g]# su - oracle
[oracle@lzc-centos6 ~]$ cd $ORACLE_HOME
[oracle@lzc-centos6 bin]$ dbshut #(or dbstart)
(3)创建oracle服务启动脚本:oradbstart(使用root用户)
[root@lzc-centos6 11g]# touch /home/oracle/oradbstart
# chown oracle.oinstall /home/oracle/oradbstart
# chmod 775 /home/oracle/oradbstart
拷贝内容之后,需要将该文件copy到/etc/rc.d/init.d/目录下
# cp /home/oracle/oradbstart /etc/rc.d/init.d/oradbstart
将oradbstart加入到系统启动列表中
[root@lzc-centos6 init.d]# chkconfig --add /home/oracle/oradbstart
[root@lzc-centos6 init.d]# chkconfig --list oradbstart
oradbstart 0:off 1:off 2:off 3:on 4:on 5:on 6:off
注:在使用 chkconfig –add命令时候如果出现以下错误
[root@lzc-centos6 init.d]# chkconfig --add /home/oracle/oradbstart
error reading information on service oradbstart: No such file or directory
需要检查/home/oracle/oradbstart文件是否正确,如果copy文字的话可能出现丢失头上的一两行的情况,检查改文件的头部是否如下:(如果不是需改之后重新copy到/etc/rc.id/init.d/目录下)
#!/bin/bash
# chkconfig: 345 99 10
# description: Startup Script for oracle Databases
脚本内容如下(亲,记得根据自己的数据库配置做相应的修改哟):
[root@lzc-centos6 11g]# cat /home/oracle/oradbstart
#!/bin/bash
# chkconfig: 345 99 10
# description: Startup Script for oracle Databases
# /etc/rc.d/init.d/dbstart
export ORACLE_BASE=/opt/oracle/
export ORACLE_HOME=/opt/oracle/product/11g/
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl start "
su $ORA_OWNR -c "$ORACLE_HOME/bin/dbstart"
touch /var/lock/oracle
su $ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
su $ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctl start"
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su $ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"
su $ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctl stop"
su $ORA_OWNR -c "$ORACLE_HOME/bin/dbshut"
su $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
rm -f /var/lock/oracle
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac
exit 0
测试快速启动命令:
[root@lzc-centos6 init.d]# /etc/rc.d/init.d/oradbstart stop
[root@lzc-centos6 init.d]# /etc/rc.d/init.d/oradbstart start
重启linux
# reboot –n
在linux启动的时候,你就可以看到一个启动项oracle,出现[OK]的时候,就表示你的数据库随系统启动了。
# su – oracle
# ps –ef|grep ora
4 遇到错误及解决办法
1)error while loading shared libraries: /opt/oracle/product/11g/
lib/libclntsh.so.11.1: cannot restore segment prot after reloc: Permission denied
解决办法:
先解决libclntsh.so的问题:
[root@bt bin]# semanage fcontext -a -t textrel_shlib_t /home/mnum/app/mnum/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1
csvn homedir /opt/CollabNet_Subversion or its parent directory conflicts with a defined context in /etc/selinux/targeted/contexts/files/file_contexts, /usr/sbin/genhomedircon will not create a new context. This usually indicates an incorrectly defined system account. If it is a system account please make sure its login shell is /sbin/nologin.
[root@bt bin]# restorecon -R -v /home/mnum/app/mnum/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1
restorecon reset /home/mnum/app/mnum/product/11.2.0/dbhome_1/lib/libclntsh.so.11.1 context user_u:object_r:user_home_t:s0->system_u:object_r:textrel_shlib_t:s0
[root@bt bin]# ./sqlplus
Error 6 initializing SQL*Plus
SP2-0667: Message file sp1.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory
解决方法:
第一,用oracle用户名登录linux系统。而不是root登录后su oracle。
2)bash: chkconfig: command not found
解决办法:
[root@xuniji ~]# rpm -aq |grep chkconfig
chkconfig-1.3.30.1-2
[root@xuniji ~]# export PATH=/sbin:$PATH
[root@xuniji ~]# chkconfig
chkconfig version 1.3.30.1 - Copyright (C) 1997-2000 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.
usage: chkconfig --list [name]
chkconfig --add <name>
chkconfig --del <name>
chkconfig [--level <levels>] <name> <on|off|reset|resetpriorities>
[root@xuniji ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/gtl/bin
[root@xuniji ~]# PATH="$PATH":/sbin
[root@xuniji ~]# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/gtl/bin:/sbin
大功告成!!!
五 安装过程中的错误解决办法
1 数据库实例安装失败
安装过程中碰到在‘Oracle Net Configuration Assistant’这步的时候失败,导致oracle实例没法继续安装
解决办法:
通过查看安装日志发现出现改错误的异常是因为端口被占用,但通过netstat命令来查看1521端口并没有其他程序在使用,于是google,baidu折腾一把大致说法是因为/etc/hosts里面的主机名和IP的映射配置有问题(因为系统在安装的过程中我手动设置了,而且系统安装的时候并没设置静态IP,而是用DHCP获取地址,并且还同时开启了IPv4和IPv6的地址),这样可能导致oracle网络配置的时候解析本机主机名的时候出错,具体修改办法:
Step 1:# vi /etc/hosts,加上本机ip和本机主机名的映射,去掉IPV6的配置
[root@lzc-centos6 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.1.102 lzc-centos6
Step 2:# vi /etc/host.conf,加上 order hosts, bind;表示先通过/etc/hosts文件查找再通过域名服务器查找(域名服务地址配置文件/etc/resolv.conf)
[root@lzc-centos6 ~]# cat /etc/host.conf
order hosts, bind
multi on
Step 3:重启监听成功
# lsnrctl start 启动监听
2 EM 页面出现乱码
访问 https://192.168.1.102:1158/em页面发现乱码出现
注:如果oracle管理台已经启动,而无法访问该页面的话,需要检查你linux服务器的防火墙的配置,是否允许其他机器访问1158端口,具体linux防火墙的配置百度之
oracle 11g使用的是jdk1.5,jdk1.5以后有了一个简便方法来解决这个问题,只需在$JAVA_HOME/jre/lib/fonts/下建一个fallback目录,把你想在java中使用的字体复制到这个目录中即可,在oracle用户下:
$ mkdir $ORACLE_HOME/jdk/jre/lib/fonts/fallback
把windows下的字体文件simsun.ttc复制到$ORACLE_HOME/jdk/jre/lib/fonts/fallback目录下并改名simsun.ttf(注意ms的simsun字体是有版权的,所以商用换其他字体),相应的权限改为oracle用户可用.
之后需要清理一下Cache,重启EM即可:
命令如下:
[root@lzc-centos6 ~]# chown oracle.oinstall /opt/oracle/product/11g/jdk/jre/lib/fonts/fallback/simsunb.ttf
[root@lzc-centos6 ~]# chmod 755 /opt/oracle/product/11g/jdk/jre/lib/fonts/fallback/simsunb.ttf
[oracle@lzc-centos6 ~]$ rm /opt/oracle/product/11g/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs/*.gif
[oracle@lzc-centos6 ~]$ emctl start dbconsole
亲,这样搞不行啊,还是乱码!(留待后续解决。。。)
3修改oracle服务器内存,导致服务启动失败
通过oracle的管理工具,修改oracle服务使用的内存大小后(从开始的880M修改到2G),出现” ORA-00845: MEMORY_TARGET not supported on this system”错误信息,并且oracle实例也启动不了。
ORA-00845: MEMORY_TARGET not supported on this system
官方解释:
ORA-00845: MEMORY_TARGET not supported on this system
Cause: The MEMORY_TARGET parameter was not supported on this operating system or /dev/shm was not sized correctly on Linux.
Action: Refer to documentation for a list of supported operating systems. Or, size /dev/shm to be at least the SGA_MAX_SIZE on each Oracle instance running on the system.
意思是oracle SGA的大小超过了系统shm的大小,有两种解决方案:
1.修改shm的大小;
2. 修改SGA_MAX_SIZE的大小。
建议修改shm,shm类似于Windows平台的虚拟内存,shm默认自动调节大小,大约是内存的一半。我的服务器内存是3G,当shm小于SGA,启动oracle就会出现此问题。
解决方案是自定义shm的大小,需要修改/etc/fstab文件:
[root@lzc-centos6 ~]# vi /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=1536M 0 0
# 设置成1536(1.5G),为系统内存3G的一半,注该值最好不要设置成大于系统内存一半以上,否则重启系统之后,改值会继续变成系统内存的一半(为啥,I’ don’t know.)
[root@lzc-centos6 ~]# umount /dev/shm/
[root@lzc-centos6 ~]# mount /dev/shm/
重启oracle服务器,正常启动
注:如果一开始将Maximum Memory Size设置过大的话,想要重新调小的话,可以先 Disable掉Automatic Memory Management选项,然后修改Maximum SGA Size (MB),之后再Enable Automatic Memory Management,这时可以重新设置Maximum Memory Size的大小。
4对于src.rpm依赖包的安装
1.执行rpm -i you-package.src.rpm
2. cd /usr/src/redhat/SPECS
3.rpmbuild -bb your-package.specs 一个和你的软件包同名的specs文件,这时在/usr/src/redhat/RPM/i386/ (根据具体包的不同,也可能是i686,noarch等等)在这个目录下,有一个新的rpm包,这个是编译好的二进制文件。
执行rpm -ivh new-package.rpm即可安装完成。
5 注意事项
1):主机名
/etc/sysconfig/network 和 hostname的主机名要一致
/etc/hosts 中的主机名要和本机的ip地址正确的对应
2):主机需要使用静态的ip地址
3):如果出现display硬件检测不过关则需要在root用户下执行
Export display=:0.0命令 和xhost +命令 然后再su到oracle用户下
4):如果在检测时检测sysctl配置不过关 则按照提示修改相应选项的值然后执行/sbin/sysctl –p /etc/sysctl.conf命令 再进行尝试安装
5):如果检测网络时出现要求用静态ip的问题 可以忽略
6):注意环境变量的设置