1.准备安装包
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip
rlwrap-0.30.tar.gz

2.安装依赖关系
先建立本地yum源(略)
1)检查依赖包是否完全
//查看已经安装的包
rpm -qa binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel
//查看已安装和未安装的包
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel
2)全部进行安装
//全部进行安装
yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel expat gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers libaio libaio-devel libgcc libstdc++ libstdc++-devel make pdksh sysstat unixODBC unixODBC-devel

(其中可能会有yum中没有的包,可以拷贝到本地进行安装,比如pdksh包)

  1. 创建用户和组
    groupadd oinstall
    groupadd dba
    groupadd asmadmin
    groupadd asmdba
    useradd -g oinstall -G dba,asmdba oracle -d /home/oracle
    查看oracle用户
    id oracle
    初始化oracle用户密码
    passwd oracle

查看oracle用户
id oracle
初始化oracle用户密码
passwd oracle

4 配置hostname
vim /etc/hosts
192.168.1.18 centos-oracle
这是自己的ip,后面的名字如果想改的话,后面也要跟着改

测试hostname
ping -c 3 centos-oracle

4.1优化os内核参数
查看系统内存大小和交换区
[root@dbserver /]# grep MemTotal /proc/meminfo
[root@dbserver /]# grep SwapTotal /proc/meminfo

vim /etc/sysctl.conf

fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=2097152
kernel.shmmni=4096
kernel.shmmax = 1073741824 (最好是系统内存的一半)
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
使参数生效
sysctl -p

5 限制oracle用户的shell权限
vim /etc/security/limits.conf

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

vim /etc/pam.d/login

session required /lib64/security/pam_limits.so
session required pam_limits.so

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

6 创建oracle安装目录
1.方案一。
mkdir -p /opt/app/oracle/product/11.2.0
mkdir /opt /app/oracle/oradata
mkdir /opt /app/oracle/inventory
mkdir /opt /app/oracle/fast_recovery_area
chown -R oracle:oinstall /opt /app/oracle
chmod -R 775 /opt /app/oracle
2.方案二。
mkdir -p /db/app/oracle/product/11.2.0
mkdir /db/app/oracle/oradata
mkdir /db/app/oracle/inventory
mkdir /db/app/oracle/fast_recovery_area
chown -R oracle:oinstall /db/app/oracle
chmod -R 775 /db/app/oracle
7 配置oracle用户环境变量
su - oracle
vim .bash_profile

umask 022
export ORACLE_HOSTNAME=centos-oracle
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/
export ORACLE_SID=ORCL
export PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
export LC_ALL="en_US"
export LANG="en_US"
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"

umask 022
export ORACLE_HOSTNAME=centos-oracle
export ORACLE_BASE=/db/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/
export ORACLE_SID=ORCL
export PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
export LC_ALL="en_US"
export LANG="en_US"
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"

以上配置完成后,个人建议重启下系统

source .bash_profile
reboot
8.上传并解压oracle压缩文件到 /db
cd /opt/
unzip linux.x64_11gR2_database_1of2.zip -d /db
unzip linux.x64_11gR2_database_2of2.zip -d /db

