分类: Oracle
2011-03-10 15:41:57
#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
#mkdir -p /home/oracle
#chown -R oracle:oinstall /home/oracle
#chmod -R 775 /home/oracle
#mkdir -p /usr/share/oracle/oracle11gR2
#chown -R oracle:oinstall /usr/share/oracle/
#chmod -R 755 /usr/share/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
增加一条:192.168.1.88 localhost.localdomain localhost
#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 //执行命令使参数修改生效
#vi /etc/security/limits.conf
#Instal Oracle Config
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
#vi /etc/pam.d/login
#Instal Oracle Config
session required pam_limits.so
session required /lib/security/pam_limits.so
#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
#Fedora release 14 (Laughlin)
Red Hat Enterprise Linux 5
#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,连接成功。
在浏览器里打开:
常见问题及解决方法
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后就不允许同时使用两个库原文 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还是太麻烦了,希望它能够像在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<
sqlplus /nolog<
startup
EOS
emctl start dbconsole
EOO
;;
stop)
su - oracle<
sqlplus /nolog<
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
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