centos-7/8.2.2004安装oracle11g全过程

Posted 十又木子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos-7/8.2.2004安装oracle11g全过程相关的知识,希望对你有一定的参考价值。


一、准备工作

1.准备CentOS 7 系统环境

由于是使用静默模式(silent)安装的,无需使用图形化界面,我选择了最小安装的服务器版的CentOS 7。安装完成后,只有命令行界面。

centos-7/8.2.2004安装oracle11g全过程

2.下载 Oracle 11g

(1)Oracle官方网站:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 我的机器安装的是CentOS7 64位系统,因此下载的Oracle版本也是64位的

特别注意:11.2.0.2.0  zlinux64版本的Oracle是安装在IBM服务器的,CentOS 7是无法安装的。

(2)下载完成后,有两个压缩文件

linux.x64_11gR2_database_1of2.zip 和 linux.x64_11gR2_database_2of2.zip

3.通过Xftp将压缩文件上传到 /db/

4.安装依赖包,安装依赖包之前,个人建议将yum源修改为aliyun源,下载速度快些,(离线环境需要提前下载好,有条件可以重新挂载yum源到本地等)

方法 mount /dev/cdrom /mnt/cd 


4.1非离线执行如下命令即可:cd /etc 

centos-7/8.2.2004安装oracle11g全过程

mvyum.repos.d yum.repos.d.bak

mkdiryum.repos.d

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum clean all

yum makecache


若提示:

正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... :未知的名称或服

则执行:echo 'nameserver 8.8.8.8'>>/etc/resolv.conf

centos-7/8.2.2004安装oracle11g全过程

5.修改成功后,安装如下依赖包:

centos-7/8.2.2004安装oracle11g全过程

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

centos-7/8.2.2004安装oracle11g全过程

6.安装完成后显示如下界面

 centos-7/8.2.2004安装oracle11g全过程

7.使用如下命令检查依赖是否安装完整

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 | grep"not installed"

centos-7/8.2.2004安装oracle11g全过程

8.发现 pdksh 没有安装

centos-7/8.2.2004安装oracle11g全过程

9.执行 yum -y install pdksh,发现CentOS 7 没有相关安装包可用

centos-7/8.2.2004安装oracle11g全过程

10.通过wget命令直接下载pdksh的rpm包,我下载到了/tmp/

wget -O /tmp/pdksh-5.2.14-37.el5_8.1.x86_64.rpm http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm

下载完成后,进入 /tmp/

cd /tmp/

rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm

11.再次检查依赖包是否安装完整

centos-7/8.2.2004安装oracle11g全过程

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 | grep"not installed"

centos-7/8.2.2004安装oracle11g全过程

centos-7/8.2.2004安装oracle11g全过程

 到此依赖包安装完整

12.添加oracle用户组和用户

groupadd oinstall

groupadd dba

groupadd asmadmin

groupadd asmdba

useradd -g oinstall -G dba,asmdba oracle -d /home/oracle

13.添加完成后,查看oracle用户

id oracle

14.初始化oracle用户的密码

passwd oracle

centos-7/8.2.2004安装oracle11g全过程

 说明:密码需输入两次,提示密码强度若不用管,两次一致后会提示设置成功

15.配置hostname(本机IP映射)

vim /etc/hosts

192.168.154.154 centos-oracle

16.测试hostname

ping -c 3 centos-oracle

centos-7/8.2.2004安装oracle11g全过程

 17.优化OS内核参数,kernel.shmmax 参数设置为物理内存的一半

vim /etc/sysctl.conf

fs.aio-max-nr=1048576

fs.file-max=6815744

kernel.shmall=2097152

kernel.shmmni=4096

kernel.shmmax = 1073741824

kernel.sem=25032000100128

net.ipv4.ip_local_port_range=900065500

net.core.rmem_default=262144

net.core.rmem_max=4194304

net.core.wmem_default=262144

net.core.wmem_max=1048586

centos-7/8.2.2004安装oracle11g全过程

18.使参数生效

sysctl -p

centos-7/8.2.2004安装oracle11g全过程

 19.限制oracle用户的shell权限

vim /etc/security/limits.conf

oracle soft nproc 2047

oracle hard nproc 16384

oracle soft nofile 1024

oracle hard nofile 65536

oracle              soft    stack   10240

oracle              hard    stack   32768



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

centos-7/8.2.2004安装oracle11g全过程

20.创建oracle安装目录 (/db 目录也可直接设置为 oracle:install 看实际情况)

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

