oracle-3-Linux-11g安装-静默安装

oracle下载地址:https://www.oracle.com/database/technologies/112010-linx8664soft.html

系统是最小化安装的Centos7.2

Centos7下安装ORACLE 11g,弹窗不显示或者显示太小

./runInstaller -jreLoc /etc/alternatives/jre_1.8.0

一、系统环境配置

1、修改主机名
hostnamectl  set-hostname oracledb
exec bash

2、添加hosts解析
echo "11.11.11.2 oracledb" >> /etc/hosts3、关闭seLinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config  
setenforce 0

4、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
或
firewall-cmd --zone=public --add-port=1521/tcp --permanent
firewall-cmd --reload

5、配置阿里云的yun源(不是必须的,可以不做)
cd /etc/yum.repos.d/
wget http://mirrors.aliyun.com/repo/Centos-7.repo
mv CentOS-Base.repo CentOS-Base.repo_ori
mv Centos-7.repo CentOS-Base.repo
yum clean all
yum makecache
yum update

6、安装依赖包
yum -y install gcc gcc-c++ make binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static glibc glibc-common glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel numactl-devel sysstat unixODBC unixODBC-devel kernelheaders pdksh pcre-devel readline rlwrap compat-libcap1 libXi libXtst


7、检测是否有安装
rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst  make sysstat  unixODBC unixODBC-devel


8、新建oracle用户
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
echo "oracle" | passwd --stdin oracle
id oracle

9、修改内核参数
cat >> /etc/sysctl.conf <<EOF
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1073741824  #最低:536870912,最大值:比物理内存小1个字节的值,建议超过物理内存的一半
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
EOF

