Install Oracle12cR2 on CentOS 7.3

来源:这里教程网 时间:2026-03-03 11:44:48 作者:

环境: CentOS7.3        Oracle 12cR2  linuxx64_12201_database.zip        JDK 8 (Java SE Development Kit) with the JNDI extension   启用功能:    Automatic Memory Management   字符集:AL32UTF8 ORACLE_HOME: /u01/oracle/orahomes/product/11.2.0/db_1 ORADATA: /u01/oracle/orahomes/oradata   参考:https://oracle-base.com/articles/12c/oracle-db-12cr2-installation-on-oracle-linux-6-and-7

Linux系统安装

最小安装(Minimal option X Window System OpenSSH Red Hat Enterprise Linux 7: 3.10.0-123.el7.x86_64 or later  

hostnamectl

 

系统硬件检查

1.检查内核发行版本

# cat /etc/redhat-release
# lsb_release -id
# uname -r

 

2. physical RAM 

grep MemTotal /proc/meminfo

3. swap space

# grep SwapTotal /proc/meminfo

swap space: Between 1 GB and 2 GB      1.5RAM Between 2 GB and 16 GB     等于RAM More than 16 GB            16 GB   swap dd if=/dev/zero of=/disk1/swap bs=8M count=1024 #mkswap /disk1/swap mkswap: /disk1/swap: warning: don't erase bootbits sectors         on whole disk. Use -f to force. Setting up swapspace version 1, size = 17825788 KiB no label, UUID=023fe065-88e5-47c8-b4e3-0bb083214295   #swapon /disk1/swap #vi /etc/fstab /disk1/swap     swap                    swap    defaults        0 0   执行一下命令验证挂载是否有问题,如果不报错即为成功 #mount –a    

4. /tmp directory

# df -h /tmp

空间需求: /tmp directory:    >=1 GB Software Files directory   >=4.7G Data Files directory       >=1.7G    

# uname -m

5.验证shared memory(/dev/shm) mount 状态 、合适的尺寸

df -h /dev/shm

 

6.透明大页(Transparent HugePages---- Oracle 建议关闭

   RedHat6开始,系统缺省启用透明大页,可以实时配置,不需要重启才能生效配置 ORACLE官方不建议使用,因为存在一些问题:

1.      RAC环境下 透明大页(Transparent HugePages )会导致异常节点重启,和性能问题;

2.     在单机环境中,透明大页(Transparent HugePages 也会导致一些异常的性能问题;

  查看:

# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled

如果输出结果为[always]表示透明大页启用了,[never]表示透明大页禁用、[madvise]表示 如果HugePages_Total返回0,也意味着透明大页禁用了

grep -i HugePages_Total /proc/meminfo

返回0也意味着透明大页禁用了

cat /proc/sys/vm/nr_hugepages 

禁用透明大页方法:

1)添加“transparent_hugepage=never”到内核启动行 /etc/grub.conf   title Oracle Linux Server (2.6.32-300.25.1.el6uek.x86_64)

root (hd0,0)

kernel /vmlinuz-2.6.32-300.25.1.el6uek.x86_64 ro root=LABEL=/ transparent_hugepage=never

initrd /initramfs-2.6.32-300.25.1.el6uek.x86_64.img

 

2)重启系统  

7.检查host name

 DNS OR /etc/hosts  

8.内核参数:(/etc/sysctl.conf

如果原文件已有定义,则保留原文件的配置如kernel.shmmax fs.aio-max-nr = 1048576 fs.file-max = 6815744 kernel.shmall = 2097152 kernel.shmmax = 4294967295 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  

/sbin/sysctl -p
/sbin/sysctl -a

9.安全linux选项: "/etc/selinux/config"

SELINUX=permissive
SELINUX=disabled

 

10Oracle 用户配置shell 限制

 vi /etc/security/limits.conf   oracle   soft    memlock         1048576    # -1  for lock_sga   *.lock_sga=TRUE oracle   hard    memlock         1048576 oracle   soft    nproc           2047 oracle   hard    nproc           16384 oracle   soft    nofile          1024 oracle   hard    nofile          65536 oracle   soft    core       unlimited oracle   hard    core       unlimited EOF   锁住sga Linux 默认最大的可锁定的内存是 32k ,若要在内存中锁定 sga防止使用swap  lock_sga=true ,则要 去掉这个限制( ulimit -l unlimited)    第一步:  /etc/security/limits.conf <<EOF oracle  soft   memlock  -1# -1 unlimited     for lock_sga   *.lock_sga=TRUE oracle  hard   memlock  -1    第二步:     lock_sga=true

pre_page_sga=ture   ulimit –a ulimit -l unlimited ulimit -a

 

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     umask 022 fi EOF  

12.防火墙设置

 

需要的安装包

Packages for Red Hat Enterprise Linux 7

binutils-2.23.52.0.1-12.el7 (x86_64)
compat-libcap1-1.10-3.el7 (x86_64)
compat-libstdc++-33-3.2.3-71.el7 (i686)
compat-libstdc++-33-3.2.3-71.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)
libxcb-1.9-5.el7 (i686)
libxcb-1.9-5.el7 (x86_64)
libX11-1.6.0-2.1.el7 (i686)
libX11-1.6.0-2.1.el7 (x86_64)
libXau-1.0.8-2.1.el7 (i686)
libXau-1.0.8-2.1.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)
net-tools-2.0-0.17.20131004git.el7 (x86_64) (for Oracle RAC and Oracle Clusterware)
nfs-utils-1.3.0-0.21.el7.x86_64 (for Oracle ACFS)
smartmontools-6.2-4.el7 (x86_64)
sysstat-10.1.5-1.el7 (x86_64)
unixODBC-2.3.1 or later LDAP cvuqdisk-1.0.10-1.rpm     for cluster   JDK 8 (Java SE Development Kit) with the JNDI extension with Oracle Java Database Connectivity.  

