环境:
jdk1.7,liunx 6.8
物理内存应不少于1GB,对于VMWARE虚拟机建议不少于1200MB.对于系统中的交换分区设置,应参以下约定:物理内存为1GB~2GB时,交换分区为物理内存的1.5~2倍;物理内存为2GB~16GB时,交换分区与物理内存大小相同;物理内存超过16GB时,交换分区使用16GB就可以了。
1、更改hostname主机名:
vim /etc/hosts(更改主机名的路径)
127.0.0.1 主机名 (列如:127.0.0.1 oracledb)
10.9.8.5 主机名(列如:10.9.8.5 oracledb)
2、关闭防火墙:
# vi /etc/selinux/config
//设置SELINUX=disabled
# systemctl stop firewalld 临时关闭防火墙
# systemctl disable firewalld 停止并禁用开机启动
3、下载oracle安装包:
oracle11g下载地址(版本11.2.0.1.0):
https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
下载好后,使用"新建文件传输(Ctrl+Alt+F)"拉入主机中
注意:
拉入的时候两个一起拉。拉入最好拉入tmp下,不然解压的时候各种崩)
4、安装oracle可能要用到的各种插件:
# yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 glibc-common glibc-headers ksh libaio libaio*.i686 libaio-devel libaio-devel*.devel libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.devel libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static pcre-devel numactl-devel
5、准备安装用户及用户组:
# groupadd oinstall (创建一个用户名为oinstall的用户组)
# groupadd dba (创建一个用户名为dba的用户组)
# useradd -g oinstall -G dba -d /home/oracle oracle (或者 useradd -g oinstall -G dba oracle也可以)
说明:
-g为指定用户的主要组为oinstall组
-G为指定用户的次要组为dba组
-d为指定用户的主目录
# passwd oracle //设置oracle密码(密码:123123)最好不要使用特殊符号,因为转移的时麻烦
6、修改内核参数配置文件:
# vi /etc/sysctl.conf 在文件最后增加:(注释写在后面)
# Oracle set
net.ipv4.icmp_echo_ignore_broadcasts = 1
//避免放大攻击
net.ipv4.conf.all.rp_filter = 1
//开启反向路径过滤
fs.aio-max-nr = 1048576
//此参数限制并发为完成的请求,一般设置:1048576=1024*1024
fs.file-max = 6815744
//该参数巨大系统所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量
kernel.shmall = 2097152
// 该参数控制可以使用的共享内存的总页数。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.shmmax = 2147483648
//是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,能在一个共享内存段下容纳下整个的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.shmmni = 4096
//该参数是共享内存段的最大数量。shmmni缺省值4096,一般肯定是够用了。
kernel.sem = 250 32000 100 128
// 250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。
// 32000是参数semmns的值,表示系统内可允许的信号量最大数目。
//100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。
// 128是参数semmni的值,表示系统信号量集合总数。
net.ipv4.ip_local_port_range = 9000 65500
//表示应用程序可使用的IPv4端口范围。
net.core.rmem_default = 262144
//表示套接字接收缓冲区大小的缺省值。
net.core.rmem_max = 4194304
//表示套接字接收缓冲区大小的最大值。
net.core.wmem_default = 262144
//表示套接字发送缓冲区大小的缺省值
net.core.wmem_max = 1048576
//表示套接字发送缓冲区大小的最大值。
让参数生效:
# sysctl -p
7、修改用户的限制文件:
# vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
//nproc设置进程最大数目
oracle soft nofile 1024
oracle hard nofile 65536
//nofile打开文件最大数目
oracle soft stack 10240
//stack设置最大栈大小
# vi /etc/pam.d/login //在文件后增加
session required /lib64/security/pam_limits.so
//64位系统时,千万别写成/lib/security/pam_limits.so,否则导致无法登录
session required /lib/security/pam_limits.so
//32位系统专用
8、创建安装目录
创建文件(基本版):
# mkdir /opt/payment/oracle
//创建oracle目录
# mkdir /opt/payment/oracle/product/11.2.0/db_1
//数据库系统安装目录
# mkdir /opt/payment/oracle/oradata
//数据库数据安装目录
# mkdir /opt/payment/oracle/oradata_back
//数据备份目录
# mkdir /opt/payment/oracle/oraInventory
//清单目录(oracle用户创建)
创建文件(简版):
# mkdir -p /opt/payment/oracle /opt/payment/oracle/product/11.2.0/db_1 /opt/payment/oracle/oradata /opt/payment/oracle/oradata_back /opt/payment/oracle/oraInventory
用户权限操作 :
#chown -R oracle:oinstall /opt/payment/oracle /opt/payment/oracle/product/11.2.0/db_1 /opt/payment/oracle/oradata /opt/payment/oracle/oradata_back /opt/payment/oracle/oraInventory
读写操作权限:
#chmod -R 775 /opt/payment/oracle /opt/payment/oracle/product/11.2.0/db_1 /opt/payment/oracle/oradata /opt/payment/oracle/oradata_back /opt/payment/oracle/oraInventory
9、配置环境变量
vi /etc/profile:(此处不多做注释了)
#oracle
export ORACLE_BASE=/opt/payment/oracle
export ORACLE_HOME=/opt/payment/oracle/product/11.2.0/db_1
export ORACLE_OWNER=oracle
export ORACLE_SID=oracle11g
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
10、解压oracle文件
# unzip -o /home/oracle/ linux.x64_11gR2_database_1of2.zip -d /opt/payment/
//-o:要解压的文件
//-d:要解压到的目录
# unzip -o /home/oracle/linux.x64_11gR2_database_2of2.zip -d /opt/payment/
11、编辑静默安装响应文件
# su – oracle //进入oracle用户(之后全是oracle用户执行)
# cp /opt/payment/database/response/*.rsp /opt/payment/oracle/ //复制一份模板
# cd /opt/payment/oracle/
# vim /opt/payment/oracle/db_install.rsp
(因为下面的安装是只安装软件不安装启动数据库实例,所以改个名字以提示自己)文件内修改相应的参数配置如下:
注意:注释都在后面
oracle.install.option=INSTALL_DB_SWONLY
//只安装软件,不安装启动数据库
ORACLE_HOSTNAME=oracledb
//通过hostname命令获得
oracle11gUNIX_GROUP_NAME=oinstall
//制定主组
INVENTORY_LOCATION=/opt/payment/oracle/oraInventory
//库存地点
SELECTED_LANGUAGES=en,zh_CN
//所选语言
ORACLE_HOME=/opt/payment/oracle/product/11.2.0/db_1
ORACLE_BASE=/opt/payment/oracle
oracle.install.db.InstallEdition=SE
// oracle版本 EE企业版 SE:标准版 SEONE:标准版 PE:个人版(只适用于WINDOWS)
oracle.install.db.isCustomInstall=true
//默认false是否自定义Oracle的组件
oracle.install.db.DBA_GROUP=dba
//admin管理组名
oracle.install.db.OPER_GROUP=dba
//oper操作员组名
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
//数据库类型
oracle.install.db.config.starterdb.globalDBName=oracle11g
oracle.install.db.config.starterdb.SID=oracle11g
//SID(**此处注意与环境变量内配置SID一致)
oracle.install.db.config.starterdb.characterSet=AL32UTF8
//通常中文选择的有ZHS16GBK简体中文库,建议选择unicode的AL32UTF8国际字符集
oracle.install.db.config.starterdb.memoryLimit=81920
oracle.install.db.config.starterdb.password.ALL=oracle
//所有数据库用户密码一致
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
DECLINE_SECURITY_UPDATES=true
// **注意此参数 设定一定要为true
12、根据响应文件安装oracle
//oracle用户下执行
/opt/payment/database/./runInstaller -silent -force -ignorePrereq -responseFile /opt/payment/oracle/db_install.rsp
注意:
这里不做任何操作,等成功运行完成下面第一步操作后,回到这个窗口回车。
新建root用户登录窗口:
执行命令: /opt/payment/oracle/product/11.2.0/db_1/./root.sh
执行后下面会出一行路径,执行查看日志,查看是否成功,如图:
然后回到上一步操作的那个窗口回车
数据库搭好了,以下创建实例
13、静默建立新库(同时也建立一个对应的实例):
# vi /opt/payment/oracle/dbca.rsp
修改几个参数,如果这几个参数被注释了,要取消注释(这个文件一定要修改,否则会造成数据库创建后无法挂载)
GDBNAME = “htjc”
SID = “htjc”DATAFILEDESTINATION =/opt/payment/oracle/oradata
// 数据文件存放目录
RECOVERYAREADESTINATION=/opt/payment/oracle/oradata_back
// 恢复数据存放目录
CHARACTERSET = "AL32UTF8"
//字符集,重要!!! 建库后一般不能更改,所以建库前要确定清楚
NATIONALCHARACTERSET="UTF8"
//425行 编码
TOTALMEMORY = "5120"
//oracle内存5120MB
SOURCEDB = "dzfp-2:1521:htjc"
保存退出
启动:
dbca -silent -responseFile /opt/payment/oracle/dbca.rsp
问题:
这里输入命令时,其他的我不知道,我使用的xshell6直接花屏幕了,建议直接在原虚拟机上手输入上面的启动代码
14、静默建立监听
# netca /silent /responsefile /opt/payment/oracle/netca.rsp
运行:
lsnrctl start
成功运行后:
在/opt/payment/oracle/11.2.0/db_1/network/admin目录下生成sqlnet.ora和listener.ora两个文件。
查看端口号是否存在:
tcp 0 0 :::1521 :::* LISTEN 5477/tnslsnr (说明监听器已经在1521端口上开始工作了)
15、Linux开机自动启动ORACLE设置:
如何在Linux启动时自动启动Oracle监听和实例:
首先要解决上面的问题,才能继续哟!
第一步:修改/etc/oratab文件,命令如下:
# vi /etc/oratab
第二步:把lsnrctl start和dbstart添加到rc.local文件中,命令如下:
# vi /etc/rc.d/rc.local
# chmod +x /etc/rc.d/rc.local
添加:
su oracle -lc 'lsnrctl start’
su oracle -lc 'dbstart'
注意:第一个命令有空格,所以要用引号的
重启试试吧!
16、Linux开机自动启动ORACLE设置的问题
1.安装好Oracle数据库后: 执行 dbstart和dbshut会提示:
[oracle@oracle11g ~]$ dbstartORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
Usage: /opt/payment/oracle/product/11.2.0/db_1/bin/dbstart ORACLE_HOME错误原因是:dbstart和dbshut脚本文件中ORACLE_HOME_LISTNER的设置有问题,分别打开两个文件找到:ORACLE_HOME_LISTNER=$1,修改为 $ORACLE_HOME
命令如下:
# vi $ORACLE_HOME/bin/dbstart
# vi $ORACLE_HOME/bin/dbshut
修改后保存退出,第一个问题已解决;