centos510安装oracle教程及问题分析.docx
《centos510安装oracle教程及问题分析.docx》由会员分享,可在线阅读,更多相关《centos510安装oracle教程及问题分析.docx(15页珍藏版)》请在冰豆网上搜索。
centos510安装oracle教程及问题分析
操作系统:
CentOS5.1064位
数据库:
Oracle11GR2(版本号为11.02)
安装操作系统的时候,注意交换分区的大小不得低于2G,主分区最好大点本次分配了10G
1.同步时钟及修改/etc/hosts
yum-yinstallntp
ntpdatetime.nist.gov
echo"**/2***/sbin/ntpdatetime.nist.gov">>/etc/crontab
修改/etc/hosts
将机器名称加入,我这里的是node1,则
2.关闭服务:
iptablesselinuxportmaprpc.statdcupsdavahi-daemonsendmailkillalliptables
chkconfig--level2345iptablesoff
killallportmap
chkconfig--level2345portmapoff
killallavahi-daemon
chkconfig--level2345avahi-daemonoff
killallsendmail
chkconfig--level2345sendmailoff
3.安装oracle11gR2依赖的组件包
yum-yinstallbinutilscompat-libstdc++-33elfutils-libelfelfutils-libelf-develglibcglibc-commonglibc-develgccgcc-c++libaio-devellibaiolibgcclibstdc++libstdc++-develmakesysstatunixODBCunixODBC-develpdkshnumactl-develglibc-headers libaio-devellibaio
/sbin/ldconfig
4.调整内核参数
vi/etc/sysctl.conf
fs.file-max=6815744
kernel.shmall=2097152
kernel.shmmax=536870912
kernel.shmmni=4096
kernel.sem=25032000100128
net.ipv4.ip_local_port_range=900065500
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
fs.aio-max-nr=1048576
#让内核参数生效
sysctl-p
5.修改limits.conf
vi/etc/security/limits.conf
#oraclesettings
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
6.改/etc/pam.d/login
#添加以下内容:
session required /lib64/security/pam_limits.so
session required pam_limits.so
注意:
如果使用的是32位的操作系统,则上面要写成
session required /lib/security/pam_limits.so
session required pam_limits.so
7.修改/etc/profile
vi/etc/profile
#添加以下内容:
if[$USER="oracle"];then
if[$SHELL="/bin/ksh"];then
ulimit-p16384
ulimit-n65536
else
ulimit-u16384-n65536
fi
fi
8.改/etc/csh.login
vi/etc/csh.login
#添加以下内容:
if($USER=="oracle")then
limitmaxproc16384
limitdeors65536
endif
9.创建oracle用户
groupaddoinstall
groupadddba
useradd-goinstall-Gdbaoracle
passwdoracle
mkdir-p/data/oracle
mkdir-p/data/oraInventory
mkdir-p/data/software
chown-Roracle:
oinstall/data/oracle
chown-Roracle:
oinstall/data/software
chown-Roracle:
oinstall/data/oraInventory
10.设置用户环境变量
#su-oracle
$vi.bash_profile
#添加以下内容:
ORACLE_SID=orcl;exportORACLE_SID
ORACLE_BASE=/data/oracle;exportORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1;exportORACLE_HOME
PATH=$PATH:
$ORACLE_HOME/bin:
$HOME/bin;exportPATH
说明:
ORACLE_BASE下是admin和product
ORACLE_HOME下则是ORACLE的命令、连接库、安装助手、listener等等一系列的东东。
这只是ORACLE自己的定义习惯。
ORACLE_HOME比ORACLE_BASE目录要更深一些。
也就是说:
ORACLE_HOME=$ORACLE_BASE/product/version
ORACLE_BASE是oracle的根目录,ORACLE_HOME是oracle产品的目录。
简单说,你如果装了2个版本的oracle,那么ORACLE_BASE可以是一个,但ORACLE_HOME是2个
全局数据库名用于区别分布式数据库各个不同机器上的实例。
SID用于区别同一台机器上的不同实例,
即一个用于外部区分。
一个用于内部区分。
$source.bash_profile
11.安装oracle
#可以使用winscp上传oracle安装文件到/data/software目录下,并解压
cd/data/software
unziplinux_11gR2_database_1of2.zip
unziplinux_11gR2_database_2of2.zip
xhost+ (这里使用root用户执行,一定要执行以下2步,如果没有执行,将无法启动图形安装界面)
xhost+localhost
su-oralce
cd/data/software/database
$./runInstaller #(到oracle安装文件所在目录执行该命令)
安装过程省略
12.开机启动设置
#自动启动和关闭数据库实例和监听
vi/data/oracle/product/11.2.0/db_1/bin/dbstart
ORACLE_HOME_LISTNER=$1
#修改为:
ORACLE_HOME_LISTNER=$ORACLE_HOME
vi/data/oracle/product/11.2.0/db_1/bin/dbshut
ORACLE_HOME_LISTNER=$1
#修改为:
ORACLE_HOME_LISTNER=$ORACLE_HOME
vi/etc/init.d/oracle
#!
/bin/sh
#chkconfig:
3456161
#description:
Oracle11gAutoRunServices
#/etc/init.d/oracle
#
#Run-levelStartupscriptfortheOracleInstance,Listener,and
#WebInterface
exportORACLE_BASE=/data/oracle
exportORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
exportORACLE_SID=luke
exportPATH=$PATH:
$ORACLE_HOME/bin
ORA_OWNR="oracle"
#iftheexecutablesdonotexist--displayerror
if[!
-f$ORACLE_HOME/bin/dbstart-o!
-d$ORACLE_HOME]
then
echo"Oraclestartup:
cannotstart"
exit1
fi
#dependingonparameter--startup,shutdown,restart
#oftheinstanceandlistenerorusagedisplay
case"$1"in
start)
#Oraclelistenerandinstancestartup
su$ORA_OWNR-lc$ORACLE_HOME/bin/dbstart
echo"OracleStartSuccesful!
OK."
;;
stop)
#Oraclelistenerandinstanceshutdown
su$ORA_OWNR-lc$ORACLE_HOME/bin/dbshut
echo"OracleStopSuccesful!
OK."
;;
reload|restart)
$0stop
$0start
;;
*)
echo$"Usage:
`basename$0`{start|stop|reload|reload}"
exit1
esac
exit0
chmod750/etc/init.d/oracle
chkconfig--level345oracleon
chkconfig--addoracle
#启动oracle
serviceoraclestart
自动启动和关闭EM
vi/etc/init.d/oraemctl
#!
/bin/sh
#chkconfig:
3456161
#description:
Oracle11gAutoRunServices
#/etc/init.d/oraemctl
#
#Run-levelStartupscriptfortheOracleInstance,Listener,and
#WebInterface
exportORACLE_BASE=/data/oracle
exportORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
exportORACLE_SID=luke
exportPATH=$PATH:
$ORACLE_HOME/bin
ORA_OWNR="oracle"
case"$1"in
start)
echo-n$"StartingOracleEMDBConsole:
"
su- $ORA_OWNR -c"$ORACLE_HOME/bin/emctlstartdbconsole"
echo"OK"
;;
stop)
echo-n$"StoppingOracleEMDBConsole:
"
su- $ORA_OWNR -c"$ORACLE_HOME/bin/emctlstopdbconsole"
echo"OK"
;;
*)
echo$"Usage:
$0{start|stop}"
esac
chmod750/etc/init.d/oraemctl
#启动EM
serviceoraemctlstart
问题分析:
linux安装oracle时DISPLAY解决方法
在Linux上安装Oracle时,经常会报以下错误:
无法使用命令/usr/X11R6/bin/xdpyinfo自动检查显示器颜色。
请检查是否设置了DISPLAY变量。
可以使用下述命令解决这个问题:
1.在root下执行
#xdpyinfo若不能正常显示继续下面步骤
2.进入桌面环境运行终端 在root下执行
#xhost+localhost
3.切换到Oracle用户:
#su-oracle
4.在Oracle用户下执行命令:
exportDISPLAY=:
1.0
5.#xhost+
返回信息为:
accesscontroldisabled,clientscanconnectfromanyhost
6.在Oracle下执行xdpyinfo命令,如果能正常显示,说明设置成功
linux下oracle设置环境变量
需要设置ORACLE_HOME和ORACLE_SID两个环境变量,再把ORACLE的bin目录添加到PATH中即可,
通常缺省安装的情况下ORACLE_SID=orcl,ORACLE_HOME=/home/oracle/oracle/product/10......这样的形式,
操作步骤:
1、suoracle并回车切换到oracle用户;
2、cd并回车回到oracle用户目录;
cd/home/oracle
ls-a
3、vi.bash_profile并回车编辑该文件,按I键进入插入状态,在最后加入以下行:
exportORACLE_SID=orcl
exportORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
exportPATH=$ORACLE_HOME/bin:
$PATH
输入完毕后按ESC键退出vi编辑状态,
输入:
wq并回车存盘退出。
注销所有oracle用户,再使用oracle登录即可。
安装时若遇到如下错误直接忽略
Errorininvokingtarget'agentnmbnmonmhs'ofmakefileins_emagent.mk'这个错误。
从网上的一些解决方法,我感觉像是ORACLE暂时对RHEL6支持不够造成的。
我直接忽略了,点击继续安装
在linux下出现cannotrestoresegmentprotafterreloc:
Permissiondenied
应用程序连接oracle的库时会出现如下错误:
XXXXX:
:
errorwhileloadingsharedlibraries:
/usr/local/oracle/product/10.2.0/lib/libnnz10.so:
cannotrestoresegmentprotafterreloc:
Permissiondenied
或者:
XXXXX:
:
errorwhileloadingsharedlibraries:
/usr/local/oracle/product/10.2.0/lib/libclntsh.so.10.1:
cannotrestoresegmentprotafterreloc:
Permissiondenied
等错误。
解决办法是用chcon命令把相应文件的属性改一下即可,如:
chcon-ttexrel_shlib_t /usr/local/oracle/product/10.2.0/lib/libnnz10.so
chcon-ttexrel_shlib_t /usr/local/oracle/product/10.2.0/lib/libclntsh.so.10.1
上诉文件目录参考时要改成自己的。
解决执行Oracle控制脚本时遇到的“cat:
/etc/oratab:
没有那个文件或目录”的问题
打开dbshut 指令查看,发现了引起错误的语句:
:
#
#$Header:
dbshut.sh.pp03-apr-2001.13:
38:
20jboyceExp$dbshut.sh.ppCopyr(c)1991Oracle
#
###################################
#
#usage:
dbshut
#
#ThisscriptisusedtoshutdownORACLEfrom/etc/rc(.local).
#ItshouldONLYbeexecutedaspartofthesystembootprocedure.
#
#####################################
ORATAB=/etc/oratab
查看相应的文件
#find /etc/oratab
find:
/etc/oratab:
没有那个文件或目录
这个文件居然不存在,确定是由于该文件的丢失引起的原因。
通过如下指令查看该文件是否在系统其它地方
#find/-name“oratab”
结果居然没找到。
估计是当初安装Oracle的遗留问题。
解决方案
由于该文件已经丢失,所以到另外一台安装了同样版本的Oracle的服务器上查询相应的文件,果然找到了相应的文件,内容如下:
#
#ThisfileisusedbyORACLEutilities. Itiscreatedbyroot.sh
#andupdatedbytheDatabaseConfigurationAssistantwhencreating
#adatabase.
#Acolon,':
',isusedasthefieldterminator. Anewlineterminates
#theentry. Linesbeginningwithapoundsign,'#',arecomments.
#
#Entriesareoftheform:
# $ORACLE_SID:
$ORACLE_HOME:
:
#
#Thefirstandsecondfieldsarethesystemidentifierandhome
#directoryofthedatabaserespectively. Thethirdfiledindicates
#tothedbstartutilitythatthedatabaseshould,"Y",orshouldnot,
#"N",bebroughtupatsystemboottime.
#
#Multipleentrieswiththesame$ORACLE_SIDarenotallowed.
#
#
#*:
/opt/ora9/product/9.2:
N
#*:
/opt/ora9/product/9.2:
N
*:
/opt/ora9/product/9.2:
N
oracle:
/opt/ora9/product/9.2:
N
demo:
/opt/ora9/product/9.2:
N
拷贝完以后一定记得要修改相应的内容。
P.S.
对于oratab文件的说明:
1.只在Linux环境中存在
2.设置格式:
:
:
示例:
oracle:
/opt/ora9/product/9.2:
N
3.可以为不同的数据库设置相应的选项
4.如果想用$ORACLE_HOME/bin/dbstart脚本来启动数据库,则需要将/etc/oratab文件中相应的数据库的项置为Y,
简单的说即dbstart脚本根据oratab文件中的配置决定启动哪几个数据库。
5.如果不使用dbstart脚本启动数据库,而是用自己的脚本来启动,那么根本不用关心oratab文件。
EnvironmentvariableORACLE_UNQNAMEnotdefined.PleasesetORACLE_UNQNAMEtodatabaseuniquename
解决方法:
在启动的时候先设置一下oracle_unqname
setoracle_unqname=$ORACLE_SID
如果还是失败,在环境变量中添加:
vi~/.bash_profile
在最后添加:
export ORACLE_UNQNAME=$ORACLE_SID
启动dbconsole
emctl start dbconsole
如果还出现上述的错误:
删除dbconsole重新配置
emca-deconfigdbconsoledb-reposdrop
如果删除失败,进入数据库删除dbconsole以前的用户,并且修改DBSNMP密码
sql>alteruserdbsnmpidentifiedbyorcl;
删除早期DBCONSOLE创建的用户:
sql>droproleMGMT_USER;
sql>dropuserMGMT_VIEWcascade;
sql>dropusersysmancascade;
删除早期DBCONSOLE创建的对象:
sql>dropPUBLICSYNONYMMGMT_TARGET_BLACKOUTS;
sql>droppublicsynonymSETEMVIEWUSERCONTEXT;
重新创建DBCONSOLE:
(如果是在windows下,要先到注册表删除DBCONSOLE的服务,重启电脑)
emca-configdbcontroldb-reposcreate
根据提示,先输入SID,再输入Y继续;
输入端口1521,输入SYS密码,输入DBSNMP