博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在Linux中安装Oracle(较详细图解)

Posted on 2017-03-21 14:12  moss_tan_jun  阅读(4646)  评论(0编辑  收藏  举报

原创 http://www.cnblogs.com/nucdy/p/5603998.html 

参考视屏:链接: https://pan.baidu.com/s/1kViEZQZ  密码: z7ha  

(环境:oracle11g, linux64 RHEL6)

安装RHEL6

    假设你已经正确安装VM软件并激活。点击创建新的虚拟机:

这个你可以将其安装的内存小一些,也没有多大的关系

点击虚拟机菜单栏上的编辑->虚拟网络配置

 

 

设置网络(要根据自己的实际情况设定):

设置分区:

创建分区的要点大致如下:

分区名称

大小(MB)

/boot

128

swap

4096

/

20480

/home

5000

 

 

 

此外,这块你也要选择一些那个“开发”中选项,将那个能选择的全选择了,安装oracle是会省很多的事情。

 

后面设置全部自动

 

出现此画面表示安装成功!

安装VMwaretools的操作略过,请自行完成

可以参考这个:http://www.cnblogs.com/nucdy/p/5235791.html

在Linux操作系统中安装Oracle

1.以root用户登录Linux

    首先要以root登录,获取Linux下的最高权限。登录时选择其他账户,用户名输入root,密码输入安装时设置的root密码,记得选择语言为中文(屏幕最下方正中间位置)。得到如图所示的结果。

 

 

 

  

2.安装前的准备工作(我的可以,但有时机子不同导致失败的,可以查看这几个文件:http://pan.baidu.com/s/1ge9zYxX

2.0 设置IP地址为静态(固定IP地址)

         如果你还没有设置IP为静态,请现在设置。

你这个在安装的时候就设置了,老师上课已经讲了,我就不在写了。

你可以验证一下,在这里

192.168.8.201我是绑定了VMware Virtual Ethernet Adapter for VMnet8 ,和其在一个网段

VMnet8 的ip地址是:192.168.8.111

2.1 修改stsctl.conf文件

    Linux是为小文件设计的,Oracle数据库安装需要占用较多资源,要把各项参数调大。

    使用vi编辑/etc/sysctl.conf文件。命令如下:

vi /etc/sysctl.conf

 

    按i进入插入模式,把光标移到文档最后,将以下一段文字(复制自Oracle 11g官方文档)插入到文档最后。

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

net.ipv4.tcp_wmem = 262144 262144 262144

 net.ipv4.tcp_rmem = 4194304 4194304 4194304

 

 注意注释掉

 # Disable netfilter on bridges.

 #net.bridge.bridge-nf-call-ip6tables = 0

 #net.bridge.bridge-nf-call-iptables = 0

 #net.bridge.bridge-nf-call-arptables = 0

(重新加载这些参数,一定要重启系统,其他不使用)

    复制完成后,按【ESC】键输入:wq保存退出。

 

各参数详解:

kernel.shmmax:是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及ServerProcess创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。

 

官方建议值:

32位linux系统:可取最大值为4GB(4294967296bytes)-1byte,即4294967295。建议值为多于内存的一半,所以如果是32为系统,一般可取值为4294967295。32位系统对SGA大小有限制,所以SGA肯定可以包含在单个共享内存段中。

64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,一般取值大于SGA_MAX_SIZE即可,可以取物理内存-1byte。例如,如果为12GB物理内存,可取12*1024*1024*1024-1=12884901887,SGA肯定会包含在单个共享内存段中。

 

kernel.shmall: 该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB /4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求(几乎是原来设置2097152的两倍)。这时可以将shmmax参数调整到16G了,同时可以修改SGA_MAX_SIZE和SGA_TARGET为12G(您想设置的SGA最大大小,当然也可以是2G~14G等,还要协调PGA参数及OS等其他内存使用,不能设置太满,比如16G)

 

kernel.shmmni:该参数是共享内存段的最大数量。shmmni缺省值4096,一般肯定是够用了。

 

fs.file-max:该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。

 

fs.aio-max-nr:此参数限制并发未完成的请求,应该设置避免I/O子系统故障。推荐值是:1048576 其实它等于 1024*1024 也就是 1024K 个。

 

kernel.sem:以kernel.sem = 250 32000 100 128为例:

       250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。

       32000是参数semmns的值,表示系统内可允许的信号量最大数目。

       100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。

       128是参数semmni的值,表示系统信号量集合总数。

 

net.ipv4.ip_local_port_range:表示应用程序可使用的IPv4端口范围。

net.core.rmem_default:表示套接字接收缓冲区大小的缺省值。

net.core.rmem_max:表示套接字接收缓冲区大小的最大值。

net.core.wmem_default:表示套接字发送缓冲区大小的缺省值。

net.core.wmem_max:表示套接字发送缓冲区大小的最大值。

 

 

 

 

 

2.2 修改limits.conf

    修改:/etc/security/limits.conf

vi /etc/security/limits.conf

    在文件末尾加入以下内容:

oracle soft nproc  2047

oracle hard nproc  16384

oracle soft nofile 1024

oracle hard nofile 65536

 oracle hard stack 10240

 

保存并退出。

2.3 重启系统

    修改完参数之后就要重启了,这样做是为了系统能认识我们之前配置的参数。输入以下命令:

reboot

2.4 执行一系列操作

    以普通用户登录(千万不要用root!!!!),然后切换到root用户。(密码就是root的密码)

su root

执行以下命令:

2.4.1 创建组dba

groupadd dba

 

tail /etc/group

 

2.4.2 创建oracle用户并添加到dba组

    继续输入以下命令:

useradd oracle

 

 

 

    将oracle用户添加到dba组

usermod -g dba oracle

 

 

给这个用户加一个密码(密码一定要好记,别管他的提示),命令如下:

passwd oracle

 

 

 

测试一下刚才的操作是否成功:

tail /etc/group

tail /etc/passwd

 

2.4.3 为Oracle安装创建目录

    执行以下命令创建目录:

mkdir -p /u01/app/oracle

执行以下命令,将文件的属主改为Oracle,属组改为dba:

chown -R oracle:dba /u01/app/oracle

修改文件的访问权限为777(4+2+1,4+2+1,4+2+1):

chmod -R 777 /u01/app/oracle

查看一下你刚建的文档权限,这个十分重要,用命令: ll    查看那个几个文件的权限,我的如下:

 

drwxr-xr-x.   3 root root  4096 Jun 19 16:39   u01                        
drwxr-xr-x. 4 root root 4096 Jun 19 18:24      app                                                            

[oracle@server app]$ ll
total 8
drwxrwxrwx. 10 oracle dba 4096 Jun 19 20:22 oracle
drwxrwx---.  5 oracle dba 4096 Jun 19 18:59 oraInventory 
 

 

上面两个文件的权限影响后面执行的权限问题,一定记得检查!

 

2.4.4 切换到Oracle用户

su oracle

2.4.5 配置概要文件(oracle下)

    输入以下命令:

cd /home/oracle

vi .bashrc

    进入vi后按键盘上的字母i切换到插入模式,然后插入以下内容:

umask 002

ORACLE_BASE=/u01/app/oracle      //这个决定后面按安装的目录

export ORACLE_BASE

 

ORACLE_HOME=$ORACLE_BASE/product/11.2.0    //这个也是

export ORACLE_HOME

 

ORACLE_SID=dog         //和你后要建的数据库事例名字一样,我的是:dog,以防出现SID不一致的问题

export ORACLE_SID

 

PATH=/usr/bin:/bin:usr/local/bin:/usr/bin/X11:/usr/bin/X11R6

PATH=$PATH:$ORACLE_HOME/bin

export PATH

4、添加/etc/hosts中dns解析信息(这个是root下执行,这个里面原来是有东西的,不是一个新的文件,将一些的文件追加到文件的最后)

192.168.1.102             jiangwf-linux(这个是你安装linux时的主机名)

192.168.1.102             localhost

 

 

5.root 用户下(文件里面是有东西的,在最后追加)

  vi /etc/pam.d/login

   session required /lib/security/pam_limits.so

   session required pam_limits.so 

 

 

(重新加载这些参数,一定要重启系统,其他不使用)

 

至此,准备工作全部完成!

 

 

3.安装Oracle

3.1 创建安装目录并将其属组改为Oracle

    获取root权限并执行以下命令:

su root

mkdir /u01/app/oraInventory

ls -l /u01/app

chown -R oracle:dba /u01/app/oraInventory

chmod -R 775 /u01/app/oraInventory

ls -l /u01/app

主要一定要看上面的文件是否权限一致,这特便是是oracle  和 oraInventory 的权限以及读写权限,简单的来说是他们前面的东西一致

3.2 解压Oracle安装文件

    先将oracle安装程序拷贝到一个目录下(我解压到tmp的oracle目录下,如果没有,自己建一个目录,在外面复制安装程序,里面粘贴。如果文件无法导入到虚拟机,请检查VMtools是否正确安装):

 

 

 

 

 

 

 

 

 

 

另一个文件同理。最终得到如下结果:

 

 

这里,其实还有很多问题,若你用的是WinScp上传的话,可能是root权限。建议用oracle用户上传,若是root 的用户,那 你的

先root 下进行建文件夹,而后 将其改成oracle的 宿主 ,即:

[oracle@server app]$ mkdir  temo

[oracle@server app]$ chown -R oracle:dba  temo

[oracle@server app]$ chmod 777  temo

然后你在oracle用户下按上面的操作,将其解压到temo 中,

而后最好我的建议是你查看一下刚刚解压后的文件的权限,若database中的文件都是oracle 用户就最好了。

3.3 运行安装文件(oracle用户下安装,因为这个是oracle用户用的)

如你当前系统环境是英文的环境一些不用看

若你是当前系统环境是中文的环境必须看,否则会出现框框乱码问题,

**——设置编码方式:在oracle用户下:

export LANG=en_US.UTF-8

这个你可以参考博客:http://www.cnblogs.com/nucdy/p/5598497.html

有关一个“red hat 系统将中文设置为英文环境“ 文章

若你已经运行了,没有关系,点击oracle的那个close ,

然后在命令行中以oracle用户下输入

export LANG=en_US.UTF-8

而后执行下面继续运行没有问题

***)

这个是在oracle用户  下运行的

[oracle@server app]$

 

cd /tmp/Oracle/database          //这个是进入到你oracle解压后的目录下,根据你自己

./runInstaller

 

 

 

下一步是典型安装:毕竟现在在是用来进行学习的,先安装上即可,不用先急的去安装一个自己手工设置的数据事例,以后在进行尝试也不迟,况且这样做完了,你还得进行配置更多的其他东西,你可以网上搜索一下,安装完还是要需要进行一些数据库事例的相关配置很麻烦的,这个先不讲,以下我主要介绍是典型安装的过程

 

 

选择typical install

 

然后,选择下一步,下一步

接下来是会出现,一下界面,你按照这个继续进行中就行

由于Oracle安装时缺少依赖包,我们需要添加这些依赖包,命令另起一个终端,输入:

 

 

安装依赖包比较麻烦,可以直接把老师发的iso文件放入linux,(/media/RHEL_6.2 i386 Disc 1/Packages) ,这个目录找上面对应的所需要的.rmp 文件,进行安装

rpm -ivh xxx.rpm安装即可

在packages找到相应的rpm文件,在终端执行命令 rpm -ivh xxx.rpm安装即可

可能出现的错误(包很多或者修改文件权限不够):例如

 

 

其实,我想说的是出现这个问题,是应为你在安装linux时候就应该选择定制软件包的时候,选择上那个“开发” ,将那几个能选择的都选择上肯定不会出现这种情况。

当然,你也可以自己找找,里面有关这个gcc c 啥啥的东西,后面忘了,还有gcc c++啥的包,就不会出现上面的问题

 

解决这个问题可以参考http://blog.csdn.net/zb0567/article/details/41048263或者百度。

 

 

(其中,在这里若出现了那个soft Limit:maximux usr pricess 情况,即:maximum user processes),是你之前配置的 /etc/security/limits.conf中出现问题了,请去检查相关的是否写错。

 

同时。老师那个/etc/sysctl.conf中信息的一个信息改为:kernel.shmall = 2097152

/etc/sysctl.conf中信息

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 = 1048586

 net.ipv4.tcp_wmem = 262144 262144 262144

 net.ipv4.tcp_rmem = 4194304 4194304 4194304

 

 

 

 

找到相应依赖包,如果不能成功的话,su root ——>输入密码  然后找到对应的rpm文件再重新在终端执行命令 rpm -ivh xxx.rpm。

 

大家可以参考文档http://www.jb51.net/article/53769.htm

而后点击安装完上面的rpm后,点击Check again 即可,没问题,就下一步

这块,没有截图,有一个从新弹出一个框,

而后,你可以将点击那个修改,进行将一些用户进行解锁,

比如较为长用的一个用户Scott,将对勾进行点击去掉,而后输入密码,确认密码,

点击确定,对话框点击yes

 

后面就行下一步,继续即可

 

 

看到这个页面可以初步判断oracle初步安装成功,接下来按照步骤创建数据库即可。

 

我安装参考的文档:http://www.jb51.net/article/53769.htm

好,上面如果你能成功的安装了,就暂时说明好了,但是你还得去oracle中查看一下,是否启动。

 

(我一般是将的关闭防火墙:chkconfig iptables off)读者可以不去选择去执行

 

手工启动:(这里是启动一些服务,就行windows中的服务一些,需要手工启动,读者进操作一些的命令即可)

 

[oracle@crmdb ~]$ lsnrctl start           //success 表明成功

[oracle@crmdb ~]$ dbstart   //启动监听器,我自己试了一下,没启动也没有事情

[oracle@crmdb ~]$ emctl start dbconsole   

//自后出现啥啥啥success,代表成功 ,这个是可以启动浏览器的进行的操作

/**浏览器中输入https://localhost:1158/em/ 

//usrname :sys

//password:自己设置的密码

登录即可,出现  

就行了

****/

 

//下面我没有操作,而是直接进行后面步骤:“二、去试试你安装的数据库,查看一下是否能用” ,如果能用,说明你的已经装成功了,下面就不用去管了

应对shared memory realm does not exist 错误的处理

1、实例没有启动

sqlplus /nolog

connect / as sysdba

startup

 

*****************************************************

监听器启动出现问题:

ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener 

使用oracle用户执行dbstart启动数据库提示如下:

ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener

Usage: /oracle/11g/bin/dbstart ORACLE_HOME

Processing Database instance "orcl": log file /oracle/11g/startup.log

 

修改dbstart以及dbshut两个文件

--------------------------

第一步:

把ORACLE_HOME_LISTNER=/ade/vikrkuma_new/oracle注释掉

然后修改/home/oracle/.bash_profile

添加export ORACLE_HOME_LISTNER=$ORACLE_HOME一句

生效变量:

[root@oracle01 ~]# source /home/oracle/.bash_profile

图为:

 

---------------------------

第二步:

#vi /etc/oratab

找到orcl=/u01/app/oracle:N这一行

改为:

orcl=/u01/app/oracle:Y

也就是将最后的N改为Y,意思是将不允许自动启动改为允许自动启动。即可解决问题$

*******************************************************

 

自动启动的脚本:

**********1******************************

首先修改/etc/oratab文件

#vi /etc/oratab

找到orcl=/u01/app/oracle:N这一行

改为:

orcl=/u01/app/oracle:Y

也就是将最后的N改为Y,意思是将不允许自动启动改为允许自动启动。

 

**********2************************************

启动了Linux系统之后,转到  /etc/init.d  目录下;

[root@oracle ~]# cd /etc/init.d

使用 vi 命令,新建一个以 oracle 命名的文件(并将以下代码复制至文件中)

[root@oracle init.d]# vi oracle

以下是代码:

曾经出现过一个问题:

“服务不支持 chkconfig”:——这个提示是因为oracle自启动脚本前面必须要有以下这两行

#chkconfig: 2345 00 01

#description:oracle 11g service

--------------------------------------------------------------------------------------------------------------

#!/bin/sh

# chkconfig: 345 61 61

# description: Oracle 11g AutoRun Services

# /etc/init.d/oracle

#

# Run-level Startup script for the Oracle Instance, Listener, and

# Web Interface

 

export ORACLE_BASE=/opt/oracle

export ORACLE_HOME=$ORACLE_BASE/oracle

export ORACLE_SID=zqaccp

export PATH=$PATH:$ORACLE_HOME/bin

 

ORA_OWNR="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 -- startup, shutdown, restart

# of the instance and listener or usage display

 

case "$1" in

 start)

     # Oracle listener and instance startup

     su $ORA_OWNR -lc $ORACLE_HOME/bin/dbstart

     echo "Oracle dbserver Start Succesful!OK."

     su $ORA_OWNR -lc "$ORACLE_HOME/bin/emctl start dbconsole"

     echo "Oracle dbconsole Start Succesful!OK."

     su $ORA_OWNR -lc "$ORACLE_HOME/bin/lsnrctl start"

     echo "Oracle Listeners Start Succesful!OK."

     ;;

 stop)

     # Oracle listener and instance shutdown

     su $ORA_OWNR -lc $ORACLE_HOME/bin/dbshut

     echo "Oracle Stop Succesful!OK."

     ;;

 reload|restart)

     $0 stop

     $0 start

     ;;

 *)

     echo $"Usage: `basename $0` {start|stop|reload|reload}"

     exit 1