21.配置oracle用户环境变量

su - oracle

vim .bash_profile

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 TNS_ADMIN=$ORACLE_HOME/network/admin

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

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"


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

reboot

23.解压oracle压缩文件到 /db

cd /db/

unzip linux.x64_11gR2_database_1of2.zip -d /db

unzip linux.x64_11gR2_database_2of2.zip -d /db

24.解压完成后

mkdir /db/etc/

cp /db/database/response/* /db/etc/

vim /db/etc/db_install.rsp

oracle.install.option=INSTALL_DB_SWONLY

DECLINE_SECURITY_UPDATES=true

UNIX_GROUP_NAME=oinstall

INVENTORY_LOCATION=/db/app/oracle/inventory

SELECTED_LANGUAGES=en,zh_CN

ORACLE_HOSTNAME=centos-oracle

ORACLE_HOME=/db/app/oracle/product/11.2.0

ORACLE_BASE=/db/app/oracle

oracle.install.db.InstallEdition=EE

oracle.install.db.isCustomInstall=true

oracle.install.db.DBA_GROUP=dba

oracle.install.db.OPER_GROUP=dba




 二、开始安装

1.切换到oracle用户

su - oracle

# cd/db/database/然后

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

报错:centos 安装oracle 报Checking swap space: 0 MB available, 150 MB required. Failed <<<<< span="">【备注:若无此错误请忽略,我在华为云服务器挂载磁盘且安装位置设置为/mnt目录,此情景下安装oracle 11g时发送这样的错误,一般情况不会出现此错误】

centos-7/8.2.2004安装oracle11g全过程

  解决办法:

(1)检查 Swap 空间在设置 Swap 文件之前,有必要先检查一下系统里有没有既存的 Swap 文件。运行以下命令:

swapon -s

如果返回的信息概要是空的,则表示 Swap 文件不存在。

(2)检查文件系统在设置 Swap 文件之前,同样有必要检查一下文件系统,看看是否有足够的硬盘空间来设置 Swap 。运行以下命令:

df -hal

(3)创建并允许 Swap 文件下面使用 dd 命令来创建 Swap 文件。检查返回的信息,还剩余足够的硬盘空间即可。

dd if=/dev/zero of=/swapfile bs=1024 count=512k

参数解读:if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >bs=bytes:同时设置读入/输出的块大小为bytes个字节count=blocks:仅拷贝blocks个块,块大小等于bs指定的字节数。

(4)格式化并激活 Swap 文件上面已经创建好 Swap 文件,还需要格式化后才能使用。运行命令:

mkswap /swapfile

激活 Swap ,运行命令:

swapon /swapfile

(5)以上步骤做完,再次运行命令:

swapon -s

(6)你会发现返回的信息概要:

Filename Type Size Used Priority

/swapfile file 524284 0 -1

(7)如果要机器重启的时候自动挂载 Swap ,那么还需要修改 fstab 配置。用 vim 打开 /etc/fstab 文件,在其最后添加如下一行:

vim /etc/fstab

/swapfile swap swap defaults 00

(8)最后,赋予 Swap 文件适当的权限:

chown root:root /swapfile

chmod0600 /swapfile

若无错误继续往下,若解决完以上错误继续执行一下命令:

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

2.安装期间可以使用tail命令监看oracle的安装日志

tail -f /db/app/oracle/inventory/logs/installActions2019-09-03_19-48-29PM.log

 安装完成,提示Successfully Setup Software.

3.根据提示完成配置

centos-7/8.2.2004安装oracle11g全过程

su root

sh /db/app/oracle/inventory/orainstRoot.sh

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


centos-7/8.2.2004安装oracle11g全过程

 4.配置静默监听

centos-7/8.2.2004安装oracle11g全过程

su - oracle

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

注意:若失败可能是由于系统setlinux未设置为disable,设置好后需要重启系统

5.查看监听端口

centos-7/8.2.2004安装oracle11g全过程

netstat -tnulp | grep1521

6.静默创建数据库   TOTALMEMORY 设置为总内存的80%

切换为root用户

su root

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"

7.执行静默建库(切换为oracle用户)

su - oracle

centos-7/8.2.2004安装oracle11g全过程

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

8.查看oracle实例进程

centos-7/8.2.2004安装oracle11g全过程

ps -ef | grep ora_ | grep -v grep

9.查看监听状态

centos-7/8.2.2004安装oracle11g全过程

lsnrctl status

10.切换为oracle用户,登录sqlplus,查看实例状态

su - oracle

sqlplus / as sysdba

select status from v$instance;

注意:此处会报错

centos-7/8.2.2004安装oracle11g全过程

  解决办法:输入命令startup

startup

centos-7/8.2.2004安装oracle11g全过程

若依旧有问题,则ls命令查看  /db/app/oracle/admin/orcl/pfile/下有没有init.ora.*****类似的文件,拷贝覆盖报错的文件

centos-7/8.2.2004安装oracle11g全过程

cp /db/app/oracle/admin/orcl/pfile/init.ora.8420191849 /db/app/oracle/product/11.2.0/dbs/initORCL.ora

再次startup即可成功

再次查询即可正常显示

centos-7/8.2.2004安装oracle11g全过程

 (1)查看数据库编码

select userenv('language') from dual;

(2)查看数据库版本信息

select * from v$version;

(3)激活scott用户

alter user scott account unlock; //若遇到su - oracle下无法解锁该接工具通system户进行解里不影响

alter user scott identified by tiger; //若遇到su - oracle下无法修改密接工具通system户进行修改,里不影响

select username from all_users;

11.Navicat远程连接Oracle

(1)开放1521端口

firewall-cmd --zone=public --add-port=1521/tcp --permanent

firewall-cmd --reload

(2)官方网站http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

下载 instantclient-basic,解压压缩文件

centos-7/8.2.2004安装oracle11g全过程

 (3)下载Navicat:http://pan.baidu.com/s/1c2GP9U4

 打开Navicat,工具→选项

centos-7/8.2.2004安装oracle11g全过程

② 打开OCI界面,在右侧OCI library一栏中选择instantclient-basic解压目录下的oci.dll,然后点击确定。

centos-7/8.2.2004安装oracle11g全过程

该文件可以不用本地安装oracle即可远程连接,若本地安装过oracle也可使用本地dll文件,如我本地的为:D:softwareworkSoftdatabaseSoftOracleSoftproduct11.2.0dbhome_1inoci.dll

③ 重启Navicat,点击连接,选中Oracle

 centos-7/8.2.2004安装oracle11g全过程

centos-7/8.2.2004安装oracle11g全过程

select instance_name from v$instance;

⑤ 用户名使用刚激活的scott,密码为tiger,填完以上信息后点击连接测试

centos-7/8.2.2004安装oracle11g全过程

到此Navicat远程连接Oracle数据库成功

12.设置Oracle开机启动

#可能出问题oracle ORA-12547: TNS:lost contact,故此提前置好

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

chmod6751 oracle

centos-7/8.2.2004安装oracle11g全过程

vi /db/app/oracle/product/11.2.0/bin/dbstart

# 查找并设置值

ORACLE_HOME_LISTNER=$ORACLE_HOME

vi /db/app/oracle/product/11.2.0/bin/dbshut

# 查找并设置值

ORACLE_HOME_LISTNER=$ORACLE_HOME

vi /etc/oratab

# 认为N,将NY

orcl:/db/app/oracle/product/11.2.0:Y

centos-7/8.2.2004安装oracle11g全过程

vi /etc/rc.d/init.d/oracle //没有文件

(1)注意:默认没有该文件,复制以下内容到打开的白板界面


#! /bin/bash

# oracle: Start/Stop Oracle Database 11g R2

#

# chkconfig: 3459010

# description: The Oracle Database is an Object-Relational Database Management System.

#

# processname: oracle

. /etc/rc.d/init.d/functions

LOCKFILE=/var/lock/subsys/oracle

ORACLE_HOME=/db/app/oracle/product/11.2.0

ORACLE_USER=oracle

case"$1"in

'start')

if [ -f $LOCKFILE ]; then

echo $0 already running.

exit 1

fi

echo -n $"Starting Oracle Database:"

su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"

su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"

su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"

touch $LOCKFILE

;;

'stop')

if [ ! -f $LOCKFILE ]; then

echo $0 already stopping.

exit 1

fi

echo -n $"Stopping Oracle Database:"

su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"

su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"

su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"

rm -f $LOCKFILE

;;

'restart')

$0 stop

$0 start

;;

'status')

if [ -f $LOCKFILE ]; then

echo $0 started.

else

echo $0 stopped.

fi

;;

*)

echo"Usage: $0 [start|stop|status]"

exit 1

esac

exit 0




(2)授权

chmod750 /etc/rc.d/init.d/oracle

(3)检查一下脚本能否正确执行 

cd /etc/rc.d/init.d

./oracle start

./oracle stop

(4)加入自动启动行列,执行如下命令: 

ln -s /etc/rc.d/init.d/oracle /etc/rc2.d/S61oracle

ln -s /etc/rc.d/init.d/oracle /etc/rc3.d/S61oracle

ln -s /etc/rc.d/init.d/oracle /etc/rc4.d/S61oracle

ln -s /etc/rc.d/init.d/oracle /etc/rc0.d/K61oracle

ln -s /etc/rc.d/init.d/oracle /etc/rc6.d/K61oracle

chkconfig --level 234 oracle on

chkconfig --add oracle

注意:最后一行命令需要oracle服务状态停止时执行有效(./oracle stop)

重启后即可正常 

 

三、重启若出现 no listener情况,且startup无效

centos-7/8.2.2004安装oracle11g全过程

Solution:

1. Check if you have correct ORACLE_HOME, ORACLE_SID and PATH environments.

2. Check if /tmp/.oracle and /var/tmp/.oracle directories exists.

3. Check permissions for those directories for current user who is trying to start listener.

mkdir /var/tmp/.oracle

mkdir /tmp/.oracle

chown -R oracle:oinstall /var/tmp/.oracle /tmp/.oracle

chmod -R 01777 /var/tmp/.oracle /tmp/.oracle

4. Run the listener, problem solved:

lsnrctl start

5. If you still cant start listener grant 777 permissions to oracle on /tmp directory.

chmod -R 777 /tmp /var/tmp

6. ***重要:***若提示root用户都无权限在/var/tmp 和 /tmp下创建.oracle,则使用chattr命令移除/var/tmp 和 /tmp 目录的i属性,重新创建即可

chattr -i /var/tmp //去除i属性

 四、执行lsnrctl start后若出现以下情况

centos-7/8.2.2004安装oracle11g全过程

解决方法:

在/db/app/oracle/product/11.2.0/network/admin/listener.ora里面添加一行

centos-7/8.2.2004安装oracle11g全过程

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = orcl)

(SID_NAME = orcl)

)

)

注:里面的orcl根据你安装的数据库实例名确定,我用此法解决了这个报错。

五、后续问题解决

1.意外断电或意外中断服务器导致oracle不能正常连接问题及解决:

问题1:ORA-01081: cannot start already-running ORACLE - shut it down first

解决1:

shutdown immediate

startup mount

问题2:ORA-01102: cannot mount database in EXCLUSIVE mode(重点解决)

centos-7/8.2.2004安装oracle11g全过程

 

2.分析原因:

2.1在HA系统中,已经有其他节点启动了实例,将双机共享的资源(如磁盘阵列上的裸设备)占用了;

2.2说明Oracle被异常关闭时,有资源没有被释放,一般有以下几种可能,

2.2.1Oracle的共享内存段或信号量没有被释放;

2.2.2Oracle的后台进程(如SMON、PMON、DBWn等)没有被关闭;

2.2.3用于锁内存的文件lk 和sgadef .dbf文件没有被删除。

3.具体解决办法:

(1)查$ORACLE_HOME/dbs目录:

cd $ORACLE_HOME/dbs

ls lk*

lkORCL

果然,lk 文件没有被删除。将它删除掉

rm lk*

(2)再次启动startup mount时又遇到下面的错误,不过别担心,继续后面的操作就搞定

centos-7/8.2.2004安装oracle11g全过程

 

(3)查看共享内存段

ipcs -map

根据ID号清除共享内存段

ipcrm –m 1409040

我这里操作是没有成功的,不过执行了下面的操作就ok了!

(4)查看信号量

ipcs -s

清除oracle的信号量

ipcrm -s 360448

再次查询确认

ipcs -s

------ Semaphore Arrays --------

key  semid  owner  perms   nsems

再查询共享内存段也ok了!

ipcs -m

(5)如果是Oracle进程没有关闭,

kill -9

(6)执行上面5个步骤即可成功解决该错误!


安装过程中可能出现的错误-参考下一篇 可能所需文件如下

链接: https://pan.baidu.com/s/1X97Ii2zGfRPanmH7NZrDww 提取码: 1fny 




以上是关于centos-7/8.2.2004安装oracle11g全过程的主要内容,如果未能解决你的问题,请参考以下文章

oracle 安装

linux 怎么查找oracle11g的安装目录

linux怎样找到安装oracle安装目录

ubuntu 16.04怎么安装oracle11g

自己安装了oracle怎么使用

oracle 安装必须依靠网络吗