#参数的值不能小于上面的配置,这是oracle官方建议的最小值,生产环境建议调整这些参数,以优化系统性能。 sysctl
-p 10、修改用户的限制文件 cat >>/etc/security/limits.conf <<EOF oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 oracle soft stack 10240 EOF

  9.修改/etc/pam.d/login文件
  ```bash
cat >>/etc/pam.d/login <<EOF
session required /lib64/security/pam_limits.so
session required pam_limits.so
EOF

11、修改/etc/profile文件
cat >>/etc/profile <<EOF
if [ $USER = "oracle" ]; then
  if [ $SHELL = "/bin/ksh" ]; then
   ulimit -p 16384
   ulimit -n 65536
  else
   ulimit -u 16384 -n 65536
  fi
fi
EOF

12、设置Oracle用户环境变量
su - oracle

vim /home/oracle/.bash_profile
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl           #如果要新建的数据库是itpuxdb,就应该写成itpuxdb
export ORACLE_UNQNAME=$ORACLE_SID
export PATH=$ORACLE_HOME/bin:$PATH
export LANG="en_US"
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"   # 如果要求是UTP8的话,american_america.AL32UTF8
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"

或者
echo 'export ORACLE_BASE=/u01/app/oracle' >> /home/oracle/.bash_profile
echo 'export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1' >> /home/oracle/.bash_profile
echo 'export ORACLE_SID=orcl' >> /home/oracle/.bash_profile
echo 'export ORACLE_UNQNAME=$ORACLE_SID' >> /home/oracle/.bash_profile
echo 'export PATH=$ORACLE_HOME/bin:$PATH' >> /home/oracle/.bash_profile
echo 'export LANG="en_US"' >> /home/oracle/.bash_profile
echo 'NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG' >> /home/oracle/.bash_profile   # 如果要求是UTP8的话,american_america.AL32UTF8
echo 'export LANG=C' >> /home/oracle/.bash_profile
echo 'export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"' >> /home/oracle/.bash_profile

source ~/.bash_profile

13、查看配置是否生效
[oracle@oracledb ~]$ env |grep ORACLE
ORACLE_SID=orcl
ORACLE_BASE=/u01/app/oracle
ORACLE_PID=ora11g
ORACLE_HOME=/product/11.2.0/db_1

14、创建安装目录、修改文件权限
以下关于软件的目录不用改,关于数据的目录可改可不改
su - root
mkdir -p /u01/app/oracle/product/11.2.0/db_1    #软件安装目录
mkdir -p /u01/app/oracle/oradata                  #数据文件存放目录
mkdir -p /u01/app/oracle/inventory               #软件事件存放目录
mkdir -p /u01/app/oracle/fast_recovery_area      #数据快速恢复区
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/app/oracle

15、上传解压oracle安装包
yum -y install lrzsz unzip
cd /tmp
rz -E         #将oracle的两个安装包上传到服务器上,目录无所谓
unzip /tmp/p13390677_112040_Linux-x86-64_1of7.zip
unzip /tmp/p13390677_112040_Linux-x86-64_2of7.zip

二、静默安装Oracle数据库

1.修改静默安装响应文件
su - root
cp /tmp/database/response/db_install.rsp /tmp/database/response/db_install.rsp.bak

vim /tmp/database/response/db_install.rsp
oracle.install.option=INSTALL_DB_SWONLY             # 安装类型
ORACLE_HOSTNAME=oracledb                    # 主机名称(hostname查询)
UNIX_GROUP_NAME=oinstall                # 安装组
INVENTORY_LOCATION=/u01/app/oracle/oraInventory    #INVENTORY目录(不填就是默认值)
SELECTED_LANGUAGES=en,zh_CN                 # 选择语言
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1     # oracle_home
ORACLE_BASE=/u01/app/oracle                 # oracle_base
oracle.install.db.InstallEdition=EE                #   oracle版本
oracle.install.db.isCustomInstall=false           #  自定义安装,否,使用默认组件
oracle.install.db.DBA_GROUP=dba             # dba用户组
oracle.install.db.OPER_GROUP=oinstall             #  oper用户组
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE     # 数据库类型
oracle.install.db.config.starterdb.globalDBName=orcl     # globalDBName
oracle.install.db.config.starterdb.SID=orcl            # SID
oracle.install.db.config.starterdb.memoryLimit=81920     # 自动管理内存的内存(M),可默认
oracle.install.db.config.starterdb.password.ALL=oracle     # 设定所有数据库用户使用同一个密码
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false             #(手动写了false)
DECLINE_SECURITY_UPDATES=true             # 设置安全更新

2.执行静默安装
su - oracle
cd /tmp/database

可能出现的报错:swap分区大小不够
解决方法:
dd if=/dev/zero of=/swapfile bs=1024 count=524288
使用mkswap命令来设置交换文件:
mkswap /swapfile
启用交换分区:
swapon /swapfile
写入/etc/fstab,以便在引导时启用:
/swapfile swap swap defaults 0 0

4.配置监听
su - oracle
netca /silent /responseFile /tmp/database/response/netca.rsp
#运行成功之后,会在
/u01/app/oracle/product/11.2.0/db_1/network/admin/中生成listener.ora和sqlnet.ora两个文件。可自行进入这个目录查找这两个文件是否存在。

 注释:配置完成后默认就是启动状态,如果没有就启动下
 su - oracle
 lsnrctl start
 netstat -tunlp|grep 1521 

三、静默建库

5.查看监听端口
su - root
netstat -tnulp | grep 1521

6、修改建库脚本
su - root
vim /tmp/database/response/dbca.rsp
GDBNAME = "orcl"          #不要写成数字1了
SID = "orcl"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
SYSMANPASSWORD = "oracle"
DBSNMPPASSWORD = "oracle"
DATAFILEDESTINATION =/u01/app/oracle/oradata
RECOVERYAREADESTINATION=/u01/app/oracle/fast_recovery_area
CHARACTERSET = "ZHS16GBK"          #注意:这里使用的GBK,如果需要使用UTF-8,则改成AL32UTF8
TOTALMEMORY = "1638"            #可默认

7、静默建库
su - oracle
[oracle@oracledb ~]$ dbca -silent -responseFile /tmp/database/response/dbca.rsp 
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/orcl/orcl.log" for further details.
[oracle@oracledb ~]$ 

8.建库后检查
ps -ef |grep ora_|grep -v grep     #只有在启库的完成后才有进程出现,停库后就没有了进程了

9、用超级管理员用户登录,并启动数据库
su - oracle
[oracle@oracledb ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Tue Nov 12 13:06:02 2019
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to an idle instance.

SQL> startup    
ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size            2220200 bytes
Variable Size          281022296 bytes
Database Buffers      780140544 bytes
Redo Buffers            5554176 bytes
Database mounted.
Database opened.
SQL> select name from v$database;

NAME
---------
ORCL
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> 
SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

查看数据库版本

SQL> select * from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0    Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

四、基本安全设置

10.为超级管理员设置登录密码,并设置密码永不过期
su - oracle
sqlplus / as sysdba
alter user sys identified by "NVvXRPrHFwLyJMrv";
alter user system identified by "NVvXRPrHFwLyJMrv";

11、禁止操作系统验证登陆数据库
1)、使用正确的用户名和密码登陆数据库
[oracle@oracledb ~]$ sqlplus sys/oracle as sysdba
注释:斜杠“/”左面是用户名,右面是密码,此时,无论是否使用账号、使用错误的账号和密码都是可以正常登陆的。

系统认证方式登录数据库禁用的方法很简单,仅需在sqlnet.ora配置文件中添加一条“SQLNET.AUTHENTICATION_SERVICES=(NONE)”即可。
[oracle@oracledb ~]$ vim /u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES=(NONE)

[oracle@oracledb ~]$ sqlplus sys/NVvXRPrHFwLyJMrv as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Tue Nov 12 15:16:12 2019
Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> 
11、 进一步提高系统的安全性
因为sqlnet.ora文件默认条件下oracle用户可以对其进行任意修改,通过调整sqlnet.ora文件权限提高系统的安全性。

1)调整sqlnet.ora文件的owner和权限信息
[root@oracledb ~]# chown root:root /u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
[root@oracledb ~]# chmod 744 /u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
[root@oracledb ~]# ls -l /u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
-rwxr--r-- 1 root root 256 11月 12 15:03 /u01/app/oracle/product/11.2.0/db_1/network/admin/sqlnet.ora
注释:调整之后,oracle用户将再无权限对sqlnet.ora文件进行调整。
12、修改密码为永不过期
(1)查看用户的proifle是哪个,一般是default:sql>SELECT username,PROFILE FROM dba_users;
   
2)查看指定概要文件(如default)的密码有效期设置:sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
  
3)将密码有效期由默认的180天修改成“无限制”:ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;(注:修改之后不需要重启动数据库,会立即生效。)

(4)检验:sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
   

修改之后不需要重启动数据库,会立即生效。
4、修改后,还没有被提示ORA-28002警告的帐户不会再碰到同样的提示;
已经被提示的帐户必须再改一次密码,举例如下:
sql> alter 数据库名 identified by <原来的密码> ----不用换新密码
 
修改密码步骤:
用管理员账号登录进去alter user 数据库名 identified by "要设置的密码";

4. 设置Oracle开机启动

修改 /u01/app/oracle/product/11.2.0/db_1/bin/dbstart 
ORACLE_HOME_LISTNER=$ORACLE_HOME

修改/u01/app/oracle/product/11.2.0/db_1/bin/dbshut 
ORACLE_HOME_LISTNER=$ORACLE_HOME

修改vi /etc/oratab
orcl:/data/app/oracle/product/11.2.0:Y

注释:在oracle账号下echo $ORACLE_HOME 可以查看到相应变量具体指明路径

 4.1、新建文件/etc/rc.d/init.d/oracle

#! /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=/u01/app/oracle/product/11.2.0/db_1
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

 4.2、权限设置

给/etc/init.d/oracle添加执行权限
chmod +x /etc/init.d/oracle

开机启动oracle
systemctl enable oracle
或
chkconfig oracle on

给启动文件加权限
cd /data/app/oracle/product/11.2.0/bin/
chmod 6751 oracle
cd /var/tmp
chown -R oracle:oinstall .oracle

 5、开启实例(使用SQL*PLUS)

STARTUP [选项]
选项说明:

NOMOUNT—开启实例,不加载数据库.允许访问数据库,仅用于创建数据库或重建控制文件
MOUNT—开启实例,并加载数据库,但不打开数据库。允许DBA进行操作,但是不允许普通的数据库访问
OPEN—开启实例,加载数据库,打开数据库,等同STARTUP
FORCE-在启动或关闭遇到问题时,强制启动实例
OPEN RECOVER—在完成完整的备份后启动实例。
注意:通过共享服务处理器即共享池,连接到数据库无法启动实例

6、Navicat Premium 连接oracle 

前提:oracle要启动监听1521端口,实例也要起来,否则连接时报ORA-12514

连接时报错:ORA-28547:connection to server failed, probable Oracle Net admin error

如果使用Navicat连接Oracle服务器出现ORA-28547错误时,多数是因为Navicat本地的OCI版本与Oracle服务器服务器不符造成的。所以我们要做的就是下载OCI使之与我们所安装的Oracle服务器相符合。

OCI下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html
链接:https://pan.baidu.com/s/1UtLSnScK1dS8SjS_SDwvqA 提取码:djfj  
下载下来后解压到D盘的某个目录下

 FAQ:

1、TNS-01106: Listener using listener name LISTENER has already been started

[oracle@oracledb ~]$ lsnrctl start
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 06-FEB-2017 15:30:14
Copyright (c) 1991, 2014, Oracle.  All rights reserved.

TNS-01106: Listener using listener name LISTENER has already been started
-- 通过ps 命令没有发现 监听的进程

[root@sh ~]# ps -ef | grep -i tns
root        36     2  0 Jan26 ?        00:00:00 [netns]
root     14995 14824  0 15:30 pts/1    00:00:00 grep -i tns

-- 这个问题基本2个原因导致, :
1,  /etc/hosts 文件中的 ip和主机名不一致
2, listener.ora 中监听主机非当前主机.

排查步骤:
su - oracle
hostname    #确定当前系统名称
vim /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
vim /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
确定这两个文件下的hosts=的是当前主机名
 (ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 1521))     #确定HOST=的是主机名称

然后重启系统

[oracle@oracledb ~]$ lsnrctl start      #启系统
netstat -tnulp | grep 1521    #查看监控是否正常
原文地址:https://www.cnblogs.com/huangyanqi/p/11600359.html