解压完成后
mkdir /opt/etc/
cp /opt/database/response/* /opt/etc/
vim /opt/etc/db_install.rsp

mkdir /db/etc/
cp /db/database/response/* /db/etc/
vim /db/etc/db_install.rsp

设置 相关参数

oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/opt/app/oracle/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOSTNAME=centos-oracle
ORACLE_HOME=/opt/app/oracle/product/11.2.0
ORACLE_BASE=/opt/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.isCustomInstall=true
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba

oracle.install.db.config.starterdb.type=GENERAL_PURPOSE   //数据库类型   
oracle.install.db.config.starterdb.globalDBName=orcl      #globalDBName   
oracle.install.db.config.starterdb.SID=orcl #SID(**此处注意与环境变量内配置SID一致)  
oracle.install.db.config.starterdb.memoryLimit=81920      #自动管理内存的内存(M)  
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false            #(手动写了false)  
oracle.install.db.config.starterdb.password.SYS=123456
oracle.install.db.config.starterdb.password.SYSTEM=123456

DECLINE_SECURITY_UPDATES=true //必须设置为true

可选项目
//oracle.install.db.config.starterdb.password.ALL=oracle    #设定所有数据库用户使用同一个密码   

  1. 开始安装
    su - oracle
    cd /opt/database
    ./runInstaller -silent -ignorePrereq -responseFile /opt/etc/db_install.rsp

./runInstaller -silent -ignorePrereq -responseFile /db/etc/db_install.rsp

(注意:运行期间可能出现页面跳转的问题

需要进行以下操作:
su root
#xhost +

su oracle
继续进行安装。)

安装期间可以另外打开一个窗口,使用tail命令监看oracle的安装日志
tail -f /opt/app/oracle/inventory/logs/installActions2017-07-12_03-48-29PM.log

注意:这个日志文件后面跟的日期和你自己的不一样,根据提示,复制自己正确的日志路径

安装完成会在原来的窗口提示Successfully Setup Software.
这时不要动原来的窗口,在新窗口下操作
su root
sh /opt/app/oracle/inventory/orainstRoot.sh
sh /opt/app/oracle/product/11.2.0/root.sh

sh /db/app/oracle/inventory/orainstRoot.sh
sh /db/app/oracle/product/11.2.0/root.sh

执行完成后,可以在原来的窗口在键入enter,恢复操作

10 配置静默监听
su - oracle
netca /silent /responsefile /opt/etc/netca.rsp

netca /silent /responsefile /db/etc/netca.rsp

                   注意,这一步可能会出现 netca命令不能使用的情况,需要对第7部进行核查,重新source一下。

查看监听端口
netstat -tnulp | grep 1521
如果找不到netstat命令 yum install net-tools.x86_64
11.静默创建数据库
vi /opt/etc/dbca.rsp

GDBNAME = "orcl"
SID = "orcl"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
SYSMANPASSWORD = "oracle"
DBSNMPPASSWORD = "oracle"
DATAFILEDESTINATION =/opt/app/oracle/oradata
RECOVERYAREADESTINATION=/opt/app/oracle/fast_recovery_area
CHARACTERSET = "AL32UTF8"
TOTALMEMORY = "1638"
SOURCEDB = "orcl"
INSTANCENAME = "orcl"

vi /db/etc/dbca.rsp

GDBNAME = "orcl"
SID = "orcl"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
SYSMANPASSWORD = "oracle"
DBSNMPPASSWORD = "oracle"
DATAFILEDESTINATION =/db/app/oracle/oradata
RECOVERYAREADESTINATION=/db/app/oracle/fast_recovery_area
CHARACTERSET = "AL32UTF8"
TOTALMEMORY = "1638"
SOURCEDB = "orcl"
INSTANCENAME = "orcl"

执行静默建库
dbca -silent -responseFile /opt/etc/dbca.rsp

dbca -silent -responseFile /db/etc/dbca.rsp

......
完成后查看oracle实例进程
ps -ef | grep ora_ | grep -v grep

查看监听状态
lsnrctl status

  1. 安装rlwrap
    安装rlwrap用来支持Oracle下sqlplus无法使用方向键,使用方向键乱码等问题
    下载后,将.zip扩展名去掉,传到Linux服务器上面
    安装rlwrap时,提示需要安装readline
    就用 yum -y install readline*就可以了

安装rlwrap
[root@oracle11g ~]# tar -zxvf rlwrap-0.30.tar.gz
[root@oracle11g ~]# cd rlwrap-0.30
[root@oracle11g rlwrap-0.30]# ./configure
[root@oracle11g rlwrap-0.30]# make
[root@oracle11g rlwrap-0.30]# make install
[root@oracle11g rlwrap-0.30]# rlwrap
Usage: rlwrap [options] command ...

Options:
-a[password:] --always-readline[=password:]
-A --ansi-colour-aware
-b <chars> --break-chars=<chars>
-c --complete-filenames
-C <name|N> --command-name=<name|N>
-D <0|1|2> --history-no-dupes=<0|1|2>
-f <completion list> --file=<completion list>
-F <format string> --history-format=<format string>
-h --help
-H <file> --history-filename=<file>
-i --case-insensitive
-l <file> --logfile=<file>
-n --no-warnings
-p[ANSI colour spec] --prompt-colour[=ANSI colour spec]
-P <input> --pre-given=<input>
-q <chars> --quote-characters=<chars>
-m[newline substitute] --multi-line[=newline substitute]
-r --remember
-v --version
-s <N> --histsize=<N> (negative: readonly)
-t <name> --set-term-name=<name>

[root@oracle11g rlwrap-0.30]# vi /home/oracle/.bash_profile
添加
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

安装可能的报错
rlwrap: error while loadingshared libraries: libreadline.so.5: cannot open shared object file: No suchfile or directory

解决办法:

在oracle下的.bash_profile中$PATH路径中增加/usr/local/bin路径

PATH=/usr/local/bin:$PATH;export PATH

  1. 修改初始化位置
    在oracle用户根目录下找到.bash_profile
    su - oracle
    [oracle@centos-oracle ~]$ ls -a
    [oracle@centos-oracle ~]$ vim .bash_profile
    将刚刚安装过程加进去的所有东西都复制一份
    [oracle@centos-oracle ~]$ vim .bashrc 粘贴到这个文件下
    [oracle@centos-oracle ~]$ source .bashrc

14.启动数据库
oracle数据库安装好后,只有sys用户才能进入,需要启动数据库其他用户才能使用
[oracle@centos-oracle ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Oct 18 15:37:44 2017

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

Connected to an idle instance.

SQL>
如果出现以下错误
SQL> startup
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/db/app/oracle/product/11.2.0/dbs/initORCL.ora'
SQL>
解决办法:
[oracle@dbserver dbs]$ cd /db/app/oracle/admin/orcl/pfile/
[oracle@dbserver pfile]$ ls
init.ora.6242012174552
[oracle@dbserver pfile]$ cp init.ora.6242012174552 /db/app/oracle/product/11.2.0/dbs/

更改名字格式为:initORACLE_SID.ora
[oracle@dbserver dbs]$ mv init.ora.6242012174552 initORCL.ora
重启数据库
[oracle@centos-oracle ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Wed Oct 18 15:37:44 2017

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

Connected to an idle instance.

SQL>
SQL> startup
ORACLE instance started.

Total System Global Area 1720328192 bytes
Fixed Size 2214056 bytes
Variable Size 1006634840 bytes
Database Buffers 704643072 bytes
Redo Buffers 6836224 bytes
Database mounted.
Database opened.
SQL>
启动成功。

Tips:出现ora-01102:
出现的原因:a,ORACLE_HOME/dbs/中存在“sgadef.dbf”文件或lk*文件。这两个文件是用来锁内存的。b, oraclel的pmon,smon,lgwr 和dbwr等进程未正常关闭。 c,数据库关闭后,共享内存或者信号量依然被占用了。Lk数据数据库已经是MOUNT状态,不用再次MOUNT。当DATABASE 被UNmount后会被自动删除。如果DATABASE没有MOUNT,依然存在这个问题,只能手工进行删除了。
解决办法:

cd /$ORACLE_HOME/dbs
$ORACLE_HOME/dbs> ll lk*
//查看使用 lkORCL文件的进程和用户
/sbin/fuser –u lkORCL
//使用fuser –k lkORCL 解除访问的进程
/sbin/fuser –k lkORCL
然后重新进行启动。

15.查看数据库
查看实例状态
select status from v$instance;

查看数据库编码
select userenv('language') from dual;

激活scott用户
alter user scott account unlock;
alter user scott identified by tiger;

查看用户
select * from all_users;

16.oracle监听启动,停止,查看命令
su oracle

然后启动监听器
lsnrctl start
会看到启动成功的界面;

lsnrctl stop
停止监听器命令.

lsnrctl status
查看监听器命令.

查看监听端口
netstat -tnulp | grep 1521

开机自启动监听
su root
[root@centos-oracle ~]# vim .bashrc
在文件最下面添加lsnrctl start
保存退出
17.firewall防火墙
启动和关闭

systemctl start firewalld # 启动,

systemctl enable firewalld # 开机启动

systemctl restart firewalld # 重启

systemctl stop firewalld # 关闭

systemctl disable firewalld # 取消开机启动

具体的规则管理使用firewall-cmd

说明:
–zone 作用域
–add-port=8080/tcp 添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效

查看运行状态
[root@localhost /]# firewall-cmd --state
running
[root@localhost /]#

查看指定区域所有开放的端口
[root@localhost /]# firewall-cmd --zone=public --list-port
5055-5060/tcp

打开指定端口
[root@centos-oracle ~]# firewall-cmd --zone=public --add-port=1521/tcp --permanent
success
[root@centos-oracle ~]#

端口转发
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent

18.修改监听文件
cd /db/app/oracle/product/11.2.0/network/admin
找到listener.ora文件
修改如下:
修改如下:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /opt/app/oracle/product/11.2.0/)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /opt/app/oracle/product/11.2.0/)
(SID_NAME = ORCL)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = centos-oracle)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /opt/app/oracle

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /db/app/oracle/product/11.2.0/)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /db/app/oracle/product/11.2.0/)
(SID_NAME = ORCL)
)
)

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = centos-oracle)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /db/app/oracle

19.设置开机自启

cd /etc
vim oratab
如果没有就新建一个
加入orcl:/opt/app/oracle/product/11.2.0:Y
给与oratab执行权限
chmod 777 /etc/oratab

vim /etc/rc.d/rc.local

修改
su - oracle -lc "/opt/app/oracle/product/11.2.0/bin/lsnrctl start"
su - oracle -lc "/opt/app/oracle/product/11.2.0/bin/dbstart"

su - oracle -lc "/db/app/oracle/product/11.2.0/bin/lsnrctl start"
su - oracle -lc "/db/app/oracle/product/11.2.0/bin/dbstart"

chmod 777 /etc/rc.d/rc.local

cd /opt/app/oracle/product/11.2.0/bin

cd /db/app/oracle/product/11.2.0/bin

vim dbstart
将$1修改成$ ORACLE_HOME,如下:
#ORACLE_HOME_LISTNER=$1
ORACLE_HOME_LISTNER=$ORACLE_HOME
重启linux系统,检查oracle是否自启动