欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

安装Oracle 11g for Linux教程

程序员文章站 2022-06-17 21:57:50
linux安装Oracle11G 本教程使用的环境是: 1H2C2G Centos7 64位 检查硬件环境 内存要求 1GB(最好是2GB),交换内存大于物理内存的1.5倍,硬盘空间大于16GB。 下面是通过root用户操作 如果交换内存比较小,我们文件作为swap分区来增加swap大小 修改下各种 ......

linux安装oracle11g

本教程使用的环境是:

1h2c2g

centos7 64位

检查硬件环境

内存要求>1gb(最好是2gb),交换内存大于物理内存的1.5倍,硬盘空间大于16gb。

下面是通过root用户操作

#查看当前的内存的使用,这个命令比较直观
free -m

如果交换内存比较小,我们文件作为swap分区来增加swap大小

#创建存放充当swap分区文件的目录
mkdir /swap
#创建充当swap分区的文件,文件大小就是要增加的swap大小,of是文件位置,这里我们增加2g内存=2048*1m
dd if=/dev/zero of=/swap/swapfile bs=1m count=2048
#格式化交换分区文件
mkswap /swap/swapfile
#给分区文件设置下权限:0600
chmod 0600 /swap/swapfile
{
#启动交换分区文件
swapon /swap/swapfile
#如果提示设备或资源忙,先执行
swapoff /swap/swapfile
}
#然后设置开机自启,编辑/etc/fstab追加:
/swap/swapfile swap swap defaults 0 0

修改下各种配置文件,也就是软件环境

修改主机名,这个应该是规范化

hostnamectl set-hostname oracledb
echo "127.0.0.1     oracledb" >>/etc/hosts

关闭selinux

sed -i "s/selinux=enforcing/selinux=disabled/" /etc/selinux/config
#这个是使修改立即生效
setenforce 0

0、下载orcle11g

官方网站:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/
根据自己的服务器,下载相应的软件,我的系统是64位的,所以下载的是 linux x86-64的,下载完的两个文件如下

  • linux.x64_11gr2_database_1of2.zip
  • linux.x64_11gr2_database_2of2.zip

然后用sftp工具上传到服务器

更换yum源,可以跳过

更换为阿里云的yum源,使yum命令下载软件更快

cd /etc
mv yum.repos.d yum.repos.d.bak
mkdir yum.repos.d
wget -o /etc/yum.repos.d/centos-base.repo http://mirrors.aliyun.com/repo/centos-7.repo
#清除缓存
yum clean all
#更新缓存
yum makecache

安装oracle依赖库

不想这样的话,可以检查下哪个没装

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

最后再检查下

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

通过yum install pdksh -y 安装缺少 package ,这个库yum源中没有,需要自己下载;

通过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
cd /tmp
#安装
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm

注意:**

安装oracle时,可能会提示某些依赖库没有安装(而实际上你安装了),这个是因为oracle需要32位的软件,而你安装了64位。不过不要紧,我们可以忽略掉,这个不影响什么。

centos7中pdksh库就是ksh库,这个也可以忽略。

添加oracle用户组和用户

如果要安装oracle数据库,则需要以下本地操作系统组和用户:

  • oracle inventory组(通常为 oinstall)
  • osdba组 (通常为 dba)
  • osoper组 (通常为 oper)
  • oracle软件所有者(通常为 oracle)
groupadd oinstall
groupadd dba
useradd -g oinstall -g dba oracle -d /home/oracle
#验证是否成功
id oracle
#给oracle用户设置密码
passwd oracle

修改内核参数

vi /etc/sysctl.conf
## 追加如下内容:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmni = 4096
# kernel.shmmax 参数设置为物理内存的一半
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

限制oracle用户的shell权限

[root@localhost ~]# vi /etc/security/limits.conf
oracle soft nproc 2047 
oracle hard nproc 16384 
oracle soft nofile 1024 
oracle hard nofile 65536 
oracle soft stack 10240 

修改用户验证选项

[root@localhost ~]# vi /etc/pam.d/login
session  required   /lib64/security/pam_limits.so
session  required   pam_limits.so

修改/etc/profile文件

[root@localhost ~]# vi /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

让修改立即生效

[root@localhost ~]# source /etc/profile

