CentOS7.6静默(无图形化界面)安装Oracle 11g
一、准备工作
1.准备centos 7 系统环境
由于是使用静默模式(silent)安装的,无需使用图形化界面,我选择了最小安装的服务器版的centos 7。安装完成后,只有命令行界面。
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源,下载速度快些,执行如下命令即可:
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
5.修改成功后,安装如下依赖包:
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
6.安装完成后显示如下界面
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"
8.发现 pdksh 没有安装
9.执行 yum -y install pdksh,发现centos 7 没有相关安装包可用
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.再次检查依赖包是否安装完整
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"
到此依赖包安装完整
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
说明:密码需输入两次,提示密码强度若不用管,两次一致后会提示设置成功
15.配置hostname(本机ip映射)
vim /etc/hosts 192.168.154.154 centos-oracle
16.测试hostname
ping -c 3 centos-oracle
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=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
18.使参数生效
sysctl -p
19.限制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
20.创建oracle安装目录
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 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/response/db_install.rsp
2.安装期间可以使用tail命令监看oracle的安装日志
tail -f /db/app/oracle/inventory/logs/installactions2019-09-03_19-48-29pm.log
安装完成,提示successfully setup software.
3.根据提示完成配置
su root
sh /db/app/oracle/inventory/orainstroot.sh sh /db/app/oracle/product/11.2.0/root.sh
4.配置静默监听
su - oracle netca /silent /responsefile /db/etc/netca.rsp
5.查看监听端口
netstat -tnulp | grep 1521
6.静默创建数据库 totalmemory 设置为总内存的80%
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.执行静默建库
dbca -silent -responsefile /db/etc/dbca.rsp
8.查看oracle实例进程
ps -ef | grep ora_ | grep -v grep
9.查看监听状态
lsnrctl status
10.切换为oracle用户,登录sqlplus,查看实例状态
su - oracle sqlplus / as sysdba select status from v$instance;
注意:此处会报错
解决办法:输入命令startup
startup
再次查询即可正常显示
(1)查看数据库编码
select userenv('language') from dual;
(2)查看数据库版本信息
select * from v$version;
(3)激活scott用户
alter user scott account unlock; alter user scott identified by tiger; select username,account_status 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,解压压缩文件
(3)下载navicat
http://pan.baidu.com/s/1c2gp9u4
打开navicat,工具→选项
打开oci界面,在右侧oci library一栏中选择instantclient-basic解压目录下的oci.dll,然后点击确定。
重启navicat,点击连接,选中oracle
ip为oracle服务器的ip地址,服务名为oracle的实例名,可忽略大小写
select instance_name from v$instance;
用户名使用刚激活的scott,密码为tiger,填完以上信息后点击连接测试
到此navicat远程连接oracle数据库成功
12.设置oracle开机启动
#可能出现的问题oracle ora-12547: tns:lost contact cd /db/app/oracle/product/11.2.0/bin/ chmod 6751 oracle
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改为y,默认为n orcl:/db/app/oracle/product/11.2.0:y
vi /etc/rc.d/init.d/oracle
(1)注意:默认没有该文件,复制以下内容到打开的白板界面
#! /bin/bash # oracle: start/stop oracle database 11g r2 # # chkconfig: 345 90 10 # 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)授权
chmod 750 /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)
重启后即可正常连接