安装Oracle11g 单实例步骤


建立文件系统,超过2T的空间需要使用parted进行分区;
文件系统方式:
/oracle 100G
/arch 根据需要建立
/data 根据需要建立

如果采用ASM存储:
/oracle 100G
/grid 100G
datadg 根据需要建立


安装软件:
p13390677_112040_Linux-x86-64_1of7.zip
p13390677_112040_Linux-x86-64_2of7.zip
p6880880_112000_Linux-x86-64-11.2.0.3.27.zip ----opatch升级补丁
p31537677_112040_Linux-x86-64.zip ----11g补丁


root/oracle/grid用户下,乱码:
export LANG=en_US

export LANG=zh_CN (alert日志中文显示乱码,可以设置此项)


linux 启用异步IO
首先确认操作系统已安装异步IO包 rpm -aq |grep aio

检查xfs系统:
ip addr
df -T /oracle
df -T /data
df -T /arch

uname -a
cat /etc/redhat-release

查看物理内存信息:
grep MemTotal /proc/meminfo

查看交换空间信息:
cat /proc/swaps
grep SwapTotal /proc/meminfo

free -t


主机名:hostname
vi /etc/sysconfig/network
HOSTNAME=costdb

vi /etc/hosts
133.96.6.66 costdb


增加oracle组:
groupadd -g 1011 oinstall
groupadd -g 1012 dba
groupadd -g 1013 oper

增加用户oracle:
useradd -d /home/oracle -u 1010 -g oinstall -G dba oracle
passwd oracle


设置对oracle用户的shell limits
首先需要编辑/etc/security/limits.conf文件(用户限制配置文件)
此文件主要是用来限制用户对系统资源的使用。
是/lib64/security/pam_limits.so模块对应的/etc/serurity/pam_limits的配置文件。

vi /etc/security/limits.conf --默认配置为*,代表所有用户

root soft nofile 65536
root hard nofile 65536

  • soft memlock unlimited
  • hard memlock unlimited

oracle soft nproc 65536
oracle hard nproc 65536
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft stack 32768

然后编辑/etc/pam.d/login文件 ----(将配置文件加入到登录验证模块)
session required pam_limits.so
session required /lib64/security/pam_limits.so

最后编辑/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


关闭selinux--selinux提供了很多Linux的系统安全措施
SELinux 全称 Security Enhanced Linux,因当前生产环境采用了硬件防火墙,建议关闭SELinux安全策略,以免降低性能。

cat /etc/selinux/config
SELINUX=disabled


把 NetworkManager 服务关掉
chkconfig NetworkManager off --linux6
systemctl disable NetworkManager.service --linux7

service NetworkManager stop --linux6
systemctl stop NetworkManager.service --linux7

chkconfig --linux6
systemctl list-unit-files --linux7
systemctl list-unit-files | grep Network


linux防火墙(iptables)关闭
systemctl stop firewalld.service --关闭
systemctl disable firewalld.service --禁用
systemctl status firewalld.service

firewall-cmd --state --查看防火墙状态


内核参数:Kernel settings
参考官方要求:169706.1

注:在 /proc/sys目录下,查看各个参数值
修改内核参数:aio-max-nr建立此文件,注意到路径 /proc/sys/fs/ 下建立该文件

cd /proc/sys/fs
echo > aio-max-nr 3145728 --注意:直接vi打开该文件是无法保存的。

vi /etc/sysctl.conf 添加:

fs.aio-max-nr = 1048576
fs.file-max = 6815744

kernel.panic_on_oops = 1
kernel.shmall = 5767168 -----------32G内存设置22G(70%);需要计算 /proc/sys/kernel/shmall
kernel.shmmax = 23622320128 -------32G内存设置22G(70%);需要计算 /proc/sys/kernel/shmmax
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128

net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.ipfrag_low_thresh = 15728620
net.ipv4.ipfrag_high_thresh = 16777216

kernel.randomize_va_space=0

vm.min_free_kbytes=524288 ----RAC下设置0.5G;设定 vm.min_free_kbytes 参数为物理内存的0.4%
上面的说法是如果环境内存超过37G的情况下,按3%算就是1.1G,我们一般的环境也超过了40G,那么基本就是建议最少留个1.1G的,100G的可以保留到3G左右;建议能保留1G以上的空间;

vm.zone_reclaim_mode=0 关闭zone_reclaim模式,可以从其他zone或NUMA节点回收内存。
vm.swappiness=5
vm.nr_hugepages=8704---------17G;需要计算分配

生效:sysctl -p

说明:shmmax和shmall设置为内存的70%
kernel.shmmax官方建议值:
Linux进程可以分配的单独共享内存段的最大值。一般设置为内存总大小的一半。
这个值的设置应该大于SGA_MAX_TARGET或MEMORY_MAX_TARGET的值,
因此对于安装Oracle数据库的系统,shmmax的值应该比内存的二分之一大一些。
设置不当,建库分配sga的时候报错:ora-27125 unable to create share memory segment