开始安装

创建安装目录和设置文件权限

[root@myyun software]# mkdir -p /opt/oracle/product/11.2.0

[root@myyun software]# mkdir /opt/oracle/oradata

[root@myyun software]# mkdir /opt/oracle/orainventory

[root@myyun software]# mkdir /opt/oracle/fast_recovery_area

[root@myyun software]# chown -r oracle:oinstall /opt/oracle

[root@myyun software]# chmod -r 775 /opt/oracle

解压安装包

[root@myyun install]# unzip linux.x64_11gr2_database_1of2.zip

[root@myyun install]# unzip linux.x64_11gr2_database_2of2.zip

将解压后的文件夹直接移动到/software目录下:

mkdir /software

[root@myyun install]# mv database/ /software/

[root@myyun install]# cd /software

[root@myyun install]# ll

复制应答文件到用户目录

cp -r /software/database/response /home/oracle
db_install.rsp:安装应答

dbca.rsp:创建数据库应答

netca.rsp:建立监听、本地服务名等网络设置的应答

参考文档:https://blog.csdn.net/java3344520/article/details/8063785

此步跳过!创建 vi /etc/orainst.loc

inventory_loc=/opt/oracle/orainventory

inst_group=oinstall

并授权

chown oracle:oinstall /etc/orainst.loc

chmod 664 /etc/orainst.loc

执行了这一步,等会静默安装时,没有orainstroot.sh了。

设置oracle用户环境变量

首先切换到oracle用户下:

[root@myyun software]# su -l oracle

[oracle@myyun ~]$ vim .bash_profile

在末尾添加如下内容:

oracle_base=/opt/oracle
oracle_home=$oracle_base/product/11.2.0
oracle_sid=orcl
path=$path:$oracle_home/bin
export oracle_base oracle_home oracle_sid path

注意,标红处必须与创建的数据库实例名称一致,否则数据库启动后无法访问。第一次配置完记得source一下。

[oracle@myyun ~]$ source .bash_profile

编辑静默安装响应文件

[oracle@myyun ~]$ cd response/

[oracle@myyun response]$ vim db_install.rsp

需要修改的选项如下:

oracle.install.option=install_db_swonly

oracle_hostname=oracledb

unix_group_name=oinstall

inventory_location=/opt/oracle/orainventory

selected_languages=en,zh_cn

oracle_home=/opt/oracle/product/11.2.0

oracle_base=/opt/oracle

oracle.install.db.installedition=ee

oracle.install.db.dba_group=dba

oracle.install.db.oper_group=dba

decline_security_updates=true
各参数含义如下:

-silent 表示以静默方式安装,不会有任何提示

-force 允许安装到一个非空目录

-noconfig 表示不运行配置助手netca

-responsefile 表示使用哪个响应文件,必需使用绝对路径

oracle.install.responsefileversion 响应文件模板的版本,该参数不要更改

oracle.install.option 安装选项,本例只安装oracle软件,该参数不要更改

decline_security_updates 是否需要在线安全更新,设置为false,该参数不要更改

oracle_hostname 安装主机名

unix_group_name oracle用户用于安装软件的组名

inventory_location oracle产品清单目录

selected_languages oracle运行语言环境,一般包括引文和简繁体中文

oracle_home oracle安装目录

oracle_base oracle基础目录

oracle.install.db.installedition 安装版本类型,一般是企业版

oracle.install.db.iscustominstall 是否定制安装,默认partitioning,olap,rat都选上了

oracle.install.db.customcomponents 定制安装组件列表:除了以上默认的,可加上label security和database vault

oracle.install.db.dba_group oracle用户用于授予osdba权限的组名

oracle.install.db.oper_group oracle用户用于授予osoper权限的组名

根据响应文件静默安装oracle11g

[oracle@myyun response]$ cd /software/database/

[oracle@myyun database]$ ./runinstaller -silent -responsefile /home/oracle/response/db_install.rsp -ignoreprereq

执行成功:

[oracle@oracledb database]$ ./runinstaller -silent -responsefile /home/oracle/response/db_install.rsp -ignoreprereq
正在启动 oracle universal installer...

