Centos7.5 安装oracle database 11g
1.说明
最近项目经常接触到oracle database11g,做个记录
时间点:2018年7月
环境和版本
centos 7.5(图形界面,如果你用的是字符界面系统,我暂时还没有研究过)
oracle database linux 11g
2.系统准备
linux的oracle安装和windows有个最大的不同,就是你必须用oracle用户来操作,这在前期设定上必须要注意的
同时要对各类配置文件增加一些配置项
2.1 修改配置文件/etc/security/limits.conf
cat <>/etc/security/limits.conf
proc 2047
oracle hard nofile 65536
oracle hard nproc 16384
oracle soft nofile 1024
EOF
2.2 修改/etc/sysctl.conf
cat <>/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 = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
EOF
2.3 创建oinstall和dba组,和oracle用户
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba -m oracle
passwd oracle
2.4 修改oracle用户的相关变量和创建一些必要的目录
# 以下javahome目录根据实机java目录更正,要su到oracle用户执行,避免你还要修改权限
su - oracle
vi ~/.bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export PATH=.:$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export JAVA_HOME=/opt/jdk1.7.0_80/
export PATH=$PATH:$JAVA_HOME/jre/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPAT
# :wq保存完以后,立即载入
source ~/.bash_profile
# 退出oracle用户
exit
3.开始安装
3.1 安装包和图形设置
解压安装包和安装
安装包一般下载下来有两个,分别解压以后合并
# 在安装之前还有一些设置,以root用户操作
chmod -R 755 <压缩包解压目录>/database
chown -R oracle:oinstall <压缩包解压目录>
# 以下是图形显示许可,通过该命令让oracle用户可以执行图形程序
xhost +
# 然后切换到oracle用户
su - oracle
# display设置和语言设置,设置成英文是为了不乱码
export DISPLAY=:0.0
export LANG=en_US
# 开始安装
cd <压缩包目录>/database
./runInstaller
3.2 图形安装相关
3.2.1 跳过验证相关
3.2.2 选择安装类型
本教程为了之后配置详细,所以安装选项里选的是只安装数据库软件,数据配置在后面配置。
3.2.3 选择需要的语言包(国内项目别忘了中文勾上)
3.2.4 选择要安装的位置
这一项要注意了,如果你事前没有创建好相应的目录,请切另一个终端用root创建目录,然后还要把权限改成oracle:oinstall,不然就会出现以下报错。
打开一个终端,用root用户创建以上两个目录,然后权限改成oracle:oinstall
mkdir -p /u01/app/oracle
mkdir -p /app/oracle/product/11.2.0/dbhome_1
chown -R oracle:oinstall /u01/app/oracle
chown -R oracle:oinstall /u01/app/oracle/product/11.2.0/dbhome_1
3.2.5 额外选项
以下是一些优化项和额外功能需要的依赖,如果你不能提供这些功能(rpm相关依赖),那就请忽略,选右上角的Ignore All
3.2.6 初始化脚本
安装完以后会提示你要运行一个初始化脚本,该脚本必须是root用户运行。你可以运行也可以不运行,是一些系统方面的相关配置,例如创建oracle开机启动的/etc/oratab文件
4.配置和创建数据库实例
oracle方面,实例对应的是Mysql的数据库。
用oracle用户,如果你之前配好了环境变量,那dbca应该可以运行。
运行前最好运行以下两个命令
export DISPLAY=:0.0
export LANG=en_US
4.1创建数据库类型
这边只是测试用,所以选择第一个就可以了,如果项目有明确规定,根据项目来
4.2 实例名
实例名就是你的数据库名,也是你连接你的数据库用到的名字,所以该参数请根据要求填写。我这里是测试用的,用的默认名orcl
[图片上传失败...(image-b5c2ec-1532875421244)]
4.3 管理选项
这里要注意的是,不开启oracle监听是无法下一步的,请打开一个终端,用oracle用户执行以下命令打开监听程序
lsnrctl start
4.4 用户密码
你可以分别为每个默认用户设定一个密码,也可以用统一一个密码。
4.5 数据库文件存放位置
该选项如果在正式的生产环境里,一般都是要挂盘的,根据挂盘位置更改,我这里测试就默认了。
4.6 模板和脚本
该选项给你选择是否用示例模板或着自定义脚本来定制你的数据库。
4.7 参数设定
一些相关参数的选择,我这里只是定义了字符集为中文字符集。
但要注意的是国家设定里,依然选择UTF,不然会造成???返回信息的情况。
4.8 数据库存储结构
该选项让你查看你的数据库存储结构和进行一些设定
4.9 安装确认和是否创建模板,或是自定义脚本
该选项就是开始创建数据库了,还可以选择是否创建模板和脚本,便于以后批量创建相同的数据库。
5 安装完后的配置和验证
5.1 listener.ora文件和tnsnames.ora文件
以下两个文件是关于监听服务的,如果缺失这两个文件,你的数据库就无法外部连接,所以请根据以下配置,其中localhost是oracle可以识别的主机名,我这里写的是本地。
listener.ora文件
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /u01/app/oracl
tnsnames.ora文件
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
REORATEST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = reoratest)
)
)
修改完以后请重启监听
lsnrctl stop
lsnrctl start
5.2 验证
5.2.1 本地验证
oracle用户输入sqlplus system/<你之前设定的密码>@<实例名>
如下如果不需要输入密码,说明你设定监听是正确的,如果要输入密码,说明你设定的监听有问题,请依次确认
1.listener.ora文件格式,权限,主机名
2.tnsnamer.ora文件格式,权限,主机名
3.用tnsping <主机名>来确认你的主机名是不是有问题。
[oracle@localhost ~]$ sqlplus system/123456@orcl
SQL*Plus: Release 11.2.0.4.0 Production on Sun Jul 29 22:12:12 2018
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 status from V$instance;
STATUS
------------
OPEN
SQL> quit;
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
有问题的输出
[oracle@localhost ~]$ sqlplus system/nihahah@orcl
SQL*Plus: Release 11.2.0.4.0 Production on Sun Jul 29 22:11:47 2018
Copyright (c) 1982, 2013, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
Enter user-name: ^C
5.2.2 外部连接测试
外部sql连接工具我这里推荐oracle sql developer,免费好用.
不要用什么navicat premium的,收费还经常oci文件有问题,搞得我一直觉得是我设置有问题。
6 开机启动数据库相关
根据以上你已经完成了oracle相关的安装和配置,但是开机启动也是重要的一项,为了开机启动数据库,你要修改/etc/oratab文件,让你数据库的条目后面的参数为Y
然后我写了一个开机启动数据库的脚本,供参考
#!/bin/bash
lisenerfile="/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora"
tnsnerfile="/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora"
myhostname=`uname -n`
longname=`grep $myhostname /etc/hosts|awk '{print $2}'`
lisneraddr=`awk '/HOST =/{split($(NF-2),a,")");print a[1]}' $lisenerfile`
if [ "$lisneraddr" != "$longname" ];then
sed -i "s/$lisneraddr/$longname/" $lisenerfile
fi
tnsneraddr=`awk '/HOST =/{split($(NF-2),a,")");print a[1]}' $tnsnerfile`
if [ "$tnsneraddr" != "$longname" ];then
sed -i "s/$tnsneraddr/$longname/" $tnsnerfile
fi
su - oracle -c "dbstart"
su - oracle -c "lsnrctl start"
该脚本是为了vmware模板部署虚拟机时配的,可以看到我特别修改了监听文件中的hostname名。把这个脚本加到/etc/rc.local里就可以完成数据库开机启动。