单机安装Oracle
一、安装RedHat
创建分区
Linux系统的Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。
(为便于操作,在安装系统过程选用中文,在分配内存过程也可以更好理解)
如下图显示
网上资料显示,安装所需的磁盘分区如下:
分区名称 |
大小(MB) |
/boot |
128 |
swap |
4096 |
/ |
20408 |
/home |
5000 |
紧接着,完成分区的创建(使用标准分区选项即可)
为/boot 目录分配内存
为swap分区分配内存
为/home目录分配内存
为根目录分配剩下的内存
完成以上工作即以创建好软件所需要的分区,通过free 或df –h 命令可以查看内存。
二、安装前系统准备工作
1.设置IP地址为静态(固定IP地址)
方法一:手动设置
方法二:修改配置文件
修改完重启网卡
servicenetwork restart
2.
修改stsctl.conf文件(修改内核参数)
Linux是为小文件设计的,Oracle数据库安装需要占用较多资源,要把各项参数调大。
命令:vi /etc/sysctl.conf
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 2009843712
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
使用 /sbin/sysctl –p 可使参数生效,并且检查错误,在修改的时候尽量不要出现空字符,不然也会报错。
各参数详解:
kernel.shmmax:是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及ServerProcess创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。
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:表示套接字发送缓冲区大小的最大值。
3.修改用户 SHELL 的限制
命令: 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
此步骤完成后需要重启系统 命令:reboot
4.创建用户及用户组
l 创建dba组
groupadd dba
tail /etc/group #查看是否创建
l 创建oracle用户并添加到dba组
useradd oracle
usermod -g dba oracle #将oracle用户添加到dba组
passwd oracle #给oracle用户添加密码
tail /etc/group
tail /etc/passwd #测试操作是否成功
注意:(有些教程是这样的)选用
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/groupadd oper
/usr/sbin/useradd -g oinstall -G dba,oper oracle
添加了多个多个用户组
修改 oracle 密码
passwd oracle
5.为Oracle安装创建目录
#oracle 的基目录
mkdir -p /oracle/app
chown -R oracle:oinstall /oracle/app
chmod -R 775 /oracle/app #oracle 的主目录
mkdir -p /oracle/app/product/11.2.0/db_1
chown -R oracle:oinstall /oracle/app/product/11.2.0/db_1
chmod -R 775 /oracle/app/product/11.2.0/db_1 #oracle 的日志目录
mkdir -p /oracle/oraInventory
chown -R oracle:oinstall /oracle/oraInventory
chmod -R 775 /oracle/oraInventory #oracle 的数据文件目录
mkdir -p /oracle/oradata
chown -R oracle:oinstall /oracle/oradata
chmod -R 775 /oracle/oradata #oracle 的闪回区目录
mkdir -p /oracle/flash_recovery_area
chown -R oracle:oinstall /oracle/flash_recovery_area
chmod -R 775 /oracle/flash_recovery_area
6.编辑login 文件
输入命令:vi /etc/pam.d/login
# for oracle setting 在文档内加入以下内容
session required /lib/security/pam_limits.so
session required pam_limits.so
7.编辑 profile 文件
vi /etc/profile # for oraclesetting 在文档内加入以下内容
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
8. 修改 oracle 帐户的用户环境,需要在 oracle 用户下实现,其他设置均在 root 帐户下完成
su oracle
vi .bash_profile # for oracle setting 在文档内加入以下内容, ORACLE_SID 实例名称自己想好了替换掉
export PATH
export ORACLE_BASE=/oracle/app
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=oral
export umask=022
export PATH=$PATH:$ORACLE_HOME/bin
测试用户环境命令为: env ,然后用 su –退回到root 账户下进行其他操作。
三、安装Oracle软件
l 在根目录下建议 oraclesoft 目录,用于存放数据库应用程序
mkdir /oraclesoft
l 上传软件
使用 SecureCRT 软件的文件 / 连接 SFTP标签页,实现数据库程序的上传
cd /oraclesoft,将 linux 当前目录指向新建目录,可以用 pwd 来测试当前目录 lcd X:/oraclesoft ,引导到 windows 电脑的 oracle 源程序目录上,目录最好是英文的且没有空格。可以用 lpwd 来测试当前目录及用 ls 命令显示目录内容。将,
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip
上传完毕后,断开 SFTP 的连接,进入 linux 系统的 /oraclesoft 目录下,确认 oracle 源文件是否上传成功。
l 解压软件
解压/oraclesoft 下的 oracle 数据库文件到默认目录,解压完成后会生成/oraclesoft/database 目录。(名字记得替换掉)
unzip –o –d /oracle/oraclesoft linux.x64_11gR2_database_1of2.zip
unzip –o –d /oracle/oraclesoft linux.x64_11gR2_database_2of2.zip
l 配置display
在 root 帐户的桌面上打开终端程序后输入命令: xhost +
l 安装软件
使用 oracle 帐户进入安装 linux 的服务器,直接到物理机上安装,而不是通过 SSH 方式进行,执行如下命令:
su oracle
export LANG=en_US /export LANG=en_US.UTF-8(中稳版本需要加utf-8)
export DISPLAY=127.0.0.1:0.0
cd /oraclesoft/database
./runInstaller
四、安装软件
Display显示问题
安装可能会遇见display显示问题,即显示不出安装界面或者安装界面显示不出英文界面,解决办法如下:
1、 以root用户登录
在执行xhost +命令(使得所有客户都可以访问)
若返回信息为:
access control disabled,clients can connect fromany host
表示xhost +可执行直接切换至oracle用户运行安装oracle
如果xhost +不能执行,
第一步:用root登陆linux,启动vnc服务;
第二步:根据vnc起来的端口,设置export DISPLAY=:1(1表示vnc在第一个tty上启动的),vnc的启动信息见下文的linux操作日志;
第三步:xhost + ip (ip为主机ip地址)
2、以oracle用户登录
那么在该oracle用户下执行一下export DISPLAY=:1.0
然后再执行xdpyinfo命令,如果能出现信息说明你已经成功了
这样估计就可以解决linux下安装oracle出现的xhost问题
依赖包安装问题
联系安装软件过程按照典型安装,进行单机安装,并且安装桌面版方便操作,上一次安装服务器版开启问题还没解决。
由于依赖关系存在,报了一下几个依赖包缺失
因此进行yum配置,通过yum 安装缺少的依赖。
挂载镜像配置yum 源
使用vmware时,在虚拟机设置里,设置CD/DVD为系统镜像,挂载时,有时会有找不到介质或者no medium found之类的提示。
根本原因是iso镜像并没有加载到虚拟机系统内。
解决办法:
临时解决办法:在虚拟机下部的状态栏内,找m到CD/DVD图标(一个光盘图标),此时一般显示为灰色,鼠标点一下,即可启动CD/DVD,此时CD/DVD即可加载到虚拟机系统内
永久解决办法:在虚拟机的CD/DVD设置里,将“已连接”和“打开电源时连接”两个选项,选中,确定即可。如下图所示:
此时再执行mount命令,即可成功挂载光盘。
mkdir /mnt/cdrom
mount -t iso9660 /dev/cdrom /mnt
配置yum源
Vi /etc/yum.repos.d/local.repo
在执行以下操作
然后将依赖包一个个安装即可,pdshk 这个依赖包安装不了,没有影响。同时内核参数也报了异常,修改成系统建议的参数就可以了。
安装成功!!
五、数据库建库
在oracle用户的图形界面oracle用户中,新开启一个终端,直接输入命令dbca会弹出如下界面。我们这里采用定制数据库。
由于目录权限问题,我改了下安装路径
sqlplus / as sysdba 弹出对话框
ps ax /-ef|grep pmon 搜索进程
select open_mode from v$database
select instance_name from v$instance
六、配置监听及本地网络服务
部分转载自http://www.jb51.net/article/53769.htm
注意:
1、Linux oracle数据库listener.ora存放路径
cd /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
2、Linux oracle数据库tnsnames.ora存放路径
cd/home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
3、ORACLE启动监听器
(1)切换至oracle安装用户(一般为oracle)
su - oracle
(2)启动监听器
lsnrctl start
(3)停止监听器
lsnrctl stop
4、启动测试oracle:
[oracle@oracle ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Fri Jul 27 02:12:12 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> quit
测试的另一种方法:找一台windows平台电脑,telnet oracle主机IP地址:1521,通的话,会出现一个黑屏,光标一闪一闪。
5、Linux开放1521端口允许网络连接Oracle Listener
症状:
(1)TCP/IP连接是通的。可以用ping 命令测试。
(2)服务器上Oracle Listener已经启动。
lsnrctl status 查看listener状态
lsnrctl start 启动Oracle listener
(3)客户端得到的错误信息通常是:ORA-12170: TNS:连接超时
这时,我们基本可以肯定是服务器没有开放1521端口(假设你用默认设置)
解决方法:
(1)假如你是在一个局域网环境,配置了防火墙。那么可以关闭Linux的防火墙。
sudo service iptables stop
(2)编辑iptables, 开放1521端口:
sudo vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT
:wq
重启防火墙
sudo service iptables restart
保存配置,以便linux重启后依然有效
sudo service iptables save
查看防火墙规则:
sudo iptables -L –n
6、linux下创建oracle用户表空间
就是在已有的数据库实例上创建一个新的帐号,访问一些新的表
操作步骤如下:
(1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切换成oracle用户)
(2)以sysdba方式来打开sqlplus,命令如下: sqlplus "/as sysdba"
(3)查看我们常规将用户表空间放置位置:执行如下sql:
select name from v$datafile
(4)创建用户表空间:
CREATE TABLESPACE NOTIFYDB DATAFILE'/home/oracle/app/oradata/orcl/scsdb.dbf' SIZE 200M AUTOEXTEND ON EXTENTMANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
(5)创建用户,指定密码和上边创建的用户表空间
CREATE USER scs IDENTIFIED BY scs DEFAULT TABLESPACE NOTIFYDB;
(6)赋予权限
grant connect,resource to scs;
grant unlimited tablespace to scs;
grant create database link to scs;
grant select any sequence,create materialized view to scs;
--经过以上操作,我们就可以使用scs/scs登录指定的实例,创建我们自己的表了
总结:
l 先开启数据库后开启数据库实例:
l Su oracle //切换到oracle
l lsnrctl start //开启oracle监听
l sqlplus /nolog //进入sqlplus
startup //开启数据库
l 用sys账户以sysdba的身份登录
l 输入startup
可以看到数据库还有数据库实例都在运行了