前言
- 吃的最大的亏是未考虑linux系统和oracle软件的兼容性
- 重要:Oracle Linux 7是生产版本,但是仅从Oracle Database 11g(11.2.0.4)起才支持Oracle数据库。当使用11.2.0.4之前的数据库版本时,此安装不应用于实际系统。
- 11gR2未在Linux 7上获得认证/支持
资料参考:
- CentOS7.4下安装Oracle 11gR2
- 记一次oracle安装错误:INFO: //usr/lib64/libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14’
安装环境:
- CentOS Linux release 7.6.1810 (Core)
- 磁盘40G,内存3G
- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
一、下载oracle
- Oracle11.2.0.4 64位for linux7 百度网盘提取码: nsej
- 官方下载地址,需要登陆Oracle账号,且经过测试,下载速度几乎为0;不考虑该方案
- PL/SQL Developer 14安装
二、关闭安全措施
1、开放端口
- oracle默认是1521端口,如果你修改为其它的端口了,这里就要开放对应的端口
#放开1521端口
firewall-cmd --zone=public --add-port=1521/tcp --permanent
#在不改变状态的条件下重新加载防火墙配置文件
firewall-cmd --reload
其他常用命令:
查看防火墙的状态:systemctl status firewalld
启动防火墙服务:systemctl start firewalld
禁用防火墙:systemctl disable firewalld
重载配置文件:firewall-cmd --reload
查看已经开放的端口:firewall-cmd --list-ports
- 未采用该方案–关闭防火墙:systemctl stop firewalld(由于是测试环境,为了方便,可以将防火墙关闭。但是,在正式的生产环境,千万不要这样做。)
2、关闭selinux(需重启生效)
selinux提供了很多Linux的系统安全措施,演示系统中,将其关闭,方便操作。需要注意的是,在正式生产环境下,千万不要这样做。
#执行命令getenforce(或者sestatus -v)查看selinux的状态,初始安装的CentOS7是打开状态(Disabled是我已设置过的,并不是初始值)。
[root@ylm-100 oracle]# getenforce
Disabled
#将SELINUX=enforcing修改为SELINUX=disabled
[root@ylm-100 oracle]# vim /etc/selinux/config
#修改了之后需要重启服务器,selinux才能生效(这一步非常重要),重启后可以通过getenforce(或者sestatus -v)命令来查看,值一定要disabled才行。
[root@ylm-100 oracle]# getenforce
Disabled
- 文件如下
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
三、创建运行oracle数据库的用户和用户组
- root用户下执行
#创建用户组oinstall
[root@ylm-100 oracle]# groupadd oinstall
#创建用户组dba
[root@ylm-100 oracle]# groupadd dba
#创建oracle用户,并加入到oinstall和dba用户组
#-g<群组> 指定用户所属的群组。
#-G<群组> 指定用户所属的附加群组。
#-m 自动建立用户的登入目录。
[root@ylm-100 oracle]# useradd -g oinstall -G dba -m oracle
#设置用户oracle的登陆密码,不设置密码,在CentOS的图形登陆界面没法登陆
[root@ylm-100 oracle]# passwd oracle
更改用户 oracle 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
## 查看新建的oracle用户
[root@ylm-100 oracle]# id oracle
uid=1001(oracle) gid=1001(oinstall) 组=1001(oinstall),1002(dba)
[root@ylm-100 oracle]#
资料参考:在linux上安装oracle时先要创建两个组再创建一个用户的意义
四、修改oracle用户限制
[root@ylm-100 oracle]# vim /etc/security/limits.conf
#第17行开始新增4行配置
#文件如下
#with a user specific setting in the subdirectory.
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
#
#Where:
#<domain> can be:
- 要使limits.conf文件配置生效,必须要确保pam_limits.so文件被加入到启动文件中。
[root@ylm-100 oracle]# vim /etc/pam.d/login
#第18行新增配置
session required pam_limits.so
- 编辑 /etc/profile ,输入命令:vim /etc/profile,按i键进入编辑模式,将下列内容加入该文件
[root@ylm-100 oracle]# vim /etc/profile
#添加到# Path manipulation上面空行,可输入/加内容搜索位置;位置随意
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
资料参考:理解RHEL上安装oracle的配置参数 :/etc/security/limits.conf, /etc/profile, /etc/pam.d/login
五、调整内核参数
[root@ylm-100 oracle]# vim /etc/sysctl.conf
#文件内仅保留以下配置即可
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
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
#使 /etc/sysctl.conf 更改立即生效,输入sysctl -p(-p:从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载)
[root@ylm-100 oracle]# sysctl -p
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
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
六、创建数据库软件目录和数据文件存放目录(目录的位置,根据自己的情况来定),并改变相应的权限
mkdir -p /opt/oracle/product #创建oracle安装目录
mkdir -p /opt/oracle/oradata #创建oracle数据文件存放目录
mkdir -p /opt/oracle/oraInventory #创建oracle数据库清单目录
chown -R oracle:oinstall /opt/oracle #设置oracle用户为目录的所有者
chmod -R 775 /opt/oracle/ #修改权限
七、配置oracle用户的环境变量
- 切换到新创建的oracle用户下:su oracle
- 输入命令:vim /opt/oracle/.bash_profile
- 按i进入编辑模式,粘贴以下内容
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
#不加下面的3行,我安装的时候界面都是乱码
export NLS_LANG=AMERICAN_AMERICA.UTF8
export LANG=en_US.UTF8
export LC_ALL=C
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
export PATH
- 使配置生效
[oracle@ylm-100 ~]$ source /opt/oracle/.bash_profile
八、安装Oracle
- 使用MobaXterm将oracle安装文件上传到机器上,放到/home/oracle目录下
-rw-r--r-- 1 oracle oinstall 1395582860 7月 15 12:20 p13390677_112040_Linux-x86-64_1of7.zip
-rw-r--r-- 1 oracle oinstall 1151304589 7月 15 12:28 p13390677_112040_Linux-x86-64_2of7.zip
-rw-r--r-- 1 oracle oinstall 1205251894 7月 15 12:29 p13390677_112040_Linux-x86-64_3of7.zip
-rw-r--r-- 1 oracle oinstall 656026876 7月 15 12:29 p13390677_112040_Linux-x86-64_4of7.zip
-rw-r--r-- 1 oracle oinstall 599170344 7月 15 12:30 p13390677_112040_Linux-x86-64_5of7.zip
-rw-r--r-- 1 oracle oinstall 488372844 7月 15 12:31 p13390677_112040_Linux-x86-64_6of7.zip
-rw-r--r-- 1 oracle oinstall 119521122 7月 15 12:31 p13390677_112040_Linux-x86-64_7of7.zip
- 使用unzip命令解压oracle安装文件;自己玩可能不用解压全部的文件,可深究
unzip p13390677_112040_Linux-x86-64_1of7.zip
unzip p13390677_112040_Linux-x86-64_2of7.zip
unzip p13390677_112040_Linux-x86-64_3of7.zip
unzip p13390677_112040_Linux-x86-64_4of7.zip
unzip p13390677_112040_Linux-x86-64_5of7.zip
unzip p13390677_112040_Linux-x86-64_6of7.zip
unzip p13390677_112040_Linux-x86-64_7of7.zip
- 全部解压完之后文件如下
[oracle@ylm-100 ~]$ ll
总用量 5483636
drwxr-xr-x 5 oracle oinstall 109 8月 27 2013 client
drwxr-xr-x 7 oracle oinstall 136 8月 27 2013 database
drwxr-xr-x 20 oracle oinstall 4096 8月 27 2013 deinstall
drwxr-xr-x 5 oracle oinstall 109 8月 27 2013 examples
drwxr-xr-x 6 oracle oinstall 123 8月 27 2013 gateways
drwxr-xr-x 7 oracle oinstall 156 8月 27 2013 grid
4.执行安装,进入database目录输入命令./runInstaller
[oracle@ylm-100 ~]$ cd database/
[oracle@ylm-100 database]$ pwd
/home/oracle/database
[oracle@ylm-100 database]$ ./runInstaller
安装Oracle请参考
九、配置监听(若存在默认配置,此步骤可以省略,可检查监听)
- 先检查监听
- 若不存在,尝试启动监听
- 查看监听状态;若状态ok,可不配置监听
#会看到启动成功的界面;
lsnrctl start
#停止监听器命令.
lsnrctl stop
#查看监听器命令.
lsnrctl status
资料参考:oracle 监听启动、停止、查看命令
#查找listener.ora文件,并查看
#当时安装完之后admin目录下并没有该文件,仅samples目录下生成
#所以就执行了配置监听操作
#完了之后LISTENER2(1522)并没有写入samples目下的listener.ora文件,而是写入了admin目录下的listener.ora文件
#且启动监听后仅启动了1521端口,没有启动1522端口;
#经验证,listener.ora和tnsnames.ora文件仅admin目录下生效;与samples目录下文件内容无关,可删除
[root@ylm-100 oracle]# find / -name listener.ora
#以下是全部流程走完的结果
/opt/oracle/product/11.2.0/dbhome_1/network/admin/samples/listener.ora
/opt/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
- plsql可连接的配置参考1521、1522端口
[oracle@ylm-100 admin]$ cat listener.ora
# listener.ora Network Configuration File: /opt/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
#LISTENER2 =
# (DESCRIPTION_LIST =
# (DESCRIPTION =
# (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.92.100)(PORT = 1522))
# (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1522))
# )
# )
#
#ADR_BASE_LISTENER2 = /opt/oracle
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /opt/oracle/product/11.2.0/dbhome_1)
(SID_NAME = orcl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.92.100)(PORT = 1521))
#(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.92.100)(PORT = 1522))
)
)
ADR_BASE_LISTENER = /opt/oracle
[oracle@ylm-100 admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /opt/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
LISTENER_ORCL =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.92.100)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.92.100)(PORT = 1522))
)
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.92.100)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.92.100)(PORT = 1522))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
[oracle@ylm-100 admin]$
配置监听请参考
十、创建Oracle数据实例
- 注意:必须先创建监听,并且监听是启动中,否则报错。
创建Oracle数据实例请参考
十一、数据库创建完毕后,sqlplus连接测试是否创建成功
[oracle@ylm-100 samples]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Wed Jul 15 15:40:16 2020
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select * from dual;
DUM
---
X
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
PL/SQL Release 11.2.0.4.0 - Production
CORE 11.2.0.4.0 Production
TNS for Linux: Version 11.2.0.4.0 - Production
NLSRTL Version 11.2.0.4.0 - Production
SQL>