一、安装环境
二、安装包下载
三、环境配置
四、安装及配置
文章参考链接
- Linux公社 CentOS 7下Oracle 12C 无图形界面静默安装
- Oracle数据库静默安装
一、安装环境
以下安装环境是在虚拟机测试环境,仅供参考
操作系统:CentOS 7
内存:4G
CPU:单核
硬盘:50G
交换空间:4G
二、安装包下载
下载地址
三、环境配置
-
关闭防火墙
# systemctl stop firewalld.service --关闭防火墙 # systemctl disable firewalld.service -- 禁止防火墙开机启动
-
关闭selinux
# setenforce 0 # getenforce Permissive # vim /etc/selinux/config 文件中设置SELINUX=disabled
-
修改host(可省略)
# echo "10.0.0.40 huojibufei-oracle" >> /etc/hosts # cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.0.40 huojibufei-oracle
-
安装必要的依赖包
Packages for Oracle Linux 7 and Red Hat Enterprise Linux 7
The following packages (or later versions) must be installed:
binutils-2.23.52.0.1-12.el7.x86_64 compat-libcap1-1.10-3.el7.x86_64 gcc-4.8.2-3.el7.x86_64 gcc-c++-4.8.2-3.el7.x86_64 glibc-2.17-36.el7.i686 glibc-2.17-36.el7.x86_64 glibc-devel-2.17-36.el7.i686 glibc-devel-2.17-36.el7.x86_64 ksh libaio-0.3.109-9.el7.i686 libaio-0.3.109-9.el7.x86_64 libaio-devel-0.3.109-9.el7.i686 libaio-devel-0.3.109-9.el7.x86_64 libgcc-4.8.2-3.el7.i686 libgcc-4.8.2-3.el7.x86_64 libstdc++-4.8.2-3.el7.i686 libstdc++-4.8.2-3.el7.x86_64 libstdc++-devel-4.8.2-3.el7.i686 libstdc++-devel-4.8.2-3.el7.x86_64 libXi-1.7.2-1.el7.i686 libXi-1.7.2-1.el7.x86_64 libXtst-1.2.2-1.el7.i686 libXtst-1.2.2-1.el7.x86_64 make-3.82-19.el7.x86_64 sysstat-10.1.5-1.el7.x86_64
# yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 compat-libstdc++-33*.devel compat-libstdc++-33 compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 ksh libaio libaio*.i686 libaio-devel libaio-devel*.devel libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.devel libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686 # 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
-
创建用户和组
# groupadd oinstall # groupadd dba # useradd -g oinstall -G dba oracle # passwd oracle # id oracle uid=1000(oracle) gid=1000(oinstall) 组=1000(oinstall),1001(dba)
-
修改内核参数(根据需要修改 此为32G内存)
vim /etc/sysctl.conf
追加
fs.aio-max-nr=1048576 fs.file-max=6815744 kernel.shmall=8388608 kernel.shmmax=34359738367 kernel.sem=250 32000 100 128 kernel.shmmni=4096 kernel.panic_on_oops=1 net.core.rmem_default=262144 net.core.rmem_max=4194304 net.core.wmem_default=262144 net.core.wmem_max=1048576 net.ipv4.conf.all.rp_filter=2 net.ipv4.conf.default.rp_filter=2 fs.aio-max-nr=1048576 net.ipv4.ip_local_port_range=9000 65500
参数说明(一脸懵逼)
fs.aio-max-nr:
此参数限制并发未完成的请求,应该设置避免I/O子系统故障。
fs.file-max:
该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。
kernel.shmall:
该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB /4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求.
kernel.shmmax:
是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及ServerProcess创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。
官方建议值:
32位linux系统:可取最大值为4GB(4294967296bytes)-1byte,即4294967295。建议值为多于内存的一半,所以如果是32为系统,一般可取值为4294967295。
64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,例如,如果为12GB物理内存,可取1210241024*1024-1=12884901887。
kernel.shmmni:
该参数是共享内存段的最大数量。shmmni缺省值4096,一般肯定是够用了。
kernel.sem:
以kernel.sem = 250 32000 100 128为例:
250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。
32000是参数semmns的值,表示系统内可允许的信号量最大数目。
100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。
128是参数semmni的值,表示系统信号量集合总数。
net.ipv4.ip_local_port_range:
表示应用程序可使用的IPv4端口范围。
net.core.rmem_default:
表示套接字接收缓冲区大小的缺省值。
net.core.rmem_max:
表示套接字接收缓冲区大小的最大值。
net.core.wmem_default:
表示套接字发送缓冲区大小的缺省值。
net.core.wmem_max:
表示套接字发送缓冲区大小的最大值。
使配置文件生效
sysctl -p
-
修改配置
vim /etc/security/limits.conf
追加
oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
第1行是设置进程数软限制
第2行是设置进程数硬限制
第3行是设置文件数软限制
第4行是设置文件数硬限制
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
source /etc/profile
-
挂载硬盘
·dd if=/dev/zero of=/var/swap bs=1024 count=8192000·添加swap
fdisk /dev/sdb n p 1 默认 默认 w vim /etc/fstab 追加 mount -a df -h查看
-
创建数据库目录
# mkdir -p /data/oracle # chown -R oracle:oinstall /data/oracle/ # chmod -R 775 /data/oracle/
配置oracle用户
su - oracle
vim ~/.bash_profile
追加
export ORACLE_BASE=/data/oracle/oracIns
export ORACLE_SID=orcl
source ~/.bash_profile
四、安装及配置
-
上传Oracle安装包
mkdir /home/oracle/oradb
-
安装unzip
su root
rpm -ivh unzip-6.0-20.el7.x86_64.rpm
su - oracle
unzip -d /home/oracle/oradb/ /opt/oracle12cR2_linux64.zip
-
复制模板
cd /home/oracle mkdir etc cp /home/oracle/oradb/database/response/* /home/oracle/etc
su root
chmod -R 700 /home/oracle/etc/*.rsp
-
编辑文件内容
su - oracle
vim /home/oracle/etc/db_install.rsp
找出以下项,根据个人实际情况修改(还是一脸懵逼)
oracle.install.option=INSTALL_DB_SWONLY // 安装类型 UNIX_GROUP_NAME=oinstall // 安装组 INVENTORY_LOCATION=/data/oracle/oraInventory //INVENTORY目录(不填就是默认值) ORACLE_HOME=/data/oracle/oracIns/product/12/db_1 ORACLE_BASE=/data/oracle/oracIns oracle.install.db.InstallEdition=EE // 企业版本 oracle.install.db.OSDBA_GROUP=dba oracle.install.db.OSOPER_GROUP=oinstall oracle.install.db.OSBACKUPDBA_GROUP=oinstall oracle.install.db.OSDGDBA_GROUP=oinstall oracle.install.db.OSKMDBA_GROUP=oinstall oracle.install.db.OSRACDBA_GROUP=oinstall oracle.install.db.config.starterdb.type=GENERAL_PURPOSE //数据库类型 oracle.install.db.config.starterdb.globalDBName=orcl oracle.install.db.config.starterdb.SID=orcl oracle.install.db.config.starterdb.memoryLimit=81920 //自动管理内存的内存(M) oracle.install.db.config.starterdb.password.ALL=oracle//设定所有数据库用户使用同一个密码 SECURITY_UPDATES_VIA_MYORACLESUPPORT=false DECLINE_SECURITY_UPDATES=true
-
开始安装
cd /home/oracle/oradb/database
./runInstaller -ignoreSysPrereqs -ignorePrereq -waitforcompletion -showProgress -silent -responseFile /home/oracle/etc/db_install.rsp
su root
/data/oracle/oraInventory/orainstRoot.sh
/data/oracle/oracIns/product/12/db_1/root.sh
-
修改oracle用户环境变量
su - oracle
vim ~/.bash_profile
export ORACLE_BASE=/data/oracle/oracIns export ORACLE_SID=orcl export ORACLE_PID=oral12 #export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib export ORACLE_HOME=$ORACLE_BASE/product/12/db_1 export PATH=$PATH:$ORACLE_HOME/bin export LANG="zh_CN.UTF-8" export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8" export NLS_DATE_FORMAT='yyyy-mm-dd hh24:mi:ss'
配置监听
cd /home/oracle/etc/
netca /silent /responsefile /home/oracle/etc/netca.rsp
lsnrctl start
若有报错 参照此处手动创建listen配置文件
vim /data/oracle/oracIns/product/12/db_1/network/admin/listener.ora SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = /data/oracle/oracIns/product/12/db_1) (SID_NAME = orcl) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = huojibufei-oracle)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
-
修改静默建库文件
vim /home/oracle/etc/dbca.rsp
responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v12.2.0 gdbName=orcl sid=orcl databaseConfigType=SI createAsContainerDatabase=true numberOfPDBs=1 pdbName=orclpdb templateName=/data/oracle/oracIns/product/12/db_1/assistants/dbca/templates/General_Purpose.dbc emExpressPort=5500 omsPort=0 characterSet=ZHS16GBK listeners=LISTENER memoryPercentage=40 automaticMemoryManagement=false totalMemory=0
执行静默建库
dbca -silent -createDatabase -responseFile /home/oracle/etc/dbca.rsp
·dbca -silent -deleteDatabase -sourcedb orcl -sid orcl·
[oracle@huojibufei etc]$ dbca -silent -createDatabase -responseFile /home/oracle/etc/dbca.rsp 输入 SYS 用户口令: 输入 SYSTEM 用户口令: 输入 PDBADMIN 用户口令:
-
切换PDB
sqlplus / as sysdba startup show con_name; show pdbs; # 切换容器 alter session set container=ORCLPDB; - startup(如果pdb容器为mount状态,startup一下) - 可以让CDB重启后,pdb维持其关机前的状态 - alter pluggable database ORCLPDB save state; - alter pluggable database ORCLPDB discard state; # 创建用户及赋权 create user huojibufei identified by huojibufei; grant connect, resource to huojibufei; grant create view to huojibufei; # 表空间权限 grant unlimited tablespace to huojibufei; select username from dba_users where INHERITED='NO'; # 查看监听状态 lsnrctl status
-
修改字符集为gbk
su - oracle sqlplus / as sysdba select * from v$version; shutdown immediate startup mount alter session set sql_trace=true; alter system enable restricted session; alter system set job_queue_processes=0; alter system set aq_tm_processes=0; alter database open; alter database character set internal_use ZHS16GBK; shutdown immediate; startup select userenv('language') from dual; select * from nls_database_parameters; alte1000 ystem set job_queue_processes=1000;