Linux x86-64安装oracle 11.2

时间:2022-04-20 13:56:46

1   安装centos6.3 桌面操作系统(oracle安装需要x server )

2   使用root帐号登录linxu系统:并且满足下列条件必须已安装x server

2.1  打开 x terminal

2.2  如果是远程安装,则在要安装的机器上输入 以下命令来允许 远程操作端可以使用本地的x server图形界面

$ xhost fully_qualified_remote_host_name

2.3  同时如果是远程安装,使用ssh 或者rlogin 或者 telnet 来远程连接 比如:

$ telnet fully_qualified_remote_host_name

2.4 如果不是root帐号登录,使用sudo 命令把用户变成root权限 

需要配置/etc/sudoers 文件 username ALL=NOPASSWD:/bin/sh  或者username ALL=NOPASSWD:ALL           

$ sudo sh
password:
#


3  检查硬件需求

 3.1  内存最小1g,最好2g以上。 虚拟内存对应内存关系
         vailable RAM                               Swap Space Required
         Between 1 GB and 2 GB           1.5 times the size of the RAM
         Between 2 GB and 16 GB         Equal to the size of the RAM
         More than 16 GB                        16 GB

检查内存使用情况命令:
# grep MemTotal /proc/meminfo

检查虚拟内存

# grep SwapTotal /proc/meminfo

查看内存使用情况

# free

检查系统cpu 是32位的还是64位的必须和 安装软件匹配

# uname -m

3.2    硬盘空间

 /tmp  需要有1g  检查命令

# df -h /tmp

检查安装软件需要的空间:

# df -h

oracle需要的空间,不够的话清理 或者扩大硬盘

Installation Type                               Requirement for Software Files (GB)
Enterprise Edition                            4.35
Standard Edition                              4.22
Installation Type                               Requirement for Data Files (GB)
Enterprise Edition                            1.7
Standard Edition                              1.5

4   安装oracle所需软件包支持 检查

4.1  检查oracle 所支持的操作系统()
# cat /proc/version
使用linux版本必须匹配oracle 所支持的。不然装不上,比如11g只支持到 redhat enterprise linux6

4.2   Kernel     linux内核检查

# uname -r

显示:2.6.32-279.el6.x86_64

4.3   所需软件包检查(64位的即可) :检查命令  libgcc  ,gcc

# rpm -aq | grep 软件包名

没有安装的话 用 # rpm -ivh 软件包名

如果联网可以用yum安装 # yum install 软件包名 第一次可能会有的警告:  

Total download size: 17 k
Installed size: 29 k
Is this ok [y/N]: y
Downloading Packages:
compat-libcap1-1.10-1.x86_64.rpm                         |  17 kB     00:00     
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
 Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>
 Package: centos-release-6-3.el6.centos.9.x86_64 (@anaconda-CentOS-201207061011.x86_64/6.3)
 From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Is this ok [y/N]:


The following or later version of packages for Oracle Linux 6, and Red Hat
Enterprise Linux 6 must be installed:
binutils-2.20.51.0.2-5.11.el6 (x86_64)                                               默认已安装
compat-libcap1-1.10-1 (x86_64)                                                        yum install compat-libcap1
compat-libstdc++-33-3.2.3-69.el6 (x86_64)                                     [root@localhost ~]# yum install compat-libstdc++-33
compat-libstdc++-33-3.2.3-69.el6.i686
gcc-4.4.4-13.el6 (x86_64)                                                                    yum install gcc
gcc-c++-4.4.4-13.el6 (x86_64)                                                            yum install gcc-c++
glibc-2.12-1.7.el6 (i686)
glibc-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6 (x86_64)
glibc-devel-2.12-1.7.el6.i686
ksh                                                                                                            yum install ksh
libgcc-4.4.4-13.el6 (i686)
libgcc-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6.i686
libstdc++-devel-4.4.4-13.el6 (x86_64)                                            
libstdc++-devel-4.4.4-13.el6.i686                                                  
libaio-0.3.107-10.el6 (x86_64)
libaio-0.3.107-10.el6.i686
libaio-devel-0.3.107-10.el6 (x86_64)                                               yum install libaio-devel
libaio-devel-0.3.107-10.el6.i686
make-3.81-19.el6
sysstat-9.0.4-11.el6 (x86_64)

