原创 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 查看那个几个文件的权限,我的如下:
[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