64位linux系统:
可取的最大值为:物理内存值-1byte,建议值为多于物理内存的一半,一般取值大于 SGA_MAX_SIZE即可。

32G内存:3270%=22G
22G
102410241024=23622320128
23622320128/4096=5767168

kernel.shmall :shmall= shmmax/4096
shmall=是全部允许使用的共享内存大小,shmmax 是单个段允许使用的大小。
这两个可以设置为内存的70%

Kernel.shmall是系统一次可以使用的最大共享内存大小。单位是page(4KB)。用命令getconf PAGESIZE查看;
禁用AMM后,需要修改系统参数kernel.shmall,该参数设置过小的话,可能会导致数据库启动失败ORA-27102
ORACLE建议将其设置为系统中所有数据库实例的SGA总和。
例如SGA总和为9GB,则需要设置kernel.shmall=910241024/4=2359296。

该参数控制可以使用的共享内存的总页数。 Linux 共享内存页大小为 4KB, 共享内存段的大小都是共享内存页大小的整数倍。
一个共享内存段的最大大小是 16G ,那么需要共享内存页数是 16GB/4KB==4194304 (页),


16G内存设置如下:

fs.aio-max-nr = 1048576
fs.file-max = 6815744

kernel.panic_on_oops = 1
kernel.shmall = 2883584
kernel.shmmax = 11811160064
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128

net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

net.ipv4.conf.eth0.rp_filter = 0

net.ipv4.ip_local_port_range = 9000 65500
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.ipfrag_low_thresh = 15728620
net.ipv4.ipfrag_high_thresh = 16777216

kernel.randomize_va_space=0
vm.min_free_kbytes=524288
vm.zone_reclaim_mode=0
vm.swappiness=5
vm.nr_hugepages=4608

生效:sysctl -p


设置大页内存:SGA大于8G必须要设置大页内存;
HUGE PAGE 一定要大于SGA,比如比SGA多1-2G,SGA为物理内存的40%-50%,PGA为10%-15%

查看hugepage的大小:
grep Huge /proc/meminfo
sysctl -a | grep hugepages

手工计算:
nr_hugepages>=SGA_Target/Hugepagesize+n (n为少量内存盈余100--500)
SGA为16G,16*1024/2=8192+(100--500)=8292--8692 和8704差不多

32G内存:SGA=320.5=16G 大页为17G=17G1024M/2M=8704

设置:
sysctl -w vm.nr_hugepages=8704
vi /etc/sysctl.conf 加入:vm.nr_hugepages=8704
生效:
sysctl -p /etc/sysctl.conf
/sbin/sysctl -p


透明大页
透明大页(Transparent HugePages )在RAC环境下会导致性能问题,ORACLE官方不建议使用。

Disable Transparent HugePages
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

/etc/rc.local ADD
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

vi close.sh
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
chmod 755 close.sh
./close.sh

cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]


配置本地yum源
/etc/yum.repos.d目录下,只保留CentOS-Media.repo;
建立backup目录,其他repo文件move到backup;
编辑CentOS-Media.repo