检查临时空间: 必须大于 120 mb。   实际为 36560 mb    通过
检查交换空间: 必须大于 150 mb。   实际为 4088 mb    通过
准备从以下地址启动 oracle universal installer /tmp/orainstall2020-03-04_09-00-29am. 请稍候...[oracle@oracledb database]$ 可以在以下位置找到本次安装会话的日志:
 /opt/oracle/orainventory/logs/installactions2020-03-04_09-00-29am.log
以下配置脚本需要以 "root" 用户的身份执行。
 #!/bin/sh 
 #要运行的 root 脚本

/opt/oracle/product/11.2.0/root.sh
要执行配置脚本, 请执行以下操作:
     1. 打开一个终端窗口
     2. 以 "root" 身份登录
     3. 运行脚本
     4. 返回此窗口并按 "enter" 键继续

successfully setup software.

如果安装失败,可以查看日志文件,里面会列出原因。

orainstroot.sh:
设置产品目录位置与拥有该目录的操作系统组,并产生/etc/orainst.loc。

如果配置过/etc/orainst.loc,就没有这个脚本了

root.sh:
用来设置必要的操作系统权限,并将orahome,oraenv,coraenv复制到/usr/local/bin目录下。生成/etc/oratab,其中存放一些数据库相关信息。

执行这两个脚本

可以在以下位置找到本次安装会话的日志:/data/oracle/inventory/logs/installactions2018-05-13_02-14-55pm.log

按照要求执行脚本。

打开终端,退出到root身份登录,执行脚本:

[oracle@iz2f570bi1k56uz database]$ exit

logout

[root@iz2f570bi1k56uz software]# sh /data/oracle/inventory/orainstroot.sh

changing permissions of /data/oracle/inventory.

adding read,write permissions for group.

removing read,write,execute permissions for world.

changing groupname of /data/oracle/inventory to oinstall.

the execution of the script is complete.

[root@iz2f570bi1k56uz software]# sh /data/oracle/product/11.2.0/root.sh

check /data/oracle/product/11.2.0/install/root_iz2f570bi1k56uz_2018-05-13_14-25-04.log for the output of root script

以静默方式配置监听

重新使用oracle用户登录

[root@myyun software]# su -l oracle

last login: sun may 13 14:09:10 cst 2018 on pts/3

[oracle@myyun ~]$ netca /silent /responsefile /home/oracle/response/netca.rsp

安装Oracle 11g for Linux教程

注意此处,必须使用/silent /responsefile格式,而不是-silent -responsefile,因为是静默安装。

成功运行后,在/opt/oracle/product/11.2.0/network/admin中生成listener.ora和sqlnet.ora

通过netstat命令可以查看1521端口正在监听。

yum安装netstat软件,软件包是在net-tools中。

[root@myyun /]# yum install net-tools

[root@myyun /]# yum install net-tools

安装Oracle 11g for Linux教程

以静默方式建立新库,同时也建立一个对应的实例

[oracle@myyun ~]$ vim /home/oracle/response/dbca.rsp

修改文件中以下参数:

安装Oracle 11g for Linux教程

[general]

# oracle版本,不能更改
responsefile_version = "11.2.0"

# description   : type of operation
operation_type = "createdatabase"

[createdatabase]

# description   : global database name of the database
# 全局数据库的名字=sid+主机域名
# 第三方工具链接数据库的时候使用的service名称
gdbname = "orcl.oracledb"

# description   : system identifier (sid) of the database
# 对应的实例名字
sid = "orcl"

# description   : name of the template
# 建库用的模板文件
templatename = "general_purpose.dbc"

# description   : password for sys user
# sys, 数据库管理帐户
syspassword = "123456"

# description   : password for system user
# system, 数据库管理帐户
systempassword = "123456"

# description   : password for sysman user
# sysman,企业管理器帐户
sysmanpassword = "123456"

# description   : password for dbsnmp user
# dbsnmp,目录集成平台用户
dbsnmppassword = "123456"

# description   : location of the data file's
# 数据文件存放目录
datafiledestination =/opt/oracle/oradata

# description   : location of the data file's
# 恢复数据存放目录
recoveryareadestination=/opt/oracle/fast_recovery_area

# description   : character set of the database
# 字符集,重要!!! 建库后一般不能更改,所以建库前要确定清楚。
# (characterset = "al32utf8" nationalcharacterset= "utf8")
characterset = "al32utf8"