yum install binutils -y
yum install compat-libcap1 -y
yum install compat-libstdc++-33 -y
yum install compat-libstdc++-33.i686 -y
yum install glibc -y
yum install glibc.i686 –y
yum install glibc-devel -y
yum install glibc-devel.i686 -y
yum install ksh -y
yum install libaio -y
yum install libaio.i686 -y
yum install libaio-devel -y
yum install libaio-devel.i686 -y
yum install libX11 -y
yum install libX11.i686 -y
yum install libXau -y
yum install libXau.i686 -y
yum install libXi -y
yum install libXi.i686 -y
yum install libXtst -y
yum install libXtst.i686 -y
yum install libgcc -y
yum install libgcc.i686 -y
yum install libstdc++ -y
yum install libstdc++.i686 -y
yum install libstdc++-devel -y
yum install libstdc++-devel.i686 -y
yum install libxcb -y
yum install libxcb.i686 -y
yum install make -y
yum install nfs-utils -y
yum install net-tools -y
yum install smartmontools -y
yum install sysstat –y
yum install unixODBC -y
yum install unixODBC-devel -y

       

建立相关目录

mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01
chmod -R 775 /u01

建立用户和组

groupadd -g 501 oinstall
groupadd -g 502 dba
groupadd -g 503 oper
groupadd -g 504 asmadmin
groupadd -g 506 asmdba
groupadd -g 505 asmoper
useradd -u 502 -g oinstall -G dba,asmdba,oper oracle
passwd oracle

 

nobody

# id nobody  
uid=99(nobody) gid=99(nobody) groups=99(nobody)

 

配置用户环境

