1.
创建用户组dba和用户oracle,并设置用户oracle口令
#groupadd oinstall (建立产品清单管理组)
#groupadd dba (建立数据库安装组)
#groupadd oper (建立操作管理组)
#groupadd asmadmin
(建立ASM管理组)
#groupadd asmdba (建立Grid管理组)
# useradd -g oinstall
-G dba,oper,asmadmin,asmdba oracle -d
/home/oracle
# usermod -g oinstall -G
dba,oper,asmadmin oracle
#passwd oracle
- 创建存放oracle安装文件的文件夹,并更改权限
#mkdir -p /home/oracle
#chown -R
oracle:oinstall /home/oracle
#chmod -R 775
/home/oracle
- 创建安装oracle的目录
#mkdir -p /usr/share/oracle/oracle11gR2
#chown -R oracle:oinstall /usr/share/oracle/
#chmod -R 755 /usr/share/oracle
- 解压oracle的安装文件(必须进入放安装文件的目录里,如/home/oracle)
#unzip /home/oracle/linux_11gR2_database_1of2.zip
#unzip /home/oracle/linux_11gR2_database_2of2.zip
- 安装软件包检查
#yum install binutils
compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc
glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++
libstdc++-devel make sysstat unixODBC unixODBC-devel pdksh
对于pdksh软件包,fedora12,13如下(redhat下可以从安装文件下找到,fedora14不能,不用安装)可从以下URL下载:ftp://fr2.rpmfind.net/linux/PLD/dists/ac/ready/i686/pdksh-5.2.14-33.i686.rpm
由于该包中设定的sh的符号联接及man文档与bash软件包冲突,需要使用以下方法安装:
rpm –iv - -replacefiles pdksh-5.2.14-33.i686.rpm
然后,挂载Fedora12 DVD,移动至Packages目录下,重新安装bash:
rpm –iv - -replacepkgs -
-replacefiles bash-4.0.33-1.fc12.i686.rpm
- 做个链接(老版本需求,新版本oracle11不要设置):
ln -s /usr/lib/libstdc .so.6.0.3 /usr/lib/libstdc .so.5 - 关掉防火墙和selinux 重新启动计算机
- 设置/etc/hosts文件
增加一条:192.168.1.88 localhost.localdomain localhost
- 设置内核参数在/etc/sysctl.conf中添加以下行
#vi /etc/sysctl.conf
#Instal Oracle Config
fs.aio-max-nr
= 1048576
fs.file-max
= 6815744
kernel.shmall
= 2097152
kernel.shmmax
= 2147483648
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
= 1048586
#sysctl -p //执行命令使参数修改生效
- 编辑limits.conf
#vi
/etc/security/limits.conf
#Instal
Oracle Config
oracle soft nproc
2047
oracle hard nproc
16384
oracle soft nofile
1024
oracle hard nofile
65536
- 编辑login文件
#vi /etc/pam.d/login
#Instal Oracle Config
session required
pam_limits.so
session required
/lib/security/pam_limits.so
- 为oracle用户在bash和ksh中设定资源限制
编辑文件 /etc/profile,在末尾加入以下内容:
#vi /etc/profile
#Instal Oracle Config
if [ $USER = "oracle" ]; then
if
[ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
- 编辑/etc/redhat-release文件,把里面的内容替换为下面的内容
#Fedora release 14 (Laughlin)
Red Hat Enterprise
Linux 5
- 用oracle用户登录,把下面的内容添加到~.bash_profile(/home/oracle/.bash_profile)的末尾(oracle用户操作)
#su – oracle
$vi /home/oracle/.bash_profile
#Instal Oracle Config
TMP=/tmp
TMPDIR=$TMP
ORACLE_HOSTNAME=localhost.localdomain
ORACLE_BASE=/usr/share/oracle/oracle11gR2
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
ORACLE_SID=zwm8168
ORACLE_TERM=xterm
ORACLE_UNQNAME=zwm8168
PATH=/usr/sbin:$ORACLE_HOME/bin:$PATH
NLS_LANG="SIMPLIFIED
CHINESE_CHINA.ZHS16GBK"
#NLS_LANG="SIMPLIFIED CHINESE_CHINA.UTF8"
#NLS_LANG="Simplified chinese_china.al32utf8"
#NLS_LANG="SIMPLIFIED
CHINESE_CHINA.GBK"
#LC_CTYPE=zh_CN.GBK
#LC_ALL=zh_CN.UTF8
#LANG=zh_CN.GBK
#JAVA_HOME=java的实际安装路径
#export
EMLOCALHOST=localhost.localdomain
//EMLOCALHOST不是安装所需要的,是为了解决服务器修改IP后,db console不能启动的问题。
NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export TMP TMPDIR
ORACLE_HOSTNAME ORACLE_BASE ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_TERM
ORACLE_UNQNAME PATH NLS_LANG LD_LIBRARY_PATH CLASSPATH NLS_DATE_FORMAT
if [ $USER = "oracle" ]; then
if [ $SHELL =
"/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n
65536
fi
fi
umask 022
stty erase ^h
执行以下命令使之生效:
$ source
$HOME/.bash_profile
- 正式安装
以root身份打开另一个终端窗口
#xhost +
//可能首次通不过,重启以后即可
用oracle用户登录
#su - oracle
$export
DISPLAY=:0.0
$/home/oracle/database/runInstaller
或者$export LANG=en_US/LANG=C
$/home/oracle/database/runInstaller -jreLoc /usr/lib/jvm/java/jre/bin/
单实例使用文件系统的安装完全流程:
1. 配置安全更新(清除“我希望通过My Oracle Support接收安全更新”,选择“是”);

2. 安装选项(选择“创建和配置数据库”);

3. 系统类(服务器类);
4. 
网格选项(单实例数据库安装);

5. 安装类型(“高级安装”);

6. 产品语言(简体中文和英语);

7. 数据库版本(“企业版“,并选择所有“选择选项”);

8. 安装位置(根据ORACLE_BASE和ORACLE_HOME中设置);

9. 创建产品清单(产品清单目录为:/usr/share/oracle/oracle11gR2/oraInventory和选择“是”);

10.配置类型(“一般用途/事务处理”);

11. 数据库标识符(全局数据库名为zwm8168/zwm8168.localdomain和Oracle服务标识符为zwm8168);

12. 配置选项(字符集“从以下字符集列表中选择”选中“简体中文ZHS16GBK,示例方案选中“创建具有示例方案的数据库”);


13. 管理选项(选中Database
Control);

14. 数据库存储(文件系统);

15. 备份和恢复(不启用自动存储备份);


16. 方案口令(使用统一口令和“是”);

17. 操作系统组;

18. 先决条件检查(可以忽略pdksh,点击“全部忽略”;
也可以:rpm –e ksh-20100621-2.el6.i686.rpm
rpm –ivh pdksh_5.2.14-36.el5.i386.rpm
);

如果交换空间不足,可以使用下面的命令来实现:
#dd if=/dev/zero of=tem_swap bs=1k count=900000
#chmod 600 tmp_swap
#mkswap tmp_swap
#swapon tmp_swap
注意: count后面的数字是根据你所缺空间大小决定的,一般为所缺空间大小的10倍即可!!!!
完成后点击“重新检查”即可

19. 概要;

20. 安装产品(其中调用netca和dbca两个配置工具)
#/usr/share/oracle/oracle11gR2/oraInventory/orainstRoot.sh
#/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/root.sh


21.完成。
Linux下的Oracle在安装结束后是处于运行状态的。运行ps –ef或者top –u
oracle可以看到以Oracle用户运行的进程。在图形化界面下,运行$/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/sqldeveloper/sqldeveloper.sh可以出现Oracle自带的免费Oracle管理客户端SQL Developer。试着连接刚安装的Oracle,连接成功。
在浏览器里打开:https://localhost.localdomain:1158/em
常见问题及解决方法
1. 11gR2 输出中文显示的“补丁”

(1)利用系统的字体库
#mkdir –p /usr/share/fonts/zh_CN/TrueType
下载zysong.ttf并把它放到/usr/share/fonts/zh_CN/TrueType/下即可(在windows下载到优盘里并解压出来或者直接把windows字库下的.ttf字体拷贝到优盘,再cp /media/disk/zysong.ttf
/usr/share/fonts/zh_CN/TrueType),然后在:/usr/share/fonts/zh_CN/TrueType
目录中执行:
#mkfontscale
#mkfontdir
或者
(2) 安装oracle产品(只安装软件时还未安装数据库)
解决安装时中文是"囗囗囗囗囗囗囗囗", 进入/home/oracle/database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles
/all.jar就是JDK. 在/tmp/新建一个文件夹命名为fallback/找一个zysong.ttf中文字体放入里面去。再用归档管理器打开它进入
/jdk/jre/lib/fonts/(all.jar包的目录)把在桌面建好的fallback文件夹拖放进来,完成后的目录结构应该是/jdk
/jre/lib/fonts/fallback/zysong.ttf。
#mkdir /tmp/fallback
#cp
/home/oracle/database/stage/Components/oracle.jdk/1.5.0.17.0/1/DataFiles/all.jar
/tmp/jdk
#
(3) 安装数据库
安装数据库的时候(就是第20步安装产品)又出来囗囗囗囗囗囗囗这是因为oracle产品(软件)已经安装上了, 它不使用oracle安装文件里的JDK了而使用环境变量ORACLE_HOME下的jdk(也就是你配置的 ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1;
) /usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/jdk这个JDK,但这个jdk下没有/jre/lib /fonts/fallback/zysong.ttf这个文件所以就出来了囗囗囗囗。
①有一种解决办法就在你安装oracle时当它生成/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/jdk这个目录后你 把zysong.ttf字体复制到这个jdk/jre/lib/fonts/fallback/下当它执行到安装数据库的时候应该就是中文了。
注意:一定要在安装数据库之前跟它自己生成环境变量ORACLE_HOME/目录下的jdk之后复制进去。应该就在第20步安装产品时执行复制文件成功后,执行Oracle
Database 配置 前这个时间里手动复制zysong.ttf到你环境变量 ORACLE_HOME/jdk下的jre/lib/fonts/fallback/(也就是/usr/share/oracle/oracle11gR2/product
/11.2.0/dbhome_1/jdk/jre/lib/fonts/fallback/这个目录里)。
#mkdir
/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/jdk/jre/lib/fonts/fallback
#cp /usr/share/fonts/zh_CN/TrueType/
zysong.ttf
/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/jdk/jre/lib/fonts/fallback/
或者#ln
-s /usr/share/fonts/zh_CN/TureType/zysong.ttf
/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/jdk/jre/lib/fonts/fallback
#cd
/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/jdk/jre/lib/fonts/fallback/
#mkfontscale
#mkfontdir
如果你的系统是中文,安装完成之后你还要复制,这样在配置oracle时和使用SQL Developer才能显示中文界面。
②最简单的方法是直接把oracle自带的jdk删掉,将本地的jdk连接过去就OK!
sudo mv /opt/oracle11g/server/jdk /opt/oracle11g/server/jdk.bak
sudo ln -s /usr/local/lib/jdk1.6.0_20 jdk
(4) 解决终端中中文显示乱码问题
检查安装是否正确时SQL>conn / as sysdba 显示的是'???'
在终端菜单“终端”—“设定字符编码”—“简体中文(BGK)”
(5)解决Secure CRT显示乱码问题
选项->会话选项->外观->字符编码->uft-8
(6) 解决在环境sqlplus中使用backspace键出现乱码的问题
使用sqlplus,在回删(backspace)时往往会出现 一串的乱码,出现乱码是由于oracle的sqlplus不使用gnu的readline库造成的。
解决方法有两种:
1.要使用回删键(backspace)时,同时按住ctrl键;
2.设定环境变量 把 stty erase
^H 添加到.bash_profile中。
2. 出现agent nmhs解决办法(仅在Fedora中需要而在RHE中不需要)
主要因为C库的问题,fedora13后就不允许同时使用两个库原文http://download.oracle.com/docs/cd/E...如果忽略agent
nmhs问题继续安装,那么em只能使用15分钟左右就再也连不上了。解决办法就是手动指定C库位置。出现agent nmhs问题后找到$ORACLE_HOME/sysman/lib/ins_emagent.mk文件,再文件里找 到$(MK_EMAGENT_NMECTL)字符串,然后在后面加上-lnnz11。和$(MK_EMAGENT_NMECTL)有个空格。然后点重试就 可以解决了
#vi
/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/sysman/lib/ins_emagent.mk
3. EM启动页面里的错误:到实例的代理连接状态失败详细资料ORA-12505:TNS:监听程序当前无法识别连接描述符中所给出的SID (DBD
ERROR:OCIServerAttach) 和
$sqlplus
/nolog
SQL>conn
/ as sysdba
SQL>startup
ORA-00845: MEMORY_TARGET not
supported on this system
这两个问题其实是一回事,MEMORY_TARGET是11g才加入的新的内存参数,他是10g的ASMM的扩展,都是由于设置SGA的大小超过了操作系统/dev/shm的大小,如果没有设置size,它的大小是系统RAM的一半。
解决这个问题有三个方法:
(1) 一种是修改初始化参数,使得初始化参数中SGA的设置小于/dev/shm的大小,
# vi /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
LABEL=/data /data ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
#tmpfs /dev/shm tmpfs defaults 0 0
tmpfs /dev/shm tmpfs defaults,size=1024M 0 0
LABEL=/home /home ext3 defaults 1 2
LABEL=/opt /opt ext3 defaults 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=/usr /usr ext3 defaults 1 2
LABEL=/var /var ext3 defaults 1 2
LABEL=SWAP-sda8 swap swap defaults 0 0
…………
# umount /dev/shm
# mount /dev/shm
# df -k /dev/shm
(2) 另一种方法就是调整/dev/shm的大小
# mount -o remount,size=1G /dev/shm
//每次启动oracle都要用此命令
(3)调整MEMORY_TARGET的参数
SQL>alter system set memory_target=1024M;//启动oracle后用
安装完成后需要做的操作
1. 使用以下命令可以手动启动Oracle服务
以Root用户运行reboot命令重启Linux,重启完成后,默认情况下Oracle并不像Windows中的Oracle那样注册成服务,随机器一起启动的,所以需要手动敲入命令来启动。
一般情况下就启动数据库和监视器就够了,如果想用Oracle提供的EM来管理Oracle的话还需要启动EM控制台。
$ su – oracle
(1) 启动和停止数据库:
① 启动和停止数据库的最简单方法是从 OEM 控制台启动和停止。
② 要从命令行执行此操作,请在以 oracle 身份登录后使用 SQL*Plus,如下所示:
启动:
$ sqlplus
Enter user-name: / as sysdba
SQL> startup
SQL> exit
停止:
$ sqlplus
Enter user-name: / as sysdba
SQL> shutdown immediate
SQL> exit
③ 以下命令也可以启动和停止数据库(如果数据库在使用就不会停止掉)
$ dbstart
$ dbshut
(2) 启动和停止监听器:
监听器接受客户端的连接请求,并在验证证书后创建数据库连接。要使用 OEM,必须先启动监听器。
$ lsnrctl start
$ lsnrctl stop
这样数据库的TNS也启动了,可以通过网络连接数据库了。
(3) 启动和停止 Oracle 企业管理器数据库控制:
$ emctl start dbconsole
$ emctl stop dbconsole
(4) 启动和关闭iSQL*Plus(在Oracle10g中)
$ isqlplusctl start
$ isqlplusctl
stop
(5) 以下是一些软件启动的命今
$netmgr // Net Manager
$netca // Net Configuration
Assistant
$dbca // Database
Configuration assistant
$dbua // Database Upgrade
Assistant
$Locale Builder // lbuilder
- 配置Oracle为开机自动启动
虽然说Oracle作为服务器不会经常关机,但是偶尔重启一下,每次都要去手动启动Oracle还是太麻烦了,希望它能够像在Windows中一样,每次开机的时候自动启动Oracle,只需要将Oracle配置为Linux的服务就可以了。
有下面两种方法:
(1) 如果需要重启服务器后,希望Oracle服务器也自动正常启动,那么需要修改/etc/oratab中下面一行的标志为”Y”
# vi /etc/oratab
zwm8168://usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1:Y
(2) 建立脚本文件,操作如下:
① 以root用户建立/etc/rc.d/init.d/oracle11g脚本文件,内容如下(环境变量设置根据实际情况进行修改):
#!/bin/bash
#
# chkconfig: 35 95 1
# description: init script to start/stop oracle database 11g, TNS listener, EM
#
#
#
# match these values to your environment:
ORACLE_BASE=/usr/share/oracle/oracle11gR2
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
ORACLE_SID=zwm8168
ORACLE_UNQNAME=zwm8168
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
LANG=C
export ORACLE_BASE ORACLE_HOME ORACLE_SID
ORACLE_UNQNAME PATH LD_LIBRARY_PATH LANG
# see how we are called:
case $1 in
start)
su - oracle<<EOO
lsnrctl start
sqlplus /nolog<<EOS
connect / as sysdba
startup
EOS
emctl start dbconsole
EOO
;;
stop)
su - oracle<<EOO
lsnrctl stop
sqlplus /nolog<<EOS
connect / as sysdba
shutdown immediate
EOS
emctl stop dbconsole
EOO
;;
*)
echo "Usage: $0 {start|stop}"
;;
esac
② 以root用户执行以下命令
chmod 755 /etc/rc.d/init.d/oracle11g
chkconfig --add oracle11g
③ 重启服务
service oracle11g stop
service oracle11g start
这样在开关机的时候oracle自动启动和停止。
3.添加系统服务
用root用户创建一个叫做/etc/init.d/dbora的文件,包括下面的内容:
#!/bin/sh
# description: Oracle auto start-stop script.
# chkconfig: - 20 80
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_HOME=/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1
ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME"
su - $ORA_OWNER -c "emctl start dbconsole"
;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
su - $ORA_OWNER -c "emctl stop dbconsole"
;;
'restart')
$0 stop
$0 start
;;
esac
修改权限为750
chmod 750 /etc/init.d/dbora
设置服务自动启动
chkconfig --level 345 dbora on
如果你遇上:cannot restore segment prot after reloc: Permission denied, 应该是SELinux的问题,可以考虑把它关闭。
4. 将专用服务器模式改为共享服务器模式。
第一步:启动Oracle服务和监听程序
$ sqlplus
/nolog // sqlplus sys/yourpassword as sysdba
SQL> conn /as
sysdba
SQL> startup
SQL> exit
$ lsnrctl start
$ emctl start
dbconsole
第二步:由SPFILE生成PFILE
SQL> create pfile from spfile;
第三步,编辑生成的PFILE:initzwm8168.ora
$ vi
/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/dbs/init zwm8168.ora
# 删除以下行
*.dispatchers='(PROTOCOL=TCP)
(SERVICE=zwm8168XDB)'
# 加入以下行
*.dispatchers='(PROTOCOL=TCP)'
*.shared_servers=4
*.max_shared_servers=20
第四步:重新启动数据库
SQL> shutdown
immediate
SQL> startup
pfile=initzwm8168.ora
第五步:生成新的SPFILE文件
SQL> create
spfile from pfile;
第六步:编辑/usr/share/oracle/oracle11gR2/product/11.2.0/dbhome_1/network/admin/tnsnames.ora文件
(SERVER =
DEDICATED)
# 将以上行改为
(SERVER = SHARED)
第七步:重启数据库、LISTENER和OEM
# 关闭数据库、LISTENER和OEM
SQL> shutdown
immediate
$ lnsrctl stop
$ emctl stop
dbconsole
# 启动数据库、LISTENER和OEM
SQL> startup
$ lsnrctl start
$ emctl start
dbconsole
第八步:通过浏览器访问OEM
https://localhost.localdomain:1158/em
5. 卸载Oracle
LINUX下完全卸载Oracle数据库的步骤如下:
# rm -rf /usr/share/oracle/oracle11gR2/*
# rm -rf
/etc/oraInst.loc /etc/oratab
# rm –rf
/usr/local/bin/coraenv /usr/local/bin/dbhome /usr/local/bin/oraenv
参考:
1. http://www.nightsnow.com/blog/?p=235
- http://phoenixzing.blog.163.com/blog/static/13414293720091183181160/
- http://www.cio360.net/h/1811/339727-11276.html#pager
- http://www.cnblogs.com/abenz/archive/2010/06/08/1754328.html
- http://www.blogjava.net/xiangjava/archive/2010/06/23/324091.html
- http://www.wyjava.com/thread-25626-1-1.html
- http://blog.itman.cc/archives/centos-oracle11gr2-v2/
- http://blog.sina.com.cn/s/blog_48f9c0840100mc3e.html
- http://meteoren.javaeye.com/blog/640894
- http://www.itpub.net/thread-1361814-1-1.html
- http://www.boobooke.com
|