老庫10.2.0.4 rac
新庫11.2.0.4單機,準備搭建standalone
只要10g版本大於10.2.0.2就可以升級到11g
搭建Oracle 11g standalone,同時放10g的數據庫軟件和11g的數據庫軟件
遷移過程:
10g(主)--10g(備)的dg--》swith(10g備庫成主庫)--》10g新主庫update--》11g新主庫
安裝環境準備
1.1修改hosts文件和主機名
以root用戶編輯目標端的/etc/hosts文件:
[root@lzldb ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.100 lzldb
[root@lzldb ~]# vi /etc/sysconfig/network
[root@lzldb ~]# cat /etc/sysconfig/network
# Created by anaconda
HOSTNAME=lzldb
NOZEROCONF=yes
1.2創建用戶與組
創建組oinstall和dba,創建用戶oracle
/usr/sbin/groupadd -g 501 oinstall
/usr/sbin/groupadd -g 502 dba
/usr/sbin/useradd -u 502 -g oinstall -G dba oracle -m -s /bin/bash
/usr/sbin/useradd -u 501 -g oinstall -G dba grid -m -s /bin/bash
echo "123456"|passwd oracle --stdin
echo "123456"|passwd grid --stdin
1.3創建安裝需要的目錄
以root用戶,執行以下命令創建目錄:
mkdir -p /oracle
mkdir -p /oracle/app/grid
mkdir -p /oracle/app/11.2.0/grid
mkdir -p /oracle/app/oracle/product/11.2.0/dbhome_1
以root用戶,執行以下命令更改權限
chown -R grid:oinstall /oracle
chown -R grid:oinstall /oracle/app/11.2.0/grid
chown -R oracle:oinstall /oracle/app/oracle
1.4創建profile
需要準備10g的profile和11g的profile
grid用戶profile
echo "export PATH
export ORACLE_BASE=/oracle/app/grid
export ORACLE_HOME=/oracle/app/11.2.0/grid
export ORACLE_SID=+ASM
export PATH=\$ORACLE_HOME/bin:\$PATH:\$ORACLE_HOME/OPatch
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:\$ORACLE_HOME/lib32:/lib/usr/lib:/usr/local/lib
export TEMP=/tmp
export TMP=/tmp
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export NLS_OS_CHARSET=ZHS16GBK
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
set -o vi
stty erase ^h
stty erase ^?
umask 022">>/home/grid/.bash_profile
cat /home/grid/.bash_profile
oracle用戶10g profile
echo "export PATH
export ORACLE_BASE=/oracle10g/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=lzldb
export PATH=\$ORACLE_HOME/bin:\$PATH:\$ORACLE_HOME/OPatch
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:\$ORACLE_HOME/lib32:/lib/usr/lib:/usr/local/lib
export TEMP=/tmp
export TMP=/tmp
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export NLS_OS_CHARSET=ZHS16GBK
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
set -o vi
stty erase ^h
stty erase ^?
umask 022">>/home/oracle/.bash_profile
cat /home/oracle/.bash_profile
oracle用戶11g profile
echo "export PATH
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=lzldb
export PATH=\$ORACLE_HOME/bin:\$PATH:\$ORACLE_HOME/OPatch
export TNS_ADMIN=\$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:\$ORACLE_HOME/lib32:/lib/usr/lib:/usr/local/lib
export TEMP=/tmp
export TMP=/tmp
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export NLS_OS_CHARSET=ZHS16GBK
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
set -o vi
stty erase ^h
stty erase ^?
umask 022">>/home/oracle/.bash_profile
cat /home/oracle/.bash_profile
1.5ntp同步
ntp略
1.6配置內核參數
fs.file-max = 6815744
kernel.sem = 10000 10240000 10000 1024
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 34359738368
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.wmem_default = 16777216
fs.aio-max-nr = 6194304
vm.dirty_ratio=20
vm.dirty_background_ratio=3
vm.dirty_writeback_centisecs=100
vm.dirty_expire_centisecs=500
vm.swappiness=10
vm.min_free_kbytes=524288
net.core.netdev_max_backlog = 30000
net.core.netdev_budget = 600
vm.nr_hugepages =8200
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
生效
sysctl -p
1.7關閉透明大頁
vi /etc/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
1.8 selinux
cp /etc/selinux/config /etc/selinux/config_`date +"%Y%m%d_%H%M%S"`&& sed -i 's/SELINUX\=enforcing/SELINUX\=disabled/g' /etc/selinux/config
1.9yum源配置
掛載iso鏡像文件
mkdir /cdrom
mount -o loop /tools/rhel-server-7.6-x86_64-dvd.iso /cdrom
配置yum源
[root@YYServer Packages]# cat /etc/yum.repos.d/iso.repo
[redhat]
name=redhat7
baseurl=file:///cdrom
enabled=1
gpgcheck=0
1.10安裝rpm包
yum install -y \
binutils \
compat-libcap1 \
compat-libstdc++-33 \
compat-libstdc++-33 \
gcc \
gcc-c++ \
glibc \
glibc \
glibc-devel \
glibc-devel \
ksh \
libstdc++ \
libstdc++ \
libstdc++-devel \
libstdc++-devel \
libaio \
libaio \
libaio-devel \
libaio-devel \
make \
sysstat \
unzip \
1.11關閉不必要的服務
systemctl stop tuned.service ktune.service firewalld.service postfix.service avahi-daemon.socket avahi-daemon.service atd.service bluetooth.service wpa_supplicant.service accounts-daemon.service atd.service cups.service postfix.service ModemManager.service debug-shell.service rtkit-daemon.service rpcbind.service rngd.service upower.service rhsmcertd.service rtkit-daemon.service ModemManager.service mcelog.service colord.service gdm.service libstoragemgmt.service ksmtuned.service brltty.service
systemctl disable tuned.service ktune.service firewalld.service postfix.service avahi-daemon.socket avahi-daemon.service atd.service bluetooth.service wpa_supplicant.service accounts-daemon.service atd.service cups.service postfix.service ModemManager.service debug-shell.service rtkit-daemon.service rpcbind.service rngd.service upower.service rhsmcertd.service rtkit-daemon.service ModemManager.service mcelog.service colord.service gdm.service libstoragemgmt.service ksmtuned.service brltty.service
1.12 limit限制
echo "
oracle soft nproc 655350
oracle hard nproc 655350
oracle soft nofile 655360
oracle hard nofile 655360
grid soft nproc 655350
grid hard nproc 655350
grid soft nofile 655360
grid hard nofile 655360
oracle soft stack 102400
oracle hard stack 327680
grid soft stack 102400
grid hard stack 327680
oracle soft memlock -1
oracle hard memlock -1
grid soft memlock -1
grid hard memlock -1
root soft memlock -1
root hard memlock -1" >>/etc/security/limits.conf
配置profile
cp /etc/profile /etc/profile_`date +"%Y%m%d_%H%M%S"`
echo "
if [ \$USER = \"oracle\" ] || [ \$USER = \"grid\" ] || [ \$USER = \"root\" ]; then
if [ \$SHELL = \"/bin/ksh\" ]; then
ulimit -p 655350
ulimit -n 655350
else
ulimit -u 655350 -n 655350
fi
fi">>/etc/profile
1.13配置udev
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c2955e3129fd63c49734d32046ff", RUN+="/bin/sh -c 'mknod /dev/asmdata01 b $major $minor; chown grid:oinstall /dev/asmdata01; chmod 0660 /dev/asmdata01'"
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c29652e3c5634168336bb94bd44e", RUN+="/bin/sh -c 'mknod /dev/asmdata02 b $major $minor; chown grid:oinstall /dev/asmdata02; chmod 0660 /dev/asmdata02'"
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c2955f89f5d7a533199275dce385", RUN+="/bin/sh -c 'mknod /dev/asmdata03 b $major $minor; chown grid:oinstall /dev/asmdata03; chmod 0660 /dev/asmdata03'"
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c29c21a0876bf738512713b23ce2", RUN+="/bin/sh -c 'mknod /dev/asmdata04 b $major $minor; chown grid:oinstall /dev/asmdata04; chmod 0660 /dev/asmdata04'"
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c2903beeca1fe91ed9f174eae459", RUN+="/bin/sh -c 'mknod /dev/asmdata05 b $major $minor; chown grid:oinstall /dev/asmdata05; chmod 0660 /dev/asmdata05'"
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c296f5677945354c271315df2c8f", RUN+="/bin/sh -c 'mknod /dev/asmdata06 b $major $minor; chown grid:oinstall /dev/asmdata06; chmod 0660 /dev/asmdata06'"
使udev生效
/sbin/udevadm trigger --type=devices --action=change
/sbin/udevadm control --reload
ls -lrt /dev/asm*
1.14 配置ohasd服務
11g GI在Redhat7上安裝時存在ohasd啓動問題,需要提前配置ohas服務
echo "[Unit]
Description=OracleHigh Availability Services
After=syslog.target
[Service]
ExecStart=/etc/init.d/init.ohasd run >/dev/null 2>&1 Type=simple
Restart=always
[Install]
WantedBy=multi-user.target">/etc/systemd/system/ohasd.service
啓動ohasd服務
systemctl daemon-reload
systemctl enable ohasd.service
systemctl start ohasd.service
standalone安裝
1.15GI軟件安裝
以靜默方式安裝GI軟件
./runInstaller -responseFile /software/grid/response/grid_install.rsp -silent -ignorePrereq -showProgress
其中response文件配置如下:
[root@YYServer app]# grep -v ^# /software/grid/response/grid_install.rsp|grep -v grep
oracle.install.responseFileVersion=/oracle/install/rspfmt_crsinstall_response_schema_v11_2_0
ORACLE_HOSTNAME=YYServer
INVENTORY_LOCATION=/oracle/app/oraInventory
SELECTED_LANGUAGES=en
oracle.install.option=HA_CONFIG
ORACLE_BASE=/oracle/app/grid
ORACLE_HOME=/oracle/app/11.2.0/grid
oracle.install.asm.OSDBA=oinstall
oracle.install.asm.OSOPER=oinstall
oracle.install.asm.OSASM=oinstall
oracle.install.crs.config.gpnp.scanName=
oracle.install.crs.config.gpnp.scanPort=
oracle.install.crs.config.clusterName=Clusteralone1
oracle.install.crs.config.gpnp.configureGNS=false
oracle.install.crs.config.gpnp.gnsSubDomain=
oracle.install.crs.config.gpnp.gnsVIPAddress=
oracle.install.crs.config.autoConfigureClusterNodeVIP=
oracle.install.crs.config.clusterNodes=
oracle.install.crs.config.networkInterfaceList=
oracle.install.crs.config.storageOption=ASM_STORAGE
oracle.install.crs.config.sharedFileSystemStorage.diskDriveMapping=
oracle.install.crs.config.sharedFileSystemStorage.votingDiskLocations=
oracle.install.crs.config.sharedFileSystemStorage.votingDiskRedundancy=NORMAL
oracle.install.crs.config.sharedFileSystemStorage.ocrLocations=
oracle.install.crs.config.sharedFileSystemStorage.ocrRedundancy=NORMAL
oracle.install.crs.config.useIPMI=false
oracle.install.crs.config.ipmi.bmcUsername=
oracle.install.crs.config.ipmi.bmcPassword=
oracle.install.asm.SYSASMPassword=123456
oracle.install.asm.diskGroup.name=data
oracle.install.asm.diskGroup.redundancy=EXTERNAL
oracle.install.asm.diskGroup.AUSize=4
oracle.install.asm.diskGroup.disks=/dev/asmdata01,/dev/asmdata02,/dev/asmdata03
oracle.install.asm.diskGroup.diskDiscoveryString=/dev/asm*
oracle.install.asm.monitorPassword=123456
oracle.install.crs.upgrade.clusterNodes=
oracle.install.asm.upgradeASM=false
oracle.installer.autoupdates.option=
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=
1.16 創建ASM
創建ASM
asmca -silent -configureASM -sysAsmPassword sysPassw0rd -asmsnmpPassword asmsnmpPassw0rd -diskString '/dev/asm*' -diskGroupName DATA -disk '/dev/asm*' -redundancy EXTERNAL
1.17ARCH磁盤組
vi /etc/udev/rules.d/99-oracleasm-permissions.rules
KERNEL=="sd*[!0-9]", ENV{DEVTYPE}=="disk", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d $devnode", RESULT=="36000c29e5a60f5a95f9d86e76eee4636", RUN+="/bin/sh -c 'mknod /dev/asmarch01 b $major $minor; chown grid:oinstall /dev/asmarch01; chmod 0660 /dev/asmarch01'"
/sbin/udevadm trigger --type=devices --action=change
ls -lrt /dev/asm*
create diskgroup ARCH external redundancy disk '/dev/asmarch01';
1.18創建listener
netca -silent -responsefile /oracle/app/11.2.0/grid/assistants/netca/netca.rsp
1.19Oracle DB軟件安裝
./runInstaller -responseFile /software/database/response/db_install.rsp -silent -ignorePrereq -showProgress
Response文件配置如下
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=YYServer
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/oracle/app/oraInventory
SELECTED_LANGUAGES=en
ORACLE_HOME=/oracle/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/oracle/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.EEOptionsSelection=false
oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0
oracle.install.db.DBA_GROUP=oinstall
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=true
oracle.install.db.racOneServiceName=YYServer
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=
oracle.install.db.config.starterdb.SID=
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=123456
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=ASM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=DATA
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
oracle.installer.autoupdates.option=SKIP_UPDATES
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=
1.20升級PSU補丁
替換oracle和grid的OPatch
[grid@YYServer ~]$ opatch version
OPatch Version: 11.2.0.3.19
OPatch succeeded.
[oracle@YYServer 28813878]$ opatch version
OPatch Version: 11.2.0.3.19
OPatch succeeded.
Grid用戶執行生產ocm.rsp:
$ORACLE_HOME/OPatch/ocm/bin/emocmrsp -no_banner -output /tmp/ocm.rsp
Root用戶執行opatch auto:
/oracle/app/11.2.0/grid/OPatch/opatch auto /software/28813878 -ocmrf /tmp/ocm.rsp
auto打gi成功,oracle失敗用root用戶單獨執行oracle的補丁:
/oracle/app/oracle/product/11.2.0/dbhome_1/OPatch/opatch auto /software/28813878 -ocmrf /tmp/ocm.rsp -oh /oracle/app/oracle/product/11.2.0/dbhome_1
查看oracle和grid下補丁信息
[grid@YYServer ~]$ opatch lsinv
Oracle Interim Patch Installer version 11.2.0.3.19
Copyright (c) 2020, Oracle Corporation. All rights reserved.
Oracle Home : /oracle/app/11.2.0/grid
Central Inventory : /oracle/app/oraInventory
from : /oracle/app/11.2.0/grid/oraInst.loc
OPatch version : 11.2.0.3.19
OUI version : 11.2.0.4.0
Log file location : /oracle/app/11.2.0/grid/cfgtoollogs/opatch/opatch2020-05-21_16-00-40PM_1.log
Lsinventory Output file location : /oracle/app/11.2.0/grid/cfgtoollogs/opatch/lsinv/lsinventory2020-05-21_16-00-40PM.txt
--------------------------------------------------------------------------------
Local Machine Information::
Hostname: YYServer
ARU platform id: 226
ARU platform description:: Linux x86-64
Installed Top-level Products (1):
Oracle Grid Infrastructure 11g 11.2.0.4.0
There are 1 products installed in this Oracle Home.
Interim patches (1) :
Patch 28729234 : applied on Thu May 21 15:50:56 CST 2020
Unique Patch ID: 22546711
Patch description: "OCW Patch Set Update : 11.2.0.4.190115 (28729234)"
Created on 8 Nov 2018, 23:01:45 hrs PST8PDT
Bugs fixed:
18328800, 19270660, 18691572, 18508710, 20038451, 21251192, 22162062
20365005, 21232394, 17336871, 17387214, 17750548, 17617807, 14497275
20219458, 17733927, 18180541, 23757020, 18962892, 17292250, 17378618
16759171, 20110156, 17843489, 17065496, 13991403, 21694632, 17273020
22762046, 17336884, 17155238, 17336889, 18261183, 18053580, 20012766
21245437, 20218012, 17013634, 17886392, 20995001, 24422155, 17039197
16317771, 17947785, 10052729, 20340620, 22353346, 16237657, 20317221
18199185, 15917869, 18399991, 20186278, 18024089, 17374271, 16849642
20246071, 20746251, 14270845, 23621494, 20552947, 18414137, 18882642
17001914, 17927970, 14378120, 16346413, 15986647, 17336898, 18068871
21222147, 16206997, 18143836, 21982225, 25490238, 19168690, 18343490
20235511, 21875360, 16613232, 19276791, 17722664, 20440643, 12928658
18226143, 18520351, 16249829, 18952577, 17172091, 18229842, 16076412
18265482, 20676340, 17818075, 20091753, 18231837, 14373486, 17483479
20136892, 20551654, 18120545, 18729166, 13843841, 17405302, 21225209
18709496, 18330979, 18744838, 14525998, 18187697, 17087371, 20531190
20598625, 14385860, 18348155, 19479503, 12928592, 17516024, 18370031
17764053, 19272663, 17551223, 14671408, 18272135, 14207615, 21255373
17500165, 18875012, 14769643, 25656952, 19558324, 18464784, 18848125
19241857, 17955615, 14851828, 14693336, 20315294, 16284825, 17352230
20014326, 17238586, 17089344, 17405605, 17531342, 21327402, 26546632
19398098, 17159489, 17640316, 13823394, 16543190, 22024217, 17983675
20795241, 17481314, 18346135, 17598201, 16281493, 15986311, 17208793
19601468, 18999857, 18700935, 14076173, 18428146, 16709532, 17435488
18352845, 18352846, 20408163, 17592037, 19616601, 17387779, 17391726
14777968, 15851860, 16206882, 20141091, 15832129, 17305100, 20175174
21113068, 19885321, 16901346, 17985714, 25591658, 18536826, 17780903
18752378, 18946768, 16876500, 16875342, 17769597, 19955755, 16429265
18336452, 17273003, 17209968, 25484507, 16988311, 19319357, 20094984
17046460, 17059927, 18053631, 16867761, 18774591, 21442094, 20235486
19359787, 15869775, 17447588, 19642566, 21152052, 16798862, 15920201
--------------------------------------------------------------------------------
OPatch succeeded.
二、搭建Oracle 10g單節點數據庫
2.1安裝10g數據庫軟件
下載patchset,圖形界面安裝
2.2 升級PSU補丁
三、搭建10g Data Guard
3.1修改主庫參數和forcelogging
在1節點,oracle用戶登陸數據庫,執行如下命令:
alter database force logging;
alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(lzldb,lzldb_new)' scope=both sid='*';
alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=lzldb' scope=both sid='*';
alter system set LOG_ARCHIVE_DEST_2='SERVICE=epmsc_new LGWR ASYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=lzldb_new' scope=both sid='*';;
alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=both sid='*';
alter system set REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE scope=both sid='*';
alter system set LOG_ARCHIVE_MAX_PROCESSES=4 scope=both sid='*';
alter system set STANDBY_FILE_MANAGEMENT=AUTO scope=both sid='*';
3.2準備參數文件
10g參數文件
cat /home/oracle/pfile_10g.ora
aq_tm_processes=0
audit_file_dest='/oracle/app/oracle/admin/lzldb/adump'
background_dump_dest='/oracle/app/oracle/admin/lzldb/bdump'
cluster_database=false
compatible='10.2.0.4.0'
control_files='+DATA/lzldb_new/control01.ora', '+ARCH/lzldb_new/control02.ora'
core_dump_dest='/oracle/app/oracle/admin/lzldb/cdump'
db_block_size=8192
pga_aggregate_target=5G
sga_target=20G
sga_max_size=20G
db_domain=''
db_file_multiblock_read_count=16
db_files=4000
db_name='lzldb'
disk_asynch_io=TRUE
dispatchers='(PROTOCOL=TCP) (SERVICE=lzldbXDB)'
job_queue_processes=0
log_archive_format='%t_%s_%r.dbf'
processes=2000
remote_login_passwordfile='exclusive'
resource_limit=TRUE
session_cached_cursors=20
sessions=2205
undo_management='AUTO'
undo_retention=900
undo_tablespace='UNDOTBS1'
db_create_file_dest='+DATA'
user_dump_dest='/oracle/app/oracle/admin/lzldb/udump'
db_file_name_convert='+DATA/lzldb/datafile','+DATA/lzldb_new/datafile','+FRA/lzldb/datafile','+DATA/lisle_new/datafile'
log_file_name_convert='+DATA/lzldb/onlinelog','+DATA/lzldb_new/onlinelog','+FRA/lzldb/onlinelog','+ARCH/lzldb_new/onlinelog'
db_unique_name='lzldb_new'
fal_server='lzldb_new'
fal_client='lzldb'
LOG_ARCHIVE_CONFIG='DG_CONFIG=(lzldb,lzldb_new)'
log_archive_dest_1='LOCATION=+ARCH VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=lzldb_new'
準備11g參數文件
cat /home/oracle/pfile_11g.ora
aq_tm_processes=0
audit_file_dest='/oracle/app/oracle/admin/lzldb/adump'
cluster_database=false
compatible='11.2.0.4.0'
control_files='+DATA/lzldb_new/control01.ora', '+ARCH/lzldb_new/control02.ora'
core_dump_dest='/oracle/app/oracle/admin/lzldb/cdump'
db_block_size=8192
pga_aggregate_target=5G
sga_target=20G
sga_max_size=20G
db_domain=''
db_file_multiblock_read_count=16
db_files=4000
db_name='lzldb'
disk_asynch_io=TRUE
dispatchers='(PROTOCOL=TCP) (SERVICE=lzldbXDB)'
job_queue_processes=0
log_archive_format='%t_%s_%r.dbf'
processes=2000
remote_login_passwordfile='exclusive'
resource_limit=TRUE
session_cached_cursors=20
sessions=2205
undo_management='AUTO'
undo_retention=900
undo_tablespace='UNDOTBS1'
db_create_file_dest='+DATA'
db_unique_name='lzldb_new'
LOG_ARCHIVE_CONFIG='DG_CONFIG=(lzldb,lzldb_new)'
log_archive_dest_1='LOCATION=+ARCH VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=lzldb_new'
3.3備庫環境創建密碼文件
從主庫拷貝密碼文件到備庫
scp $ORACLE_HOME/dbs/orapwlzldb1 192.168.0.100:/oracle10g/app/oracle/product/10.2.0/dbhome_1/dbs/orapwlzldb
3.4 在備庫創建靜態監聽
LISTENER_1522 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100)(PORT = 1522))
)
)
)
SID_LIST_LISTENER_1522 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = lzldb_new)
(ORACLE_HOME = /oracle/app/oracle/product/11.2.0.4/dbhome_1)
(SID_NAME = lzldb)
)
)
3.5 tns
主庫上創建tns
lzldb_new =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.100 )(PORT = 1522))
)
(CONNECT_DATA =
(SERVICE_NAME = lzldb_new)
)
)
3.6 nfs
從nfs上覆制數據到備庫
檢查主庫歸檔日誌
檢查歸檔日誌保留情況,查看歸檔日誌刪除腳本。
lzldb老庫備份任務已失效,但是仍然每天在運行,可用註釋備份任務。由於每天歸檔量不多,但是頻繁在執行刪除歸檔腳本,需要註釋刪除歸檔腳本保障歸檔的連續性。
[oracle@lzldbold autorman]$ crontab -l
#*/4 * * * * sh /home/oracle/enmo/delete_arch.sh > /home/oracle/enmo/delete.log 2>&1
掛載nfs
數據庫datafile大小爲3.7T,申請4T的盤做nfs,用於全庫備份恢復
4T的盤時候用parted進行分區並掛載到/backup
parted /dev/sdi
mklabel gpt
mkpart primary 0 -1
mkfs.xfs /dev/sdi1
mount /dev/sdi1 /backup
nfs配置
[root@lzldb ~]# cat /etc/exports
/backup *(rw,sync,no_root_squash)
備庫安裝nfs服務
[root@lzldb cdrom]# yum install nfs-utils -y
[root@lzldb cdrom]# systemctl start nfs-server
[root@lzldb cdrom]# exportfs -rv
exporting *:/backup
主庫查看nfs映射
[root@lzldb ~]# showmount -e 192.168.0.100
Export list for 192.168.0.100:
/backup *
主庫掛載
mkdir /backup
mount -t nfs -o rw,bg,noac,hard,nointr,rsize=32768,wsize=32768,nolock,proto=tcp,actimeo=0,vers=3,timeo=600 192.168.0.100:/backup /backup
3.7主庫備份數據庫
修改/backup權限
Chown oracle:oinstall /backup -R
Rman全庫備份
$ORACLE_HOME/bin/rman @backup0.sql log=backup0.log
Backup0.sql如下
connect target /
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE MAXSETSIZE TO UNLIMITED;
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;
sql "alter system archive log current";
run{
allocate channel t1 type disk;
allocate channel t2 type disk;
allocate channel t3 type disk;
allocate channel t4 type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
crosscheck backupset;
delete noprompt expired backup;
backup format '/backup/lzldb_full_%s_%p_%t' database plus archivelog delete input;
backup format '/backup/cntrl_%s_%p_%t' current controlfile;
report obsolete;
delete noprompt obsolete;
release channel t1;
release channel t2;
release channel t3;
release channel t4;
}
exit
3.8 controlfile
主庫創建standby control file
在主庫執行
SQL> alter database create standby controlfile as '/backup/controlfile';
備庫恢復控制文件並mount
Restore standby control file from ‘/backup/controlfile’;
Alter database mount;
3.9備庫恢復數據庫
恢復數據文件
run{
Allocate channel c1 type disk;
Allocate channel c2 type disk;
Allocate channel c3 type disk;
Allocate channel c4 type disk;
Allocate channel c5 type disk;
Allocate channel c6 type disk;
Allocate channel c7 type disk;
Allocate channel c8 type disk;
restore database;
Release channel c1;
Release channel c2;
Release channel c3;
Release channel c4;
Release channel c5;
Release channel c6;
Release channel c7;
Release channel c8;
}
3.10啓動到mount
restore standby controlfile from '/backup/controlfile';
alter database mount;
3.11 recover
recover database;
3.12備庫創建standby logfile
alter database add standby logfile thread 1 group 10 '+data' size 500m;
alter database add standby logfile thread 1 group 11 '+data' size 500m;
alter database add standby logfile thread 1 group 12 '+data' size 500m;
alter database add standby logfile thread 1 group 13 '+data' size 500m;
alter database add standby logfile thread 1 group 14 '+data' size 500m;
alter database add standby logfile thread 1 group 15 '+data' size 500m;
alter database add standby logfile thread 1 group 16 '+data' size 500m;
alter database add standby logfile thread 1 group 17 '+data' size 500m;
3.13實時同步
SQL> recover managed standby database using current logfile disconnect;
當備庫應用日誌應用跟主庫一致時,此時可以在備庫的Alert中可以發現如下的日誌:
Archived Log entry 172 added for thread 1 sequence 120443 rlc 905861515 ID 0xb7d9620b dest 2:
Sat Feb 03 10:00:18 2018
Media Recovery Log +ARCH/crmzcdbdg/archivelog/2018_02_03/thread_1_seq_120443.425.967110319
Media Recovery Log +ARCH/crmzcdbdg/archivelog/2018_02_03/thread_2_seq_120050.427.967110321
Media Recovery Waiting for thread 2 sequence 120051 (in transit)
可以將數據庫啓動Adg模式,執行下面命令:
sqlplus "/ as sysdba"<<EOF
recover managed standby database cancel;
alter database open;
recover managed standby database using current logfile disconnect;
exit;
EOF
四、主備切換
停止數據庫job
SQL> alter system set job_queue_processes=0 scope=both sid='*';
關閉原庫監聽
srvctl stop listener
ps -ef|grep tns
檢查主庫數據文件狀態
SQL> select name,status from v$datafile where status not in ('SYSTEM','ONLINE');
檢查當前系統數據庫組件信息
SQL> select comp_name,VERSION,STATUS from dba_registry;
禁止操作系統自動作業計劃
清空回收站
SQL> purge dba_recyclebin
處理分佈式事務
SQL> select * from dba_2pc_pending;
如果有返回行,執行以下sql
SQL> select ' exec DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('||chr(39)||LOCAL_TRAN_ID||chr(39)||');'||chr(10)||'commit;' from dba_2pc_pending;
刪除pump失敗後的表
SQL> select 'drop table '||owner_name||'.'||job_name||';' from dba_datapump_jobs where owner_name in ('SYS','SYSTEM) and state in ('NOT RUNNING')
編譯無效對象
SQL> @?/rdbms/admin/utlrp.sql
SQL> select count(*) from dba_objects where status in ('INVALID');
停止原主庫
SQL> srvctl stop database -d lzldb
強制切換備庫爲主庫
檢查同步情況
SQL> select inst_id,name,value,time_computed,DATUM_TIME,sysdate from gv$dataguard_stats order by inst_id;
關閉DG監聽
lsnrctl stop listener1522
強制切換備庫爲主庫
SQL> alter database recover managed standby database finish;
SQL> alter database commit to switchover to primary;
SQL> shutdown immediate;
SQL> startup mount;
檢查新庫狀態
SQL> select database_role,switchover_status from v$database;
數據檢查
啓動原庫到open read only
SQL> startup mount;
SQL> alter database open read only;
啓動新庫到open
SQL> shutdown immediate;
SQL> startup pfile='/home/oracle/pfile_10g.ora'
五、升級數據庫
重建temp文件
SQL> alter tablespace temp add tempfile '+DATA' size 30720m;
SQL> alter tablespace temp add tempfile '+DATA' size 30720m;
SQL> alter tablespace temp add tempfile '+DATA' size 30720m;
SQL> alter tablespace temp add tempfile '+DATA' size 30720m;
SQL> alter tablespace temp add tempfile '+DATA' size 30720m;
SQL> alter tablespace TEMP drop tempfile '+DATA/lzldb/tempfile/temp3.ora';
SQL> alter tablespace TEMP drop tempfile '+DATA/lzldb/tempfile/temp4.ora';
SQL> alter tablespace TEMP drop tempfile '+DATA/lzldb/tempfile/temp263.819995001';
SQL> alter tablespace TEMP drop tempfile '+DATA/lzldb/tempfile/temp.3231.957638307';
刪除standby redo log
SQL> alter database drop standby logfile group 10;
SQL> alter database drop standby logfile group 11;
SQL> alter database drop standby logfile group 12;
SQL> alter database drop standby logfile group 13;
SQL> alter database drop standby logfile group 14;
SQL> alter database drop standby logfile group 15;
SQL> alter database drop standby logfile group 16;
SQL> alter database drop standby logfile group 17;
執行預升級檢查腳本
SQL> @/home/oracle/enmo/utlu112i.sql
檢查數據的完整性
SQL> @/home/oracle/enmo/dbupgdiag.sql
檢查是否存在介質恢復
SQL> SELECT * FROM v$recover_file;
SQL> SELECT * FROM v$backup WHERE status != 'NOT ACTIVE';
處理分佈式事務
SQL> select * from dba_2pc_pending;
如果有返回行,執行以下sql
SQL> select ' exec DBMS_TRANSACTION.PURGE_LOST_DB_ENTRY('||chr(39)||LOCAL_TRAN_ID||chr(39)||');'||chr(10)||'commit;' from dba_2pc_pending;
檢查SYS和SYSTEM用戶的默認表空間
SQL> SELECT username, default_tablespace FROM dba_users WHERE username in ('SYS','SYSTEM');
檢查METHOD_OPT
SQL> select DBMS_STATS.GET_PARAM('METHOD_OPT') from dual;
DBMS_STATS.GET_PARAM('METHOD_OPT')
-------------------------------------------------------------
FOR COLUMNS ID SIZE 1
如果返回結果如上,執行如下
SQL> sqlexec DBMS_STATS.SET_PARAM('METHOD_OPT','FOR ALL COLUMNS SIZE AUTO');
修改系統爲11g環境
SQL> shutdown immediate;
Vi .bash_profile
. ~/.bash_profile_10g -->~/.bash_profile_11g
cp /etc/oratab.bak /etc/oratab
cp /etc/oraInst.loc.bak /etc/oraInst.loc
啓動數據庫到11g環境
SQL> startup upgrade pfile='/home/oracle/pfile_11g.ora’
執行升級腳本
SQL> @?/rdbms/admin/catupgrd.sql
彙總升級總結
SQL> startup pfile='/home/oracle/pfile_11g.txt'
SQL> @?/rdbms/admin/utlu112s.sql
升級剩餘項
SQL> @?/rdbms/admin/catuppst.sql
編譯無效對象
SQL> @?/rdbms/admin/utlrp.sql
更新oracle text
檢查$ORACLE_HOME/ctx/admin/ctxf102.txt是否存在;
SQL> @?/rdbms/ctx/admin/ctxf102.sql
六、後續工作
創建spfile
SQL> create spfile from pfile='/home/oracle/pfile_11g.ora'
重啓數據庫進行測試
Shutdown immediate
Startup
如果備庫是rac還有把數據庫添加到集羣中管理的操作
有些項目可能需要更換ip,升級完成後可用直接在/etc/hosts中更改