Chinaunix首页 | 论坛 | 博客
  • 博客访问: 73892
  • 博文数量: 24
  • 博客积分: 82
  • 博客等级: 民兵
  • 技术积分: 140
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-19 12:39
文章分类
文章存档

2012年(14)

2011年(10)

分类: Oracle

2011-03-10 15:41:57

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

  1. 创建存放oracle安装文件的文件夹,并更改权限

#mkdir -p /home/oracle

         #chown -R oracle:oinstall /home/oracle

         #chmod -R 775 /home/oracle

  1. 创建安装oracle的目录

#mkdir -p /usr/share/oracle/oracle11gR2

#chown -R oracle:oinstall /usr/share/oracle/

#chmod -R 755 /usr/share/oracle

  1. 解压oracle的安装文件(必须进入放安装文件的目录里,如/home/oracle

#unzip /home/oracle/linux_11gR2_database_1of2.zip

#unzip /home/oracle/linux_11gR2_database_2of2.zip

  1. 安装软件包检查

#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软件包,fedora1213如下(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

  1. 做个链接(老版本需求,新版本oracle11不要设置):
    ln -s /usr/lib/libstdc .so.6.0.3 /usr/lib/libstdc .so.5
  2. 关掉防火墙和selinux 重新启动计算机
  3. 设置/etc/hosts文件

     增加一条:192.168.1.88 localhost.localdomain localhost

  1. 设置内核参数在/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 //执行命令使参数修改生效

  1. 编辑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

 

  1. 编辑login文件

        #vi /etc/pam.d/login

        #Instal Oracle Config

         session required pam_limits.so

         session required /lib/security/pam_limits.so

  1. oracle用户在bashksh中设定资源限制
    编辑文件 /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

  1. 编辑/etc/redhat-release文件,把里面的内容替换为下面的内容

       #Fedora release 14 (Laughlin)

       Red Hat Enterprise Linux 5

  1. 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

  1. 正式安装

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_BASEORACLE_HOME中设置)


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


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


11. 数据库标识符(全局数据库名为zwm8168/zwm8168.localdomainOracle服务标识符为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. 安装产品(其中调用netcadbca两个配置工具)

      #/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)时往往会出现 一串的乱码出现乱码是由于oraclesqlplus不使用gnureadline库造成的。

  解决方法有两种:

  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_TARGET11g才加入的新的内存参数,他是10gASMM的扩展,都是由于设置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

 

  1. 配置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< lsnrctl start
sqlplus /nolog< connect / as sysdba
startup
EOS
emctl start dbconsole
EOO
;;

stop)
su - oracle< lsnrctl stop
sqlplus /nolog< 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;

第三步,编辑生成的PFILEinitzwm8168.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)

第七步:重启数据库、LISTENEROEM

# 关闭数据库、LISTENEROEM

SQL> shutdown immediate

$ lnsrctl stop

$ emctl stop dbconsole

# 启动数据库、LISTENEROEM

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

  1. http://phoenixzing.blog.163.com/blog/static/13414293720091183181160/
  2. http://www.cnblogs.com/abenz/archive/2010/06/08/1754328.html
  3. http://www.blogjava.net/xiangjava/archive/2010/06/23/324091.html
  4. http://blog.itman.cc/archives/centos-oracle11gr2-v2/
  5. http://blog.sina.com.cn/s/blog_48f9c0840100mc3e.html
  6. http://meteoren.javaeye.com/blog/640894
  7. http://www.itpub.net/thread-1361814-1-1.html
阅读(3563) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~