4.4 安装oracle driver驱动

On Oracle Linux 6 and Red Hat Enterprise Linux 6:
unixODBC-2.2.14-11.el6.i686 or later
unixODBC-devel-2.2.14-11.el6 (x86_64) or later                          yum install unixODBC-devel
unixODBC-2.2.14-11.el6 (x86_64) or later                                     yum install unixODBC
unixODBC-devel-2.2.14-11.el6.i686 or later                                

5 添加 Required Operating System Groups and Users

# /usr/sbin/groupadd oinstall   //初始用户组
# /usr/sbin/groupadd dba         //次要用户组

# grep oinstall /etc/group   检查有没有添加成功

# /usr/sbin/useradd -g oinstall -G dba oracle

# id oracle   检查有没有添加成功

# passwd oracle  //设置oracle账户的密码

6.1  linux内核参数 检查是否符合oracle安装需求(参考oracle安装文档)

semmsl, semmns,semopm, and semmni     # /sbin/sysctl -a | grep sem
shmall, shmmax, and shmmni                       # /sbin/sysctl -a | grep shm
 file-max                                                              # /sbin/sysctl -a | grep file-max
ip_local_port_range                                       # /sbin/sysctl -a | grep ip_local_port_range
 rmem_default                                                   # /sbin/sysctl -a | grep rmem_default
rmem_max                                                        # /sbin/sysctl -a | grep rmem_max
wmem_default                                                 # /sbin/sysctl -a | grep wmem_default
wmem_max                                                     # /sbin/sysctl -a | grep wmem_max
 

因为本机是centos6.3 检查只有3个是符合要求的,其他都必须修改具体添加如下:

vim /etc/sysctl.conf

# add by  2012-12-10
fs.aio-max-nr = 1048576
fs.file-max = 6815744
#kernel.shmall = 2097152
#kernel.shmmax = 536870912
#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 = 1048576

# add by  2012-12-10

运行下面命令使内核参数修改 起作用

# /sbin/sysctl -p

6.2  查看并检查oracle安装用户 可以使用的的资源分配,不足的修改/etc/security/limits.conf 文件

[root@localhost Packages]# su - oracle
[oracle@localhost ~]$ ulimit -Sn
1024
[oracle@localhost ~]$ ulimit -Hn
4096
[oracle@localhost ~]$ ulimit -Su
1024
[oracle@localhost ~]$ ulimit -Hu
14835
[oracle@localhost ~]$ ulimit -Ss
10240
[oracle@localhost ~]$ ulimit -Hs
unlimited

su -   //使用root帐号修改

vim /etc/security/limits.conf

编辑添加

# add by  2012-12-10

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240

# add by  2012-12-10

7 创建oracle 安装目录 和data 目录 //The Oracle base directory must have 3 GB of free disk space, or 4 GB of free disk space
if you choose not to create a separate Oracle data file directory.

[root@localhost ]# mkdir -p /u01/app/
[root@localhost ]# chown -R oracle:oinstall /u01/app
[root@localhost ]# chmod -R 775 /u01/app

8 配置oracle用户环境,修改完成后重启机器,或是当前帐号的当前目录下用命令source .bash_profile 来立即启用。

8.1 设置文件创建默认权限umask为022(centos6.3 默认就是不用修改)

# umask 022

//Set the default file mode creation mask (umask) to 022 in the shell startup file.

8.2 配置图形界面操作权限 echo $DISPLAY查看是否是:0.0  (表示本地有调用图形界面程序权限)没有的话配置环境变量export DISPLAY=IP:0.0

root 设置DISPLAY  一次,xhost +,切换用户后echo $DISPLAY 看是否有值,没有,再在当前用户设置(root用户退到最外面的shell操作)

xhost +localhost

//$ xhost fully_qualified_remote_host_name

8.3 切换到oracle 用户安装, 配置 oracle 用户环境变量

su - oracle

echo $SHELL
echo $DISPLAY

//环境变量配置文件
$ ../.bash_profile

如果是远程安装则执行$ export DISPLAY=local_host:0.0 命令让远程ip可以有执行x server权限

