業務量:數據庫同時訪問量在300人左右 RHEL Linux7 + Oracle11.2.0.4數據庫 空間要求:200G 數據庫名:fghsdb 數據庫塊大小:8192 數據庫字符集:ZHS16GBK 1.生產環境Oracle11gR2 for Linux項目的規划 vmware 12+ 15 物理機CPU I3/I5/I7/E,內存,建議最低16G,有條件32G,硬盤500G 虛擬機 CPU:雙核+ 內存:8G (2g-8g) 核算系統 os:rhel linux 7.6 x64 ip: 192.168.1.52 host name: ippuxhsdb52 db name:fghsdb 數據量:200G / 80G (50〜100G) /oracle 50G /oradata 200G /backup 400G /archive 200G 保留一周的歸檔 swap /—根目錄,一般安裝標准磁盤 數據庫可以ASM和LVM RHEL 7.6 install 帶GUI的服務器、硬件監控工具、JAVA平台、KDE、大系統性能、主框架訪問、性能工具、兼容性程序庫、開發工具、系統管理工具、選擇基礎設施服務器-->調試工具 1) hosts文件配置 vi /etc/hosts 192.168.1.52 itpuxhsdb or echo "192.168.1.52 itpuxhsdb" >> /etc/hosts cat /etc/hosts 2)配置語言環境 echo "export LANG=en_US" >> ~/.bash_profile 3)准備文件系統 fdisk -l |grep "dev/sd" pvcreate /dev/sdb /dev/sdc /dev/sdd /dev/sde vgcreate oravg /dev/sdb vgcreate datavg /dev/sdc vgcreate backvg /dev/sdd vgcreate archvg /dev/sde lvcreate -n oralv -L 50000M oravg lvcreate -n datalv -L 200000M datavg lvcreate -n backuplv -L 400000M backvg lvcreate -n archivle -L 200000M archvg pvs vgs lvs mkfs.xfs /dev/backvg/backuplv mkfs.xfs /dev/backvg/archivle mkfs.xfs /dev/datavg/datalv mkfs.xfs /dev/oravg/oralv vi /etc/fstab /dev/oravg/oralv /oracle xfs defaults 0 0 /dev/datavg/datalv /oradata xfs defaults 0 0 /dev/backvg/backuplv /backup xfs defaults 0 0 /dev/backvg/archivelv /archive xfs defaults 0 0 額外在內存使用超過物理內存的1/2的前題下,加大本機的共享內存空間。 none /dev/shm tmpfs default,size=6144m 0 0 mount -o remount /dev/shm mkdir /oracle mkdir /oradata mkdir /backup mkdir /archive mount /oracle mount /oradata mount /backup mount /archive 4.創建用戶、組 /usr/sbin/groupadd -g 60001 oinstall /usr/sbin/groupadd -g 60002 dba /usr/sbin/groupadd -g 60003 oper useradd -u 61001 -g install -G dba,oper oracle passwd oracle mkdir -p /oracle mkdir -p /oracle/app/oracle/product/11.2.0 mkdir -p /oracle/app/oraInventory chown -R oracle:oinstall /oracle chown -R oracle:dba /oradata chown -R oracle:dba /backup chmod -R 775 /oracle chmod -R 775 /oradata chmod -R 775 /backup chmod -R 775 /archive mount /dev/cdrom /mnt 5.配置yum軟件安裝環境及軟件包安裝 mount /dev/cdrom /mnt cd /etc/yum.repos.d mkdir bk mv public-*.repo bk/ or mv *.repo bk/ vi itpux.repo [EL] name = Linux 7.x DVD name = Linux 7.x DVD baseurl = file:///mnt gpgcheck=0 enable=1 :wq! cat /etc/yum.repos.d/itpux.repo yum list |more #From Public Yum or ULN yum -y install autoconf yum -y install automake yum -y install binutils yum -y install binutils-devel yum -y install bison yum -y install cpp yum -y install dos2unix yum -y install ftp yum -y install gcc yum -y install gcc-c++ yum -y install lrzsz yum -y install python-devel yum -y install compat-db* yum -y install combat-gcc-34 yum -y install combat-gcc-34-c++ yum -y install combat-libcap1 yum -y install combat-libstdc++-33 yum -y install combat-libstdc++-33.i686 yum -y install glibc-* yum -y install glibc-*.i686 yum -y install libXpm-*.i686 yum -y install libXp.so.6 yum -y install libXt.so.6 yum -y install libXtst.so.6 yum -y install libXext yum -y install libXext.i686 yum -y install libXtst yum -y install libXtst.i686 yum -y install libX11 yum -y install libX11.i686 yum -y install libXau yum -y install libXau.i686 yum -y install libxcb yum -y install libxcb.i686 yum -y install libXi yum -y install libXi.i686 yum -y install libXtst yum -y install libstdc++-docs yum -y install libgcc_s.so.1 yum -y install libstdc++-.i686 yum -y install libstdc++-devel yum -y install libstdc++-devel.i686 yum -y install libaio yum -y install libaio.i686 yum -y install libaio-devel yum -y install libaio-devel.i686 yum -y install libXp yum -y install libaio-devel yum -y install numactl yum -y install numactl-devel yum -y install make -y yum -y install sysstat -y yum -y install unixODBC yum -y install unixODBC-devel yum -y install elfutils-libelf-devel-O.97 yum -y install elfutils-libelf-devel yum -y install redhat-lsb-core yum -y install unzip yum -y install *vnc* 3.6修改系統相關參數 1)修改資源限制參數 vi /etc/security/limits.conf #ORACLE SETTING oracle soft nproc 16384 oracle hard nproc 16384 oracle soft nofile 16384 oracle hard nofile 65536 oracle soft stack 10240 oracle hard stack 32768 oracle hard memlock 8000000 oracle soft memlock 8000000 —memlock 單位KB,略低於物理內存。 2)控制給用戶分配的資源 vi /etc/security/limits.d/20-nproc.conf * soft nproc 16384 echo "session required pam_limits.so" >> /etc/pam.d/login vi /etc/security/limits.d/90-nproc.conf * - proc 16384 //每個用戶的進程數限制 cat /etc/pam.d/login vi /etc/sysctl.conf #ORACLE SETTING fs.aio-max-nr = 1048576 fs.file-max = 6815744 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 = 1048586 kernel.panic_on_oops = 1 kernel.shmmax = 5153960756 kernel.shmall = 1228800 kernel.shmmni = 4096 vm.nr_hugepages = 2500 sysctl -p --kernel.shmmax = 5033164800 單個共享內存段最大值,讓數據庫在一個共享段里面的可以容納整個SGA。 8g:數據庫最大使用內存,不要超過物理內存的80%(sga*80%+pga*20%) 8g:sga<4.8g, pga<1.6g 4.8*1024*1024*1024 = 5153960756 4800*1024*1024 = 5033164800 --kernel.shmall = 1228800 控制共享內存頁數= shmmax/PAGESIZE=5033164800/4096=1228800 getconf PAGESIZE --kernel.shmmni = 4096 共享內存段的最大數量 vm.nr_hugepages = 2900 --生產環境LINUX必配,否則性能差,物理內存大於8G一定要配。 (sga_max_size+1g)/2M < memlock 1.(4.8g+1g)/2M=5800/2=2900 2. sga_max_size/2M+100M = 4800/2+100M=2400+100 = 2500M 比較安全 cat /proc/meminfo --4)關閉透明頁(rhel 6.x)//rhel7沒有這個bug cat /sys/kernel/mm/transparent_hugepage/defrag [always] madvise never cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never vi /etc/rc.d/rc.local 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 +x /etc/rc.d/rc.local --5)關閉numa功能 yum install numactl -y numastat numactl --show numactl --hardware vi /etc/default/grub GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet numa=off" grub2-mkconfig -o /etc/grub2.cfg --3.7配置安全 --1)禁用SELINUX i /etc/selinux/config SELINUX=disabled setenforce 0 --2)關防火牆 systemctl stop firewalld.service systemctl disable firewalld.service systemctl status firewalld.service 重啟os --3.8配置oracle環境變量 su -oracle vi ~/.bash_profile PS1="[`whoami`@`hostname`:"'$PWD]$' export PS1 export TMP=/tmp export LANG=en_US export TMPDIR=$TMP export ORACLE_UNQNAME=fghsdb ORACLE_SID=fghsdb; export ORACLE_SID ORACLE_BASE=/oracle/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1; export ORACLE_HOME ORACLE_TERM=xterm; export ORACLE_TERM NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG PATH=.:$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_BASE/product/11.2.0/db_1/bin:$ORACLE_HOME/bin; export PATH THREADS_FLAG=native; export THREADS_FLAG umask=022 if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -u 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi su - oracle env |grep ORACLE 4.RHEL Linux平台Oracle軟件的下載 5.Oracle11gR2 for Linux數據庫軟件安裝 6.Oracle11gR2 for Linux監聽程序的配置 su - oracle cd /backup ls unzip p13390677_112040_Linux-x86-64_1of7.zip unzip p13390677_112040_Linux-x86-64_2of7.zip vncserver password Verify: y ps -ef|grep vnc reboot tigervnc cd /backup ls cd database/ ls ./runInstaller -jreLoc /etc/alternatives/jre_1.8.0 rpm -e ksh-20120801-139.el7.x86_64 rpm -ivh --force --nodeps pdksh-5.2.14-30.x86_64.rpm rmp -ivh /backup/compat-libstdc-33-3.2.3-72-e17-x86_64.rpm su - oracle cd $ORACLE_HOME cd sysman/lib cp ins_emagent.mk ins_emagent.mk.bak vi ins_emagent.mk /NMECTL $(MK_EMAGENT_NMECTL) -lnnz11 :wq! su - oracle netca lsnrctl status lsnrctl start su - root netstat -an|grep 1521 以下為數據庫安裝 Enable automatic maintenance tasks Use the Administrative Password for All Accounts Use Common Location for All Database Files Database Files Location:/oradata Specify Fast Recovery Area 閃回 Enable Archiving 歸檔 上面兩種都不開 Enterprise Manager Repository [SYSAUX] 必須打鈎 sga<=物理內存*80%*80% pga<=物理內存*80%*20% SiZing塊大小 問開發 8192 Processes 進程數2000 Character Sets字符集 Choose from the list of character sets ZhS16GBK GBK 16-bit Simplified Chinese Dedicated Server mode //每人一個進程 Shared Server Mode //2000個人一個進程 一般選每人一個進程 Storage Controlfile Options Maximum Datafiles: 8192 Tablespaces SYSAUX Size:>File Size:20480 M Bytes 關閉自動擴展 SYSTEM Size:>File Size:20480 M Bytes 關閉自動擴展 TEMP 20G UNDOTBS1 20G USERS 200M Redo Log Groups 生產環境5組 每組200M Create Database Save as a Database Template Generate Database Creation Scripts 上述三個打鈎 su - oracle lsnrctl status sqlplus "/as sysdba" sqlplus /nolog SQL> conn /as sysdba; or lsnrctl status Listener Parameter File: /Oracle/app/oracle/product/11.2.0/db_1/network/admin/ cd /Oracle/app/oracle/product/11.2.0/db_1/network/admin/ ls cat tnsnames.ora tnsping fghsdb sqlplus /nolog conn sys/oracle@fghsdb as sysdba; conn system/oracle/fghsdb; select open_mode from v$database; select instance_name,status from v$instance; select name from v$datafile; show parameter sga; show parameter pga; su - oracle cd /backup ls unzip p13390677_112040_Linux-x86-64_1of7.zip unzip p13390677_112040_Linux-x86-64_2of7.zip vncserver password Verify: y ps -ef|grep vnc reboot tigervnc cd /backup ls cd database/ ls ./runInstaller -jreLoc /etc/alternatives/jre_1.8.0 rpm -e ksh-20120801-139.el7.x86_64 rpm -ivh --force --nodeps pdksh-5.2.14-30.x86_64.rpm rmp -ivh /backup/compat-libstdc-33-3.2.3-72-e17-x86_64.rpm su - oracle cd $ORACLE_HOME cd sysman/lib cp ins_emagent.mk ins_emagent.mk.bak vi ins_emagent.mk /NMECTL $(MK_EMAGENT_NMECTL) -lnnz11 :wq! su - oracle netca lsnrctl status lsnrctl start su - root netstat -an|grep 1521 1)下載補丁及補丁opatch工具 2)上傳補丁相關文件到服務器解壓 3)停止所有的數據庫服務 4)生產環境有已數據的,備份數據庫的安裝代碼,一定要RMAN物理備份數據庫。 5)安裝opatch工具並打補丁 6)檢查補丁情況 7)啟動數據庫服務 8)測試應用 mv DATABASE\ PATCH\ SET\ UPDATE\ 11.2.0.4.161018/ psu cd psu unzip p24006111_112040_Linux-x86-64.zip unzip p6880880_112000_Linux-x86-64.zip su - oracle lsnrctl stop emctl stop dbconsole sqlplus "/as sysdba" shutdown immediate; ps -ef|grep oracle ps -ef|grep ora_ cd $ORACLE_HOME/ ls cd OPatch ./opatch version cd .. mv OPatch OPatch_old cp -r /backup/psu/OPatch . cd OPatch ./opatch version vi ~/.bash_profile /oracle/app/oracle/product/11.2.0/db_1/OPatch :wq! source ~/.bash_profile cd /backup/ cd psu ls cd 24006111/ opatch prereq CheckConflictAgainstOHWithDetail -ph ./ opatch apply y y y Oracle Home= '/oracle/app/oracle/product/11.2.0/db_1' y 有告警沒關系,沒錯誤就好。 ./opatch version opatch lsinventory cd $ORACLE_HOME/rdbms/admin sqlplus "/as sysdba" startup 粘貼一腳本運行 select action_time,action,comments from registry$history; col COMMENTS format a50 / 最后編譯一下對象。//SQL> shutdown immediate; lsnrctl start cmctl start dbconsole 如果沒用,不要開 --9、Oracle11gR2 for Linux數據庫啟動停止 主機重啟后,需要手工啟動數據庫 lsnrctl start sqlplus "/as sysdba" startup; sqlplus "/as sysdba" shutdown immediate; lsnrctl stop reboot 10、Oracle11gR2基礎維護與EM監控管理 --1)180天密碼過期 select * from dba_profiles where profile='DEFAULT'; alter profile default limit PASSWORD_LIFE_TIME unlimited; select * from dba_profiles where profile='DEFAULT'; --2)關閉審計 show parameter audit; alter system set audit_trail=none scope=spfile; 改完重啟才生效 --3)參數 show parameter sga; show parameter pga; show parameter proc //job 1000 processes 2000 show parameter open alter system set open_cursors=2000 scope=spfile; --4)警告日志 show parameter dump user_dump_list /oracle/app/oracle/diag/rdbms/fghsdb/fghsdb/trace cd /oracle/app/oracle/diag/rdbms/fghsdb/fghsdb/trace ls alert_fghsdb.log more alert_fghsdb.log /ORA- //一般有問題都是ORA開頭的。 --5)EM管理控制台的使用 --6)歸檔日志的設置 cd /oradata ls fghsdb sqlplus "/as sysdba" archive log list; show parameter recovery alter system set db_recovery_file_dest_size=100g; alter system set db_recovery_file_dest='/archive'; show parameter log shutdown immediate; startup mount; alter database archivelog; archive log list; alter database open; alter system switch logfile; cd /oracle/app/oracle/product/11.2.0/db_1/rdbms/admin/archive/ ls FGHSDB cd FGHSDB ls archivelog cd archivelog/ ls 2019_02_28 shutdown immediate; startup mount; alter database noarchivelog; alter database open; archive log list; --7)關閉所有的數據庫服務,備份一次安裝代碼 su - root emctl status dbconsole lsnrctl stop emctl stop dbconsole cd /backup tar zcvf oracle.tar.gz /oracle