[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///mnt/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

没有光盘,挂载ISO镜像文件:
cd /mnt/cdrom
mv /tmp/CentOS-7-x86_64-DVD-1810.iso /mnt/cdrom/
chown root:root CentOS-7-x86_64-DVD-1810.iso
chmod 755 CentOS-7-x86_64-DVD-1810.iso
mount -o loop CentOS-7-x86_64-DVD-1810.iso /mnt/cdrom


官方文档要求安装的软件包:

rpm -q package_name

yum install -y bc binutils compat-libcap1 compat-libstdc++ elfutils-libelf elfutils-libelf-devel fontconfig-devel
yum install -y glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel
yum install -y libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat

补充安装:
yum install -y gcc* vsftpd elfutils-libelf-devel.i*
yum install -y glibc-develi glibc-headers* glibc-headersi gcc-c++
yum install -y libstdc++i libstdc++-develi libaioi libaio-develi compat-libstdc++*
yum install -y psmisc net-tools
yum install -y xdpyinfo

安装UNZIP工具:
yum install -y unzip

配置ADG需要安装的软件包:
yum install -y compat-libstdc* glibc-common libgomp numactl numactl-devel
yum install -y unixODBC unixODBC-devel
yum install -y openssh-clients ---- 主备服务器均安装ssh服务

单独安装某个软件:
rpm -ivh ****.rpm
rpm -ivh unixODBC-devel-2.3.1-11.el7.x86_64.rpm --force --nodeps


建立目录:
cd /
mkdir oraInventory
chown -R oracle:oinstall /oraInventory
chown -R oracle:oinstall /oracle
chown -R oracle:oinstall /arch
chown -R oracle:oinstall /data

cd /etc
vi oraInst.loc
inventory_loc=/oraInventory
inst_group=oinstall

chmod 755 oraInst.loc

cd /oracle ----oracle安装软件包放在oracle目录下或者其他目录
chown oracle:oinstall *.zip
chmod 755 *.zip


添加oracle用户环境变量: /home/oracle/.bash_profile
注意:实例名的大小写;

umask 022
export ORACLE_BASE=/oracle
export ORACLE_HOME=$ORACLE_BASE/11.2.0.4
export ORACLE_SID=odstest
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

export NLS_LANG="simplified chinese"_china.zhs16gbk

export NLS_LANG=AMERICAN_AMERICA.UTF8

export LANG=en_US.UTF8

export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
export LIBPATH=$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:/usr/bin:/etc:/usr/sbin:$PATH
export PS1='$LOGNAME@'hostname:'$PWD''$ '
if [ -t 0 ]; then
stty intr ^C
fi
alias ss="sqlplus / as sysdba"
alias bdump="cd /oracle/*****/trace"

stty erase ^H
set -o vi


su - oracle
cd /oracle/ora11g
unzip p13390677_112040_Linux-x86-64_1of7.zip
unzip p13390677_112040_Linux-x86-64_2of7.zip


安装ORACLE11g软件:xmanager图形界面端口(177)
启动xmanager passive:
export DISPLAY=133.96.9.118:0.0
cd /oracle/database
./runInstaller

到86%报错:
解决方案
在makefile中添加链接libnnz11库的参数
修改$ORACLE_HOME/sysman/lib/ins_emagent.mk,将
$(MK_EMAGENT_NMECTL)修改为:$(MK_EMAGENT_NMECTL) -lnnz11
修改前备份原始文件
cd $ORACLE_HOME/sysman/lib
cp ins_emagent.mk ins_emagent.mk.bak
vi ins_emagent.mk

输入/NMECTL 进行查找
在后面追加参数-lnnz11
第一个是字母l
后面两个是数字1
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL) -lnnz11

然后点击:retry

然后建立监听,建库(过程略):
netca
dbca
建库的时候,选择redolog日志的大小和数量
建库完成后,检查tnsnames.ora和listener.ora配置,注意修改主机名为IP地址;可以配置上静态监听;
检查数据库参数:service_names和local_listener的设置;


数据库参数优化,加固设置:

.audit_trail='db_extended' 可选
alter system set "_enable_shared_pool_durations" =false scope=spfile sid='
';
alter system set "_enable_space_preallocation"=0 scope=spfile sid='';
alter system set "_gc_policy_time"=0 scope=spfile sid='
';
alter system set "_gc_undo_affinity"=false scope=spfile sid='';
alter system set "_gc_read_mostly_locking"=false scope=spfile sid='
';
alter system set "_gc_bypass_readers"=false scope=spfile sid='';
alter system set "_high_priority_processes"='VKTM|LMS|LGWR' scope=spfile sid='
';
alter system set "_memory_imm_mode_without_autosga" = false scope=spfile sid='';
alter system set "_resource_manager_always_on" =false scope=spfile sid='
';
alter system set "_resource_manager_always_off" =true scope=spfile sid='';
alter system set "_serial_direct_read" =false scope=spfile sid='
';
alter system set "_optimizer_use_feedback"=false scope=spfile sid='';
alter system set "_optim_peek_user_binds"=FALSE scope=spfile sid='
';
alter system set "_optimizer_cartesian_enabled"=FALSE scope=spfile sid='';
alter system set "_optimizer_adaptive_cursor_sharing"=FALSE scope=spfile sid='
';
alter system set "_optimizer_extended_cursor_sharing"='NONE' scope=spfile sid='';
alter system set "_optimizer_extended_cursor_sharing_rel"='NONE' scope=spfile sid='
';
alter system set "_optimizer_use_feedback"=FALSE scope=spfile sid='*';

alter system set "_partition_large_extents"=FALSE scope=spfile sid='';
alter system set "_px_use_large_pool"=TRUE scope=spfile sid='
';
alter system set "_undo_autotune"=FALSE scope=spfile sid='';
alter system set "_use_adaptive_log_file_sync"='FALSE' scope=spfile sid='
';