# vi /home/oracle/.bash_profile
# Oracle 12g Database Environment Variables
# User specific environment and startup programs
export NLS_LANG=american_america. AL32UTF8
export ORACLE_BASE=/u01/oracle/orahomes
export ORACLE_HOME=$ORACLE_BASE/product/12.2.0/db_1
export ORACLE_PATH=.:$ORACLE_HOME/rdbms/admin
export ORACLE_SID=orcl
export ORACLE_HOSTNAME=db15.xx.com
#export ORACLE_UNQNAME=DB11G;
export ORACLE_TERM=xterm
export TNS_ADMIN=$ORACLE_HOME/network/admin
export ORA_NLS11=$ORACLE_HOME/nls/data
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
#export ORACLE_PATH=.:$ORACLE_HOME/rdbms/admin:/oracle/maintain/sql
 
# UNIX Environment Variables
export LANG=en_US
export PATH=.:$ORACLE_HOME/bin:${PATH}:$HOME/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
 
# Use old Linuxthreads with floating stacks instead of
# the new Native POSIX Thread Library (NPTL)
export THREADS_FLAG=native
export TEMP=/tmp
export TMPDIR=/tmp
export  TZ='Asia/Shanghai'
unset CLASSPATH
 
#alias
#alias ls='ls -FA'
alias rm='rm -i'
alias oh='cd $ORACLE_HOME'
alias os='echo $ORACLE_SID'
alias tns='cd $ORACLE_HOME/network/admin/'
alias log='cd $ORACLE_BASE/diag/rdbms/tdwlds/TDWLDS/trace'
alias alert='tail -100 $ORACLE_BASE/diag/rdbms/tdwlds/TDWLDS/trace/alert_$ORACLE_SID.log|more'

   

安装software

$ ./runInstaller

                     

修改为归档模式

alter database archivelog archive log list      

默认配置修改(ORACLE调优项)

  一、安全 1.Remove the GRANT EXECUTE TO PUBLIC privilege from potentially harmful packages

revoke execute on utl_file from public;
revoke execute on dbms_random from public;
revoke execute on utl_http from public;
revoke execute on utl_smtp from public;
revoke execute on utl_tcp from public;

  2.确保以下账号密码是被改变的           SYS         SYSTEM         DBSNMP         OUTLN         CTXSYS         PERFSTAT   3.确保只有syssystem使用SYSTEM 表空间

alter database default tablespace users;
alter user sys default tablespace system;
alter user system default tablespace system;
select username, default_tablespace from dba_users where default_tablespace = 'SYSTEM';
alter user <user name> default tablespace <non-SYSTEM tablespace>;

  4. Lock and expire potentially harmful built-in user-ids.

alter user outln password expire account lock;
alter user dbsnmp password expire account lock;

  1.登录限制

alter profile DEFAULT limit
  failed_login_attempts unlimited
  password_life_time unlimited;

  2.固定大小的还原表空间 (最好在系统运行一段时间后再做,这样才有依据)   可获得最佳保留期的自动优化,支持闪回操作,限制表空间增长   对于固定UNDO表空间,将会通过表空间的剩余空间来最大限度保留UNDO信息。如果FIXED UNDO表空间没有对保留时间作GUARANTEEalter tablespace xxx retention guarantee;),则undo_retention参数将不会起作用。     create undo tablespace thinktbs datafile '/u01/app/oracle/oradata/ORCL/datafile/think_undo.dbf'  size 2m autoextend off;    alter system set undo_tablespace=thinktbs;     undo表空间的大小有三个影响因素:    1undo_retention    2)每秒需要的undo数据块:

v$undostat  (select max(undoblks/((end_time-begin_time)*24*3600)) from v$undostat;  )    3)缺省块大小 db_block_size     计算公式:undo size=db_block_size*undo_retention*max(undoblks/((end_time-begin_time)*24*3600))      计算方法2(直方图):DBA_HIST_UNDOSTAT.tuned_undoretention    select to_char(begin_time,'DD-MON-RR HH24:MI') begin_time,to_char(end_time,'DD-MON-RR HH24:MI') end_time,tuned_undoretention from v$undostat order by end_time;    ALTER DATABASE DATAFILE '/home/oracle/oradata/EMDB/undotbs01.dbf' RESIZE 1024M  ALTER DATABASE DATAFILE '/home/oracle/oradata/EMDB/undotbs01.dbf' AUTOEXTEND OFF   3.redo日志组评估   3.指定磁盘扇区大小   新的磁盘物理扇区一般是4kb, 可用 fdisk -lu /dev/sda 查看   [root@wldb15.tudou.com]$ fdisk -lu /dev/sda2 Disk /dev/sda2: 262.7 GB, 262721765376 bytes 255 heads, 63 sectors/track, 31940 cylinders, total 513128448 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 这是512bytes扇区的磁盘       4k 扇区有两种工作模式:native mode emulation mode   1Native mode,即4k模式,物理和逻辑的block大小一样,都是4096 bytes native mode 的缺点是需要操作系统和软件(如DB)的支持。      Oracle 11gR2 之后,就支持4k IO操作,操作系统方面, Linux 内核在2.6.32 之后都支持4k IO操作。   2emulation mode:也称512e 在该模式下,物理块还是4k,但逻辑块是512 bytes 这种模式主要是为了向后兼容。      但在该模式下,底层物理还是4k进行操作,所以就会导致Partial I/O 4k 对齐的问题。     Oracle 数据库的文件中,默认情况下,datafileblock 8KB,控制文件是16KB,所以都没有partial IO的问题,唯有online redo log,默认是512 bytes,存在partial IO的问题。   使用以下命令的SECTOR_SIZEBLOCKSIZE子句: ? CREATE DISKGROUP ? ALTER DATABASE ? CREATE DATABASE ? CREATE CONTROL FILE   CREATE DATABASE sample NORESETLOGS FORCE LOGGING ARCHIVELOG LOGFILE GROUP 1 '$ORACLE_BASE/oradata/sample/redo01.log' SIZE 100M BLOCKSIZE 4096, GROUP 2 '$ORACLE_BASE/oradata/sample/redo02.log' SIZE 100M BLOCKSIZE 4096 DATAFILE 。。。   alter database add logfile group 5 size 100m blocksize 4096;  (前提条件是底层的存储支持4k 扇区)   emulation mode模式下,修改blocksize 4096,可能会得到: ORA-01378: The logical block size (4096) of file +DATA is not compatible with the disk sector size (media sector size is 512 and host sector size is 512)   只要确认底层存储物理是4k的扇区,那么可以设置_disk_sector_size_override参数为true,来覆盖扇区的设置。该参数支持动态修改: ALTER SYSTEM SET “_DISK_SECTOR_SIZE_OVERRIDE”=”TRUE”;   在自动存储管理(ASM) 环境下,你可以为磁盘组设置SECTOR_SIZE属性 该属性只能在创建磁盘组时设置,通过使用CREATE DISKGROUP命令     Unix核心参数设置   4.内存大页开启   5.PFILE参数设置   Processes     需要注意的是:    SEMMSL必须设定为至少要10 + '进程数的最大值'    SEMMNS 也依赖于每个数据库上的进程参数值。     6.主要的数据库表空间存放位置(存储介质直接影响数据库性能),将REDODATA分开放置。   DATA数据放在随机读性能好的介质上,如SSD磁阵,SSD卡,FusionIO等,延时越小越好。   REDO数据放在顺序写的介质上,保证带宽大小。如果REDO有瓶颈,DATA存储介质再牛逼也不顶用了。   7、如果有网络,就要设置网络中断绑定     瓶颈分析:   1、对系统层面进行分析,CPU,MEM,IO一个一个遍历检查,确保硬件没有出现瓶颈。如果这个提前出现问题,就赶紧换硬件再说。   2、如果硬件OK ,而CPU的利用率等没有上去,那么输出AWR报告进行分析,这个分析需要相对专业的知识,慢慢积累吧。

相关推荐