esac

exit 0

 

-------------------------------------------------------------------------------------------------------------

 

 在编辑完成之后,使用 :x  命令保存此文件。

 

赋予执行权限

 

[root@oracle init.d]# chmod 750 /etc/init.d/oracle

 

链接:

 

[root@oracle init.d]# ln -s /etc/init.d/oracle /etc/rc1.d/K61oracle

 

[root@oracle init.d]# ln -s /etc/init.d/oracle /etc/rc3.d/S61oracle

 

执行以下命令:

 

[root@oracle init.d]# chkconfig --level 345 oracle on

 

[root@oracle init.d]# chkconfig --add oracle         //添加到服务里

 

 

 

二、去试试你安装的数据库,查看一下是否能用

 [oracle@mylinux database]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.3.0 Production on Sat Nov 5 05:50:34 2011

 

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

 

 

Connected to:

 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – Production

 With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

SQL> select * from v$version;

 

BANNER

 ——————————————————————————–

 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 – Production

 PL/SQL Release 11.2.0.3.0 – Production

 CORE    11.2.0.3.0      Production

 TNS for Linux: Version 11.2.0.3.0 – Production

 NLSRTL Version 11.2.0.3.0 – Production

 

 

//你也可以用账号scott 进行登录,(注意:在安装的时候要进行解锁,设置密码,和windows中安装是进行解锁操作一样)

登陆:      sql>conn scott/你设置密码

查看dept:  sql>select * from dept;

 

 

 

-------------------------------------------

要让修改的ip永久生效就必须修改配置文件/etc/sysconfig/network-scrips/ifcfg-eth0

 

DEVICE=eth0

BOOTPROTO=none

HWADDR=00:13:D3:90:95:4D

ONBOOT=yes

TYPE=Ethernet

NETMASK=255.255.255.0

IPADDR=192.168.2.102

USERCTL=no

IPV6INIT=no

PEERDNS=yes

IGATEWAY=61.144.47.225

GATEWAY=61.144.47.225

 

 DEVICE=eth0

 BOOTPROTO=none

 BROADCAST=192.168.1.255

 IPADDR=192.168.1.33

 NETMASK=255.255.255.0

 NETWORK=192.168.1.0

 ONBOOT=yes

 USERCTL=no

 PEERDNS=no

 TYPE=Ethernet