8.4 确保/tmp 目录 有1G 的 空间,如果没有则新建一个文件目录在环境变量里面配置成TMP

df -h /tmp                         //查询/tmp磁盘空间 是否有1G

创建一个tmp文件目录

sudo mkdir /mount_point/tmp
$ sudo chmod a+wr /mount_point/tmp
# exit
环境变量配置 .bash_profile
$ TMP=/mount_point/tmp
$ TMPDIR=/mount_point/tmp
$ export TMP TMPDIR

8.5 配置oracle 环境变量使用oracle用户 编辑 .bash_profile

ORACLE_BASE=/u01/app/oracle
ORACLE_SID=orcl                                                                                         //sid

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1          //后面的oracle自动启动脚本,批处理命令方便运行

NLS_LANG=AMERICAN_AMERICA.AL32UTF8                              //EXP 导出命令可能用到,客户端连接字符集设置
PATH=$PATH:$HOME/bin
export ORACLE_BASE ORACLE_SID ORACLE_HOME NLS_LANG PATH
上面的ORACLE_BASE根目录是上面早先创建的,解压后的安装文件database和等回要安装的oracle都是/u01/app下面的子目录

等回安装的时候都指定到这里,ORACLE_SID 是数据库名最好不要超过5个字符

8.6 删除变量操作:

$ unset ORACLE_HOME
$ unset TNS_ADMIN

8.7  ksh 相关配置sqlplus会用到    使用root用户通过 vi 编辑  vim /etc/profile

su -

vim /etc/profile

if [ $USER = "oracle" ]; then

       if [ $SHELL = "/bin/ksh" ]; then

           ulimit -p 16384

           ulimit -n 65536

       else

           ulimit -u 16384 -n 65536

       fi

fi

8.8 使用root用户编辑 /etc/pam.d/login

要使 /etc/security/limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。

查看 /etc/pam.d/login 文件中有:/lib/security/pam_limits.so

vi /etc/pam.d/login 

64位系统为lib64/security/pam_limits.so
32位系统为/lib/security/pam_limits.so

session    required     /lib64/security/pam_limits.so

#session    required     /lib/security/pam_limits.so
#session    required     pam_limits.so

上面的步骤做完最好重启一下,有些变量要重启才有作用

9 解压 安装包 开始安装   cksum linux.x64_11gR2_database_1of2.zip

   
Oracle Database 11g Release 2 (11.2.0.1.0) for Linux x86-64
  Linux x86-64安装oracle 11.2 linux.x64_11gR2_database_1of2.zip(1,239,269,270 bytes) (cksum - 3152418844)
  Linux x86-64安装oracle 11.2 linux.x64_11gR2_database_2of2.zip(1,111,416,131 bytes) (cksum - 3669256139)

unzip linux.x64_11gR2_database_1of2.zip &>unzip1.log

unzip linux.x64_11gR2_database_2of2.zip &>unzip2.log

unzip p8670579_112010_LINUX.zip    //oracle 补丁先解压后面可能要用到 不一定,本人没有用到

mv database /u01/app

mv 8570579 /u01/app

cd /u01/app

chown -R oracle:oinstall database/

chown -R oracle:oinstall 8570579/

10 切换到su - oracle 用户 

su - oracle

cd /u01/app/database

#此处注意,由于是英文安装环境,需要LANG的支持,否则中文乱码。

xhost +localhost

export LANG=en_US 中文的是zh_CN.UTF-8

./runInstaller 执行安装(oracle用户,非root)

安装过程中bad CRC错误参照网上解决办法,重新解压oracle安装包

中间会有提示用root用户执行2个 sh 文件。照做./root

su - root

cd  /u01/app/oracle/product/11.2.0/dbhome_1

sh  root.sh

cd /u01/app/oraInventory

sh  orainstRoot.sh

安装完以后可以oracle默认是启动的。可以用sqlplus测下或者http://localhost:1158/em

Linux下的Oracle在安装结束后是处于运行状态的。重启机器后,Oracle不会像在Windows下那样将Oracle添加到Windows服务,在linux下需要手动启动Orcle服务

打开vi .bash_profile并编辑添加下列环境变量方便 shell调用命令

ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
$ORACLE_HOME/bin

