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 #查看监控是否正常