alter system set aq_tm_processes=2 scope=spfile sid='';
alter system set db_files=500 scope=spfile sid='
'; ----根据生产情况酌情修改
alter system set db_file_multiblock_read_count=128 scope=spfile sid='';
alter system set deferred_segment_creation=false scope=spfile sid='
';
alter system set fast_start_parallel_rollback=false scope=spfile sid='';
alter system set filesystemio_options='SETALL' scope=spfile sid='
';
alter system set JOB_QUEUE_PROCESSES=200 scope=spfile sid='';
alter system set open_cursors=1000 scope=spfile sid='
'; ----根据生产情况酌情修改
alter system set parallel_force_local=TRUE scope=spfile sid='';
alter system set parallel_max_servers=50 scope=spfile sid='
';
alter system set parallel_execution_message_size=32768 scope=spfile sid='*';

alter system set processes=4000 scope=spfile sid=''; ----根据生产情况酌情修改
alter system set undo_retention = 3600 scope=spfile sid='
'; ----根据生产情况酌情修改
alter system set session_cached_cursors=500 scope=spfile sid='';
alter system set sec_case_sensitive_logon=false scope=spfile sid='
';
alter system set event='10949 trace name context forever,level 1','28401 trace name context forever,level 1' scope=spfile sid='*';

数据库主要参数检查:
*.db_cache_size=16G 50% of memary size
*.pga_aggregate_target=4G
*.shared_pool_reserved_size=524288000
*.shared_pool_size=3221225472
*.sga_max_size=16G
*.sga_target=15G
*.log_buffer=52428800

shutdown immediate; 重启数据库生效

SGA为物理内存的40%-50% PGA为10%-15%
32G物理内存:
sga_max_size:16G
sga_target:15G
pga_aggregate_target=4G

大页比SGA多1G;17G vm.nr_hugepages=8704

禁用内存自动管理
memory_max_target=0
memory_target=0

参数说明:
1、11G及以后数据库需要设置EVENT 10949事件,这个事件可以避免数据库进行大量的物理读导致磁盘IO资源耗尽。
两种设置语法:
alter system set event='10949 trace name context forever,level 1:28401 trace name context forever, level 1' SCOPE = SPFILE;
alter system set event='10949 trace name context forever,level 1','28401 trace name context forever,level 1' scope=spfile;
需要重启DB生效;
alter system set events '28401 trace name context forever,level 1'; 当前实例生效,重启丢失;

2、设置EVENT 28401事件,避免大量密码错误会导致数据库大量LIBRARY CACHE LOCK等待。
3、RAC架构,关闭DRM,设置
alter system set "_gc_read_mostly_locking"=false scope=spfile;
alter system set "_gc_policy_time"=0 scope=spfile;
alter system set "_gc_undo_affinity"=false scope=spfile;
4、操作系统是LINUX且使用了文件系统存储数据文件,打开异步IO,即设置:
alter system set filesystemio_options='SETALL' scope=spfile;
5、操作系统是RAC,设置以下参数屏蔽跨界点并行导致数据库HANG:
alter system set parallel_force_local=true scope=spfile;


完成建库后:
扩展表空间
增加生产环境的表空间,扩展至要求大小;检查数据文件的自动扩展,关闭;

建立profile;密码不要过期;

alter profile default limit
COMPOSITE_LIMIT UNLIMITED
SESSIONS_PER_USER UNLIMITED
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL UNLIMITED
LOGICAL_READS_PER_SESSION UNLIMITED
LOGICAL_READS_PER_CALL UNLIMITED
IDLE_TIME UNLIMITED
CONNECT_TIME UNLIMITED
PRIVATE_SGA UNLIMITED
FAILED_LOGIN_ATTEMPTS UNLIMITED
PASSWORD_LIFE_TIME UNLIMITED
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
PASSWORD_VERIFY_FUNCTION ora12c_verify_function
PASSWORD_LOCK_TIME 1/1440
PASSWORD_GRACE_TIME UNLIMITED;

建立用户并授权:

create user vbm_app identified by "Ts6ArvH%3t9#FcjX"
default tablespace TBS_APP
temporary tablespace TEMP
quota unlimited on TBS_APP

grant connect to vbm_app;
grant resource to vbm_app;

grant create synonym to vbm_app;
grant create session to vbm_app;
grant create trigger to vbm_app;
grant create sequence to vbm_app;
grant create cluster to vbm_app;
grant create view to vbm_app;
grant create table to vbm_app;
grant create type to vbm_app;
grant create procedure to vbm_app;
grant create indextype to vbm_app;
grant create operator to vbm_app;
grant create materialized view to vbm_app;
grant select any table to vbm_app;

alter user vbm_app profile default;


开启归模式:
alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;
alter system set log_archive_dest_1='location=/arch' scope=spfile;

SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list;
SQL> alter system archive log current;
SQL> alter system switch logfile;
SQL> select name from v$archived_log;


新库:
设置相关的日志清理定时脚本;
nbu每周全备份,每天定时备份归档日志(归档日志只备份不清理,设置脚本自动清理)

posted @ 2026-07-26 11:15  秋之枫叶  阅读(1)  评论(0)    收藏  举报