# description   : total memory in mb to allocate to oracle
# oracle内存1638mb,物理内存2g*80%
totalmemory = "1638" 

安装Oracle 11g for Linux教程

进行静默配置:

[oracle@myyun ~]$ dbca -silent -responsefile /home/oracle/response/dbca.rsp

安装Oracle 11g for Linux教程

建库后进行实例进程检查:

[oracle@myyun ~]$ ps -ef | grep ora_ | grep -v grep

安装Oracle 11g for Linux教程

查看监听状态:

[oracle@myyun ~]$ lsnrctl status

安装Oracle 11g for Linux教程

数据库创建完成。

有关详细信息, 请查看以下位置的日志文件: /data/oracle/cfgtoollogs/dbca/orcl/orcl.log。

数据库信息:

全局数据库名:orcl.oracledb

系统标识符 (sid):orcl

登录查看实例状态:

[oracle@myyun ~]$ sqlplus / as sysdba

sql> select status from v$instance;

安装Oracle 11g for Linux教程

【】

如果报错:【ora-12162: tns:net service name is incorrectly specified】

错误原因:【这个错误是因为oracle_sid变量没有传进去造成的。】

解决方法:

1.查看当前oracle_sid

[oracle@iz2f570bi1k56uz ~]$ echo $oracle_sid

orcl

2.修改oracle_sid和/home/oracle/response/dbca.rsp中的一样

[oracle@iz2f570bi1k56uz ~]$ export oracle_sid=orcl

3.如果遇到ora-12162: tns:net service name is incorrectly specified.错误

参考文章:【ora-12162: tns:net service name is incorrectly specified.

4.如果依然不能登陆,尝试修改orcle文件夹的权限

【如果本地连接时,出现监听错误,参考linux中安装oracle11g后出现监听的问题及解决办法

命令行模式静默删除

1、首先查看dbca的帮助信息

dbca -help

修改/home/oracle/response/dbca.rsp文件里以下几个参数,下面三个参数根据建库实际情况进行修改:

operation_type = "deletedatabase"

sourcedb = "orcl"

sysdbausername = "sys"

sysdbapassword = "123456"

然后运行:

dbca -silent -responsefile /home/oracle/response/dbca.rsp

各参数含义如下:

-silent 表示以静默方式删除

-responsefile 表示使用哪个响应文件,必需使用绝对路径

responsefile_version 响应文件模板的版本,该参数不要更改

operation_type 安装类型,该参数不要更改

sourcedb 数据库名,不是全局数据库名,即不包含db_domain

很简单数据库卸载完成了,请注意,只是数据库卸载完了,数据库软件还是在的。

2、使用dbca卸载数据库

dbca -silent -delete database -responsefile dbca.rsp

a.选项-silent表示静默安装,免安装交互,大部分安装信息也不输出

b.选项-responsefile指定应答文件,要求用绝对路径

一些常用命令

进入到数据库后执行,查询数据库服务的名称

select global_name from global_name:

启动监听

lsnrctl start

关闭监听

lsnrctl stop

查看监听状态

lsnrctl status

进入到数据库执行,关闭数据库

shutdown

进入到数据库执行,打开数据库

startup

设置开机自启

su - oracle
将下面两个文件的oracle_home_listner=$1修改为oracle_home_listner=$oracle_home

vim /opt/oracle/product/11.2.0/bin/dbstart
vim /opt/oracle/product/11.2.0/bin/dbshut

#修改配置
vim /etc/oratab

orcl:/opt/oracle/product/11.2.0:x改为orcl:/opt/oracle/product/11.2.0:y

#修改rc.local文件
chmod 755 /etc/rc.d/rc.local
vim /etc/rc.d/rc.local
#在rc.local中添加:
su oracle -lc "/opt/oracle/product/11.2.0/bin/lsnrctl start"
su oracle -lc /opt/oracle/product/11.2.0/bin/dbstart

参考文档:

https://juejin.im/post/5ca20514e51d4533e324a17f

https://www.jianshu.com/p/b4200e721bfd

https://blog.51cto.com/canonind/1883066

centos7放行 oracle:

https://blog.csdn.net/fw19940314/article/details/80182762