export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH

11、启动连接数据库

11.1

以oracle用户下,执行下面的命令
进入sqlplus
$ sqlplus /nolog
以sysdba的身份连接到数据库,并启动Oracle数据库引擎
SQL> conn /as sysdba   如果没有修改vi etc/oratab配置文件orcl:/u01/app/oracle/product/10.2.0/db_1:N  N改成Y

最后的N或者Y表示是否允许dbstart来启动数据库,如果为N则实例不能通过dbstart启动,表现为sqlplus连接实例时显示Connected to an idle instance.如果为Y则实例可以通过dbstart启动,sqlplus连接后数据库即为open状态。
SQL> startup
退出sqlplus,运行Listener
SQL> exit
$ lsnrctl start

$ lsnrctl status

$ lsnrctl stop

$ lsnrctl reload

停止数据库的指令如下:
SQL> shutdown immediate

11、2 如果想用Oracle提供的EM来管理Oracle的话还需要启动EM控制台,运行如下命令:

$ emctl start dbconsole  //$ emctl stop dbconsole 

这样就可以通过https://localhost:1158/em 来访问EM控制台了。


11、3 配置监听 和 服务

$ netca                          //配置监听 已有监听可以不用修改

$ netmgr                       //配置database 服务名servicename

这里注意图形界面工具左边的listeners 里面要配置2项:

1、host 为ip不能为host名字不然局域网可能不能连接: 192.168.1.125

2、上面的下拉框还需配置database service,配置监听哪个实例, 数据库给客户端访问的服务名。

工具生成的结果:vi /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = ORCL)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.125)(PORT = 1521))
  )

ADR_BASE_LISTENER = /u01/app/oracle
下面的文件为客户端访问服务端配置这里可以使用netmgr  配置service name
vi /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora


11.4、关闭防火墙iptables  -vnL  可以看到防火墙的策略

etc/init.d/iptables stop          //停止防火墙服务 ,开机后会恢复

chkconfig iptables off/on          //永久关闭

 
11.5、oracle自动启动配置 

11.5.1、 修改/etc/oratab文件

[root@oracle ~]#vim /etc/oratab   //不改这个oracle数据库不会启动
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y(N
改为Y)

11.5.2、修改$ORACLE_HOME/BIN/dbstart$ORACLE_HOME/BIN/dbshut

[root@oracle ~]#vim /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart          //自动启动监听哪个数据库
[root@oracle ~]#vim /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbshut

ORACLE_HOME_LISTNER=$ORACLE_HOME
$1改为$ORACLE_HOME

这样,以后就可以在启动监听之后直接使用dbstart和dbshut命令来启动和关闭数据了

11.5.3、以root用户建立/etc/rc.d/init.d/oradb脚本文件

#!/bin/bash
# chkconfig: 2345 90 10
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl

export  NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export PATH=$PATH:$ORACLE_HOME/bin
ORCL_OWN="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 -- start, stop, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su - $ORCL_OWN -c "$ORACLE_HOME/bin/dbstart"
touch /var/lock/subsys/oradb
su - $ORCL_OWN -c "$ORACLE_HOME/bin/emctl start dbconsole"
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su - $ORCL_OWN -c "$ORACLE_HOME/bin/emctl stop dbconsole"
su - $ORCL_OWN -c "$ORACLE_HOME/bin/dbshut"
rm -f /var/lock/subsys/oradb
echo "OK"
;;
reload|restart)
$0 stop
$1 start
;;
*)
echo "Usage: 'basename $0' start|stop|restart|reload"
exit 1
esac
exit 0

添加其它用户的执行权限,并添加到开机启动服务

# chmod 755 /etc/rc.d/init.d/oradb
# chkconfig --add oradb

//服务重启chkconfig oradb on/off 永久

# service oradb stop
# service oradb start

导出数据的时候会有异常:exp:00091 应该是客户端的字符集和源数据库字符集设置的不一样

重新设置环境变量.bash_profile

echo $NLS_LANG
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
[oracle@win ~]$ exp dev01/dev01@192.168.1.200_dev01_1521 file=/u01/app/temp20121220.dmp owner=dev01