oracle19c+roseha+共享存储

前言

声明:(以下是命令行特殊注明)

提示符

描述

#(ROOT)

表示root用户操作系统命令行

$(ORACLE)

表示oracle用户操作系统命令行

$(GRID)

表示grid用户操作系统命令行

SQL>

表示DB实例sqlplus / as sysdba登陆的SQL交互命令行

SQL(ASM)>

表示ASM实例sqlplus / as sysasm登陆的SQL交互命令行

ASMCMD>

表示asmcmd登陆的交互命令行

RMAN>

表示rman target / 登录的RMAN交互命令行

GGSCI>

表示ggsci登录的OGG交互命令行

整体规划

架构规划 oracle19c + linux + RoseHA 集群拓扑

Oracle 安装方式

安装方式一(本文档采用此方式) 将程序文件安装在本地磁盘,数据文件(数据库文件、控制文件、重做日志文件)放置到共享磁盘

安装方式二 将程序文件和数据文件都安装到共享磁盘

Oracle 的部署步骤

1) 将共享磁盘分别映像到 A 机(活动主机)和 B 机(备用主机)上。两台主机系统缺省对于计划中将要使用的共享磁盘设备上分区的设置需要保持一致,对于共享磁盘设备上各个分区计划的挂载点(mount point)的设定要保持一致。分区的文件系统建议用 ext3 或者 ext4 文件类型,如果共享卷 LUN的磁盘分区大于 1T,推荐共享卷的文件系统采用 ext4 文件类型。

2) 在服务器 A 上对共享磁盘进行分区并格式化,格式化完成后,服务器 B 不需要再次进行格式化,只需将服务器 B 重启即可看到被服务器 A 格式化后的共享磁盘分区设备。因为服务器 A、B 使用的是同一块共享磁盘。

3) 将共享磁盘的分区挂载(mount)在服务器 A 上。注意:同一个时刻只能有一台主机挂载共享磁盘,所以不管是 A 机还是 B 机如果需要手动挂载共享磁盘到本机,都要检查下对方主机是否已经正常卸除(umount)了共享磁盘。确保磁盘阵列在任何时刻都只能被唯一一台主机挂载使用。

4) 按照 Oracle 官方提供的安装配置文文件,分别在活动主机(服务器 A)和 备用主机(服务器 B)上安装 Oracle 所依赖的软件包,并且根据需要修改系统内核参数以及 Oracle 的配置参数,建立 oracle 的用户和组,并且两台服务器上 Oracle 的用户和组的 ID 一致。

5) 由于服务器 A 已经手工挂载了共享磁盘,所以此时先在 A 机上使用 oracle 用户安装 Oracle 数据库,在安装时将 Oracle 的数据文件安装到共享磁盘上,将 Oracle 的程序文件可以安装到本地磁盘上(本文档采用此种方式),也可以安装到共享磁盘上。

6) Oracle 安装完成后,确保 oracle 数据库应用正常,在检查确认完成后,停止 oracle 主服务和Listener 服务(注意:oracle 的相关服务不能设置成随操作系统启动而自动启动)。

7) 将共享磁盘上数据库的“根文件夹/目录”重命名。(说明:由于两台服务器需要分别安装数据库应用,并且安装完成后两台服务器是使用的同一份数据,所以在服务器 A 上安装数据库完成后,需要将共享磁盘中的数据库全部数据移除(建议修改共享磁盘的根文件夹名称:既达到移除数据目的,又进行了数据备份)。

8) 服务器 A 上,卸载/umount 共享磁盘。

9) 参考步骤 3)到步骤 8), 在 B 机上以相同的方式挂载共享磁盘,安装配置 Oracle,创建与 A 机相同的数据库,并手工测试连接 oracle 数据库是否正确,然后停止 Oracle 服务和 Listener 服务,最后卸载 B 机挂载的共享磁盘。

10) B 机卸载共享磁盘后,在 A 机挂载共享磁盘,启动 Oracle 服务,验证 Oracle 服务是否可用。 【备注】如果是 Oracle10g 以前的版本,并且目录(“$ORACLE_HOME/dbs/”)未放在共享磁盘中需要执行此步:将最后安装 Oracle 的主机上 Oracle 的 dbs 子目录中的密码文件 PWD<SID>.ora 拷贝到(先安装 Oracle)主机的相同目录并覆盖原有文件(在覆盖前,请将该目录进行备份)。如果 Oracle 的应用程序和数据库文件都安装在共享磁盘上,可以跳过该操作。

操作系统

  • 操作系统推荐使用RHEL 8.6及以上版本,内核版本大于4.18.0-80。

主机网络

项目名称

节点规划

公共ip地址

10.29.102.5

HETBIDDB1

10.29.102.3

HETBIDDB2

10.29.102.4

  • 主机名允许使用字母、数字和中横线(-),不允许以数字开头,并且建议字母全部使用小写(即使使用大写RAC内部也会转换为小写);
  • /etc/hosts文件必须有127.0.0.1回路地址的解析,且后面不能添加任何无关条目;
  • 如果无需域名解析(主要用于多个SCANIP解析),不建议操作系统配置DNS解析服务;

安装目录

目录名称

规划路径

软件Inventory目录

/opt/app/oraInventory

数据库软件BASE目录

/opt/app/

数据库软件HOME目录

/opt/app/oraXXX/admin/adedb/

数据库软件介质存放目录

/opt/soft

数据库介质

  • 创建介质目录

#(ROOT)

mkdir -p /opt/soft

chmod 775 /opt/src

  • Oracle数据库相关介质,统一上传到 /opt/soft/ 下:

软件类别

文件名称

Database软件

p13390677_112040_Linux-x86-64_1of7.zip

p13390677_112040_Linux-x86-64_2of7.zip

OPatch工具

p6880880_122010_Linux-x86-64_12.2.0.1.42.zip

p6880880_112000_Linux-x86-64_11.2.0.3.38.zip

RU补丁包(包含GI ,DB,OJVM)

p36233126_190000_Linux*.zip (为19.23的RU)

DB ONE-OFF补丁

p33991024_11204220118_Generic.zip

DB PSU补丁

p33560103_112040_Linux-x86-64_220118-combo.zip

  • 我们安装的是 19c GI + 11g DB;
  • 相关安装介质统一上传到/opt/soft目录下;
  • 19C为ORACLE的长周期版本,从2024-4-30日起需要付费的扩展支持服务才能安装更新的RU补丁,扩展支持至2027-4-30结束;
  • 19C GI 推荐安装次新的 RU 补丁,本手册以安装 19.23 RU 补丁为例;
  • 在 LIUNX8 上安装 11g 数据库的要求 PSU 版本为 220118,这个 PSU 版本需购买 MDS 拓展服务才能合法安装;

❑ 在 LIUNX8 上安装 11g 数据库会有大量的文件 link 连接错误,安装时可以跳过忽略这些报错,安装后需要额外应用 33991024 oneoff 补丁修复,然后重新 relink 文件;
❑ compat-libcap1 系统包 LIUNX8 中没有,这里上传 LIUNX7 自带的 compat-libcap1 包进行安装。

基础环境配置

操作系统检查和配置 (两个节点相同操作)

  • 检查操作系统内核

#(ROOT)

uname -a

注:必须要求是x86_64,并且内核版本不低于4.18

  • 修改主机名

#(ROOT)

hostnamectl set-hostname HETBIDDB1

hostnamectl set-hostname HETBIDDB2

注:主机名允许使用小写字母、数字和中横线(-),并且只能以小写字母开头,尽量控制在15个字符以内。

参见MOS文档:Hostname Restriction/Limitations For Database Server (Doc ID 1603775.1)

  • 检查系统内存

#(ROOT)

free -m

  • 检查系统swap

#(ROOT)

swapon -s

swap大小配置参考如下:

RAM

Swap Space

Between 1 GB and 2 GB

1.5 times the size of RAM

Between 2 GB and 16 GB

Equal to the size of RAM

More than 16 GB

16 GB

  • 检查磁盘空间

#(ROOT)

df -h

  • 检查时间和时区

注:保证所有节点时间和时区一致

#(ROOT)

date -R

timedatectl |grep "Time zone"

Time zone: Asia/Shanghai (CST, +0800)

## 如果不是东八区,通过下面命令修改 ##

timedatectl set-timezone "Asia/Shanghai"

配置 /etc/hosts文件

  • 配置 /etc/hosts文件

注:主机名信息需要根据当前环境修改

#(ROOT)

cat >> /etc/hosts <<EOF

10.29.102.3 HETBIDDB1

EOF

cat >> /etc/hosts <<EOF

10.29.102.4 HETBIDDB2

EOF

配置操作系统yum源

  • 光盘挂载方式

#(ROOT)

mount /dev/cdrom /mnt

  • IOS挂载方式

#(ROOT)

mount -o loop /tmp/rhel-8.7-x86_64-dvd.iso /mnt

  • 编写YUM配置文件(也可使用本地网络YUM源)

#(ROOT)

cat > /etc/yum.repos.d/yum.repo<<EOF

[source]

name=yumserver

baseurl=file:///mnt/BaseOS

gpgcheck=0

[AppStream]

name=AppStream

baseurl=file:///mnt/AppStream

gpgcheck=0

EOF

  • YUM源设置生效

#(ROOT)

yum clean all

yum makecache

检查操作系统依赖包

REDHAT LINUX 8 操作系统上安装Oracle 19C RAC需要操作系统安装如下软件包:

  • bc
  • compat-libstdc++-33.x86_64
  • binutils.x86_64
  • elfutils-libelf.x86_64
  • elfutils-libelf-devel.x86_64
  • glibc.x86_64
  • glibc-devel.x86_64
  • ksh
  • libaio.x86_64
  • libaio-devel.x86_64
  • libgcc.x86_64
  • libstdc++.x86_64
  • libstdc++-devel.x86_64
  • libXi.x86_64
  • libXtst.x86_64
  • make.x86_64
  • sysstat.x86_64
  • fontconfig-devel.x86_64
  • libXrender.x86_64
  • libXrender-devel.x86_64
  • libX11.x86_64
  • libXau.x86_64
  • libxcb.x86_64
  • smartmontools.x86_64
  • libnsl.x86_64
  • compat-openssl10
  • libibverbs.x86_64
  • policycoreutils.x86_64
  • policycoreutils-python-utils.noarch
  • net-tools.x86_64
  • librdmacm

参考MOS文档:Requirements for Installing Oracle Database/Client 19c on OL8 or RHEL8 64-bit (x86-64) (Doc ID 2668780.1)

  • 软件包安装

#(ROOT)

yum install -y bc gcc gcc-c++ binutils elfutils-libelf* glibc glibc-devel ksh libaio* libgcc* libstdc++* \

libXi libXtst make sysstat fontconfig-devel* libXrender libXrender-devel libX11 libXau libxcb smartmontools \

libnsl* compat-openssl10 libibverbs policycoreutils* net-tools librdmacm -y

  • 验证包已全部安装

注:下面查询正常应该没有返回结果,如果存在没有成功安装的包,可以yum install单独安装

#(ROOT)

rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' \

bc \

gcc \

binutils.x86_64 \

elfutils-libelf-devel.x86_64 \

elfutils-libelf.x86_64 \

glibc.x86_64 \

glibc-devel.x86_64 \

ksh \

libaio.x86_64 \

libaio-devel.x86_64 \

libgcc.x86_64 \

libstdc++.x86_64 \

libstdc++-devel.x86_64 \

libXi.x86_64 \

libXtst.x86_64 \

make.x86_64 \

sysstat.x86_64 \

fontconfig-devel.x86_64 \

libXrender.x86_64 \

libXrender-devel.x86_64 \

libX11.x86_64 \

libXau.x86_64 \

libxcb.x86_64 \

libnsl.x86_64 \

libibverbs.x86_64 \

net-tools.x86_64 \

policycoreutils.x86_64 \

policycoreutils-python-utils.noarch \

smartmontools.x86_64 \

compat-openssl10 \

librdmacm | grep "not installed"

禁用SELINUX配置

  • 禁用SELINUX配置

#(ROOT)

getenforce

setenforce 0

iptables -F

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

cat /etc/selinux/config

getenforce

Permissive –输出(表示临时关闭)

Disabled –重启服务器后输出

关闭操作系统防火墙

  • 关闭操作系统防火墙

#(ROOT)

systemctl stop firewalld.service

systemctl disable firewalld.service

systemctl status firewalld.service

Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)

Active: inactive (dead)

Docs: man:firewalld(1)

关闭不必要的服务

  • 关闭不必要的服务,停止并禁用某些可能影响数据库稳定运行的操作系统服务

#(ROOT)

systemctl stop tuned.service

systemctl disable tuned.service

systemctl stop ktune.service

systemctl disable ktune.service

systemctl stop postfix.service

systemctl disable postfix.service

systemctl stop avahi-daemon.socket

systemctl disable avahi-daemon.socket

systemctl stop avahi-daemon.service

systemctl disable avahi-daemon.service

systemctl stop bluetooth.service

systemctl disable bluetooth.service

systemctl stop ModemManager.service

systemctl disable ModemManager.service

systemctl stop avahi-dnsconfd.service

systemctl disable avahi-dnsconfd.service

systemctl stop libvirtd.service

systemctl disable libvirtd.service

添加PAM认证模块

  • 添加pam_limits.so模块

#(ROOT)

cat >> /etc/pam.d/login <<EOF

#ORACLE SETTING

session required pam_limits.so

EOF

检查和配置系统参数

修改命令

备注

fs.aio-max-nr = 4194304

系统最大异步IO请求数目

fs.file-max = 6815744

kernel.shmall = 通过右侧命令获取

执行:

echo "`cat /proc/meminfo | grep "MemTotal" | awk '{print $2}'` / (`getconf PAGESIZE` / 1024)" | bc

kernel.shmall = memory size / pagesize (pagesize是OS的,可通过getconf PAGESIZE得知:

kernel.shmmax = 通过右侧命令获取

执行:

echo "`cat /proc/meminfo | grep "MemTotal" | awk '{print $2}'` * 1024 * 0.8" | bc | sed 's#\..*$##'

# kernel.shmmax Recommended: 1/2 memory < shmmax <= memory - 1. Limit max SGA size.

注意,这里的单位是byte,可以通过下面命令计算--此处示例以物理内存的80%进行设置:

kernel.shmmni = 4096

# semaphores: semmsl, semmns, semopm, semmni

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

net.ipv4.ipfrag_high_thresh = 16777216

容易触发BUG,RHEL 6.6+/7.1+需要修改,

参考文档:RHEL 6.6: IPC Send timeout/node eviction etc with high packet reassembles failure (文档 ID 2008933.1)

net.ipv4.ipfrag_low_thresh = 15728640

kernel.randomize_va_space = 0

禁用物理内存地址是否随机分配Address Space Layout Randomization (ASLR)。

Transparent HugePages:RAC环境建议关闭透明大页

vm.swappiness =10

vm.min_free_kbytes= 524288

配置最小保留内存,建议为512MB,如果物理内存超过128GB,按照比例翻倍。

kernel.panic_on_oops = 1

出现OOPS(OS内核错误)系统不倾向于宕机或重启

vm.dirty_background_ratio = 3

vm.dirty_ratio = 10

vm.dirty_writeback_centisecs = 100

vm.dirty_expire_centisecs = 500

  • 计算kernel.shmall、kernel.shmmax

#(ROOT)

## 计算kernel.shmall ##

echo "`cat /proc/meminfo | grep "MemTotal" | awk '{print $2}'` / (`getconf PAGESIZE` / 1024)" | bc

## 计算kernel.shmmax ##

echo "`cat /proc/meminfo | grep "MemTotal" | awk '{print $2}'` * 1024 * 0.8" | bc | sed 's#\..*$##'

  • 加载内核参数

#(ROOT)

vi /etc/sysctl.conf

## VI开始(追加) ##

fs.aio-max-nr = 4194304

fs.file-max = 6815744

kernel.shmall = 上面计算的值

kernel.shmmax = 上面计算的值

kernel.shmmni = 4096

# semaphores: semmsl, semmns, semopm, semmni

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

net.ipv4.ipfrag_high_thresh = 16777216

net.ipv4.ipfrag_low_thresh = 15728640

kernel.randomize_va_space = 0

vm.swappiness =10

vm.min_free_kbytes= 524288

kernel.panic_on_oops = 1

vm.dirty_background_ratio = 3

vm.dirty_ratio = 10

vm.dirty_writeback_centisecs = 100

vm.dirty_expire_centisecs = 500

## VI结束 ##

## 生效 ##

sysctl -p

修改用户资源限制

  • 配置oracle、grid用户资源限制

#(ROOT)

cat >> /etc/security/limits.conf <<EOF

#ORACLE SETTING

* soft memlock unlimited

* hard memlock unlimited

* soft nproc 16384

root soft nproc unlimited

oracle soft nproc 16384

oracle hard nproc 16384

oracle soft nofile 65536

oracle hard nofile 65536

oracle soft stack 10240

grid soft nproc 16384

grid hard nproc 16384

grid soft nofile 65536

grid hard nofile 65536

grid soft stack 10240

EOF

#(ROOT)

cat >> /etc/profile <<EOF

#ORACLE SETTING

if [ \$USER = "oracle" ] || [ \$USER = "grid" ]; then

if [ \$SHELL = "/bin/ksh" ]; then

ulimit -p 16384

ulimit -n 65536

else

ulimit -u 16384 -n 65536

fi

fi

EOF

配置共享磁盘

【重要说明】在配置共享磁盘和应用服务等过程中,两台主机不能同时挂载共享磁盘,需在一台主机

卸载共享磁盘后才能在另一台主机上挂载共享磁盘,以避免共享磁盘的数据遭到破坏。在操作和配置磁盘资源之前,请先备份重要数据

使用multilpath多路径

  • 查看multipath软件是否安装

#(ROOT)

# lsmod |grep dm_multipath

[root@localhost ~]# lsmod | grep dm_multipath

dm_multipath 53248 0

dm_mod 237568 11 dm_multipath,dm_log,dm_mirror

  • 如果模块没有加载成功,使用下面的命令初始化DM:

## ##

#modprobe dm-multipath

#modprobe dm-round-robin

#service multipathd start

#multipath –v2

  • 编辑配置文件

## 生效 ##

# cat /etc/multipath.conf

blacklist {

devnode "^sda"

}

defaults {

user_friendly_names no

}

multipaths {

multipath {

wwid 3600508b4000892b90002a00000050000 #磁盘的WWID

alias comsys-dm0 #映射后的别名,自己命名

path_grouping_policy multibus #路径组策略

path_checker tur #决定路径状态的方法

path_selector "round-robin 0" #选择那一条路径进行下次IO操作

}

multipath {

wwid 3600508b4000892b90002a00000090000

alias comsys-dm1

path_grouping_policy multibus

path_checker tur

path_selector "round-robin 0"

}

multipath {

wwid 3600508b4000892b90002a00000140000

alias comsys-backup

path_grouping_policy multibus

path_checker tur

path_selector "round-robin 0"

}

}

devices {

device {

vendor "HP" #厂商名称,可通过multipath –v3获取到

product "HSV300" #产品型号

path_grouping_policy multibus #默认的路径组策略

getuid_callout "/sbin/scsi_id -g -u -s /block/%n" #获得唯一设备号使用的默认程序

path_checker readsector0 #决定路径状态的方法

path_selector "round-robin 0" #选择那条路径进行下一个IO操作的方法

#failback immediate #故障恢复的模式

#no_path_retry queue #在disable queue之前系统尝试使用失效路径的次数的数值

#rr_min_io 100 #在当前的用户组中,在切换到另外一条路径之前的IO请求的数目

}

}

ps:其中 wwid,vendor,product, getuid_callout这些参数可以通过:multipath -v3命令来获取。如果在/etc/multipath.conf中有设定各wwid别名,别名会覆盖此设定。

  • 生效multipath的别名配置

## 生效 ##

systemctl restart multipathd.service

或者

multipath -r

  • 检查配置结果

## 查看 ##

multipath -l

创建共享文件系统lvm

环境准备存储识别

确保所有节点能看到相同的 SAN 设备:

lsblk | grep san # 检查设备名称(如/dev/sdb、/dev/mapper/mpathc)

multipath -ll # 多路径环境下确认路径聚合

禁用自动激活

# 修改所有节点的 LVM 配置,禁止自动激活 VG:

vi /etc/lvm/lvm.conf

auto_activation_volume_list = [] # 禁用自动激活

use_lvmetad = 0 # 关闭 lvmetad 服务(避免缓存冲突)

创建共享 LVM 卷组

初始化物理卷(PV)

# 在任意一个节点执行(只需一次):

pvcreate /dev/mapper/mpathc

创建共享卷组(VG)

vgcreate vg_shared /dev/mapper/mpathc

设置 VG 为非自动激活

vgchange --setautoactivation n vg_shared

手动切换操作流程

场景:从节点 A 切换到节点 B

在节点 A 卸载文件系统并停用 VG

# 1. 卸载文件系统

umount /mnt/shared

# 2. 停用逻辑卷和卷组

lvchange -an vg_shared/lv_data # 停用 LV

vgchange -an vg_shared # 停用 VG

# 3. 确认 VG 已停用

vgdisplay vg_shared | grep Active # 应显示 "NOT available"

在节点 B 激活 VG 并挂载

# 1. 扫描存储设备

pvscan --cache /dev/mapper/mpathc

# 2. 激活 VG 和 LV

vgchange -ay vg_shared # 激活 VG

lvchange -ay vg_shared/lv_data # 激活 LV(可选,通常 vgchange 已激活)

# 3. 挂载文件系统

mount /dev/vg_shared/lv_data /mnt/shared

# 4. 验证

df -h /mnt/shared

手动启停脚本

由于每次切换比较繁琐,建议使用脚本代替激活停用操作

激活挂载脚本

#!/bin/bash

# 文件名:san_lvm_activate.sh

# 功能:激活VG/LV并挂载文件系统(在目标节点执行)

# 配置区域 ========================================

VG_NAME="vg_shared" # 卷组名称

LV_NAME="lv_data" # 逻辑卷名称

MOUNT_POINT="/oracle" # 挂载点

FS_TYPE="xfs" # 文件系统类型

LOG_FILE="/tmp/san_storage.log" # 日志路径

# 函数定义 ========================================

log() {

echo "[$(date '+%Y-%m-%d %T')] [ACTIVATE] $1" | tee -a $LOG_FILE

}

# 主逻辑 ========================================

log "=== 开始激活流程 ==="

# 步骤1:激活VG

log "正在激活卷组..."

vgchange -ay $VG_NAME &>>$LOG_FILE || { log "错误:VG激活失败"; exit 1; }

# 步骤2:激活LV

log "正在激活逻辑卷..."

lvchange -ay $VG_NAME/$LV_NAME &>>$LOG_FILE || { log "错误:LV激活失败"; exit 2; }

# 步骤3:文件系统检查

log "正在检查文件系统..."

if ! blkid -t TYPE=$FS_TYPE /dev/$VG_NAME/$LV_NAME &>/dev/null; then

case $FS_TYPE in

xfs) xfs_repair /dev/$VG_NAME/$LV_NAME &>>$LOG_FILE ;;

ext4) fsck -p /dev/$VG_NAME/$LV_NAME &>>$LOG_FILE ;;

*) log "警告:未知文件系统类型,跳过检查" ;;

esac

fi

# 步骤4:挂载

log "正在创建挂载点..."

mkdir -p $MOUNT_POINT &>/dev/null

log "正在挂载文件系统..."

mount -t $FS_TYPE /dev/$VG_NAME/$LV_NAME $MOUNT_POINT &>>$LOG_FILE || { log "错误:挂载失败"; exit 3; }

# 最终验证

if grep -q "$MOUNT_POINT" /proc/mounts; then

log "挂载成功!使用 df -h 查看:"

df -h $MOUNT_POINT | tee -a $LOG_FILE

else

log "错误:最终挂载验证失败"

exit 4

fi

卸载停用脚本

#!/bin/bash

# 文件名:san_lvm_unload.sh

# 功能:卸载文件系统并停用VG/LV(在当前节点执行)

# 配置区域 ========================================

VG_NAME="vg_shared" # 卷组名称

LV_NAME="lv_data" # 逻辑卷名称

MOUNT_POINT="/oracle" # 挂载点

LOG_FILE="/tmp/san_storage.log" # 日志路径

FORCE_MODE=0 # 强制模式(0:关闭 1:开启)

# 函数定义 ========================================

log() {

echo "[$(date '+%Y-%m-%d %T')] [UNLOAD] $1" | tee -a $LOG_FILE

}

check_vg_active() {

vgdisplay $VG_NAME | grep -i 'Active' | grep -iq 'yes'

[ $? -eq 0 ] && echo "yes" || echo "no"

}

# 主逻辑 ========================================

log "=== 开始卸载流程 ==="

# 步骤1:检查挂载点

if grep -q "$MOUNT_POINT" /proc/mounts; then

log "正在卸载文件系统..."

umount $MOUNT_POINT &>>$LOG_FILE || { log "错误:卸载失败"; exit 1; }

else

log "文件系统未挂载,跳过卸载"

fi

# 步骤2:停用LV和VG

log "正在停用逻辑卷..."

lvchange -an $VG_NAME/$LV_NAME &>>$LOG_FILE || log "警告:停用LV失败(可能未激活)"

log "正在停用卷组..."

vgchange -an $VG_NAME &>>$LOG_FILE

# 步骤3:二次确认

if [ "$(check_vg_active)" == "yes" ]; then

if [ $FORCE_MODE -eq 1 ]; then

log "强制执行全局停用..."

vgchange -an $VG_NAME --config 'devices { global_filter=["r|.*|"] }' &>>$LOG_FILE

else

log "错误:VG仍处于活动状态!"

exit 2

fi

fi

log "操作完成。最终状态:VG激活=$(check_vg_active)"

关键注意事项

独占访问原则

确保同一时刻只有一个节点激活 VG,可通过以下命令强制释放:

# 在异常情况下强制停用 VG(谨慎使用)

vgchange -an vg_shared --config 'devices { global_filter=["r|/dev/mapper/mpathc|"] }'

文件系统一致性

使用 xfs_repair 或 fsck 检查文件系统:

# 在挂载前检查(尤其异常关机后)

xfs_repair /dev/vg_shared/lv_data

设备名称一致性

建议通过 UUID 或 WWID 挂载,避免依赖 /dev/sdX:

# 获取设备唯一标识

lvdisplay vg_shared/lv_data | grep "LV UUID"

mount /dev/disk/by-uuid/ /mnt/shared

操作验证脚本

#!/bin/bash

# 检查 VG 状态

check_vg_status() {

node=$1

ssh $node "vgdisplay vg_shared | grep -i active"

}

# 检查挂载点

check_mount() {

node=$1

ssh $node "grep '/mnt/shared' /proc/mounts"

}

echo "=== 节点 A 状态 ==="

check_vg_status nodeA

check_mount nodeA

echo "=== 节点 B 状态 ==="

check_vg_status nodeB

check_mount nodeB

创建用户和组

  • 创建Oracle用户和组

注:oracle和grid用户密码RAC安装完成后请自行修改

#(ROOT)

groupadd -g 1001 oinstall

groupadd -g 1002 dba

groupadd -g 1003 oper

useradd -u 1100 -g oinstall -G dba,oper oracle

echo "oracle"|passwd --stdin oracle

chage -M 9999 oracle

  • 验证创建成功

#(ROOT)

id oracle

uid=1100(oracle) gid=1001(oinstall) groups=1001(oinstall),1002(dba),1003(oper),1005(asmdba)

uid=1101(grid) gid=1001(oinstall) groups=1001(oinstall),1002(dba),1004(asmadmin),1005(asmdba),1006(asmoper)

建立安装目录

  • 创建安装目录

#(ROOT)

# 数据库安装路径

mkdir -p /opt/app/ora19c/admin/adedb/

数据文件和日志存放路径: (共享磁盘)

mkdir -p /oracle/adedb/oradata_adedb

mkdir -p /oracle/adedb/redo_adedb

chown -R oracle:oinstall /opt/app/ora19c/admin/adedb/

chown -R oracle:oinstall /oracle

chmod -R 775 /opt/app/ora19c/admin/adedb/

## 修改介质目录权限 ##

chmod -R 775 /opt/src

chown -R oracle:oinstall /opt/src

修改用户环境文件

  • oracle用户设置环境变量

注:ORACLE_SID需要修改为 ADEDB,字符集根据数据库字符集调整(如:AL32UTF8、ZHS16GBK)

#(ROOT)

cat >> /home/oracle/.bash_profile << EOF

# Oracle 19c oracle Environment

#家目录

export ORACLE_BASE=/opt/app/ora19c/admin/adedb/

#软件安装目录

export ORACLE_HOME=/opt/app/database

export ORACLE_SID=ADEDB

export TMP=/tmp

export NLS_LANG=american_america.AL32UTF8

export LIBPATH=\$ORACLE_HOME/lib:\$ORACLE_HOME/lib32

export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$ORACLE_HOME/jdk/jre/lib:\$ORACLE_HOME/network/lib:\$ORACLE_HOME/rdbms/lib

export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$ORACLE_HOME/lib:\$ORACLE_HOME/lib32

export CLASSPATH=\$ORACLE_HOME/jre:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib:\$ORACLE_HOME/network/jlib

export PATH=\$ORACLE_HOME/bin:\$ORACLE_HOME/OPatch:\$HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin:.

umask 022

alias sql='sqlplus / as sysdba'

stty erase ^H

EOF

  • ROOT配置CRSCTL

注:这是为了让root用户可以直接执行crsctl命令

#(ROOT)

cat >> /etc/profile <<EOF

export PATH=/opt/app/ora19c/admin/adedb/bin:$PATH

EOF

重启后检查

重启后验证各种配置没有问题,网络、存储也没用因为重启出现问题

  • 检查透明大页关闭(重启检查项)

#(ROOT)

cat /sys/kernel/mm/transparent_hugepage/enabled

always madvise [never]

  • 检查NUMA关闭(重启检查项)

#(ROOT)

dmesg | grep -i numa

[ 0.000000] Command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-348.el8.x86_64 root=/dev/mapper/rhel-root ro crashkernel=512M numa=off transparent_hugepage=never resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet

[ 0.000000] NUMA turned off

[ 0.000000] Kernel command line: BOOT_IMAGE=(hd0,msdos1)/vmlinuz-4.18.0-348.el8.x86_64 root=/dev/mapper/rhel-root ro crashkernel=512M numa=off transparent_hugepage=never resume=/dev/mapper/rhel-swap rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet

  • 检查SELINUX关闭(重启检查项)

#(ROOT)

getenforce

Disabled –重启服务器后输出

  • 网络检查

注:检查网卡都在,并且可以互ping验证网络没有问题

#(ROOT)

ip a

  • 再次检查时间和时区

#(ROOT)

date -R

timedatectl |grep "Time zone"

Time zone: Asia/Shanghai (CST, +0800)

  • 检查主机名

#(ROOT)

hostname

cat /etc/hosts

00000400

软件安装与配置(图形界面方式)

安装DB软件

解压DB介质

  • 解压DB介质

#(ROOT)

su - oracle

cd /opt/src

unzip V982063-01.zip -d /opt/app/ora19c/admin/adedb/

与补丁一起安装升级

  • 备份Opatch

mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch.bak

  • 押解补丁包

$(GRID)

cd /opt/src

unzip p6880880_122010_Linux-x86-64.zip -d $ORACLE_HOME/

unzip p36582629_190000_Linux-x86-64.zip -d ./p36582629

安装DB软件

在LIUNX上安装19c数据库有两种方式

  1. 直接安装软件
  2. 带补丁一起安装
  • 开始安装

注:如果不是终端调用图形界面,需要提前打开图形界面工具(如Xmanger),还需要设置DISPLAY环境变量,这里指定当前操作电脑的IP地址(如:10.68.0.100)

$(ORACLE)

cd /opt/src

export DISPLAY=10.29.102.16:0.0

./runInstaller # 直接安装

./runInstaller -applyRU 补丁目录/37486199 #带补丁一起安装

  • 步骤1:不勾选“I wish to receive security updates via My Oracle Support”(oracle安全更新),单击“Next”

  • 步骤2:选择“Skip software update”(跳过软件更新), 单击“Next”

  • 步骤3:选择“Install database software only”(只安装数据库软件),单击“Next”

  • 步骤4:选择Single instance database installation”(Single),选择所有节点

Oracle base: 基目录

Software location: 家目录,软件安装

  • 步骤5:单击“Next”

  • 步骤6:安装概要信息,检查无误后单击“Install”

  • 步骤7:等待弹窗,窗口不要关闭,继续后面执行root.sh操作

  • 使用命令 netca 启动配置接口,选择“Listener configuration”,点击“Next”。

  • 添加监听
  • 设置监听
  • 创建数据库实例

使用dbca命令创建实例

此处指定 Oracle 数据的存储路径,一般情况下,该路径即为共享磁盘的挂载点。

3.2.4.执行root.sh脚本

  • 节点执行

#(ROOT)

/opt/app/oracle/product/11.2/db_1/root.sh

Performing root user operation for Oracle 11g

The following environment variables are set as:

ORACLE_OWNER= oracle

ORACLE_HOME= /opt/app/oracle/product/11.2/db_1

Enter the full pathname of the local bin directory: [/usr/local/bin]: <输入回车>

The file "dbhome" already exists in /usr/local/bin. Overwrite it? (y/n)

[n]: y <输入y>

Copying dbhome to /usr/local/bin ...

The file "oraenv" already exists in /usr/local/bin. Overwrite it? (y/n)

[n]: y <输入y>

Copying oraenv to /usr/local/bin ...

The file "coraenv" already exists in /usr/local/bin. Overwrite it? (y/n)

[n]: y <输入y>

Copying coraenv to /usr/local/bin ...

Entries will be added to the /etc/oratab file as needed by

Database Configuration Assistant when a database is created

Finished running generic part of root script.

Now product-specific root actions will be performed.

Finished product-specific root actions.

继续完成图形界面

  • 步骤11-20:单击“OK”继续

  • 步骤12:安装完成,单击“Close”

Exit

应用PSU补丁

3.3.1.升级DB OPatch

注:由于之前已经升级了GI的OPatch,这里只需要再升级DB的OPatch

#(ROOT)

su - oracle

mv $ORACLE_HOME/OPatch $ORACLE_HOME/OPatch.bak

cd /opt/soft

unzip p6880880_112000*.zip -d $ORACLE_HOME/

$ORACLE_HOME/OPatch/opatch version

OPatch Version: 11.2.0.3.33

3.3.2.解压补丁介质

  • 解压补丁介质

注:解压PSU补丁,注意补丁文件为combo类型,包含了grid、database、ojvm三个产品组件的PSU补丁

#(ROOT)

su - oracle

cd /opt/soft/

unzip p33560103_112040_Linux-x86-64_220118-combo.zip

unzip p33991024_11204220118_Generic.zip

3.2.3.应用PSU补丁

  • 应用DB补丁

$(ORACLE)

cd /opt/soft/33560103/33575261/33477185

opatch apply

Do you want to proceed? [y|n]

y <输入y>

User Responded with: Y

All checks passed.

Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.

(Oracle Home = '/opt/app/oracle/product/11.2/db_1')

Is the local system ready for patching? [y|n]

y <输入y>

User Responded with: Y

Backing up files...

Applying sub-patch '17478514' to OH '/opt/app/oracle/product/11.2/db_1'

<省略大部分输出>

Make failed to invoke "/usr/bin/make -f ins_rdbms.mk iplshprof ORACLE_HOME=/opt/app/oracle/product/11.2/db_1 OPATCH_SESSION=apply"....'//usr/lib64/libaio.so.1: undefined reference to `__stack_chk_fail@GLIBC_2.4'

collect2: error: ld returned 1 exit status

make: *** [ins_rdbms.mk:936: /opt/app/oracle/product/11.2/db_1/rdbms/lib/plshprof] Error 1

'

Make failed to invoke "/usr/bin/make -f ins_rdbms.mk idg4pwd ORACLE_HOME=/opt/app/oracle/product/11.2/db_1 OPATCH_SESSION=apply"....'//usr/lib64/libaio.so.1: undefined reference to `__stack_chk_fail@GLIBC_2.4'

collect2: error: ld returned 1 exit status

make: *** [ins_rdbms.mk:1120: /opt/app/oracle/product/11.2/db_1/rdbms/lib/dg4pwd] Error 1

'

Make failed to invoke "/usr/bin/make -f ins_rdbms.mk isetasmgid ORACLE_HOME=/opt/app/oracle/product/11.2/db_1 OPATCH_SESSION=apply"....'/opt/app/oracle/product/11.2/db_1/rdbms/lib/config.o: file not recognized: File truncated

collect2: error: ld returned 1 exit status

make: *** [ins_rdbms.mk:1198: /opt/app/oracle/product/11.2/db_1/rdbms/lib/setasmgid] Error 1

'

The following make actions have failed :

Re-link fails on target "iamdu".

Re-link fails on target "ikfod".

Re-link fails on target "irenamedg".

Re-link fails on target "ikfed".

Re-link fails on target "ioracle".

Re-link fails on target "e2eme".

Re-link fails on target "irman".

Re-link fails on target "proc".

Re-link fails on target "jox_refresh_knlopt ioracle".

Re-link fails on target "iemtgtctl".

Re-link fails on target "ikgmgr".

Re-link fails on target "patchset_opt_all jox_refresh_knlopt ioracle".

Re-link fails on target "iimp".

Re-link fails on target "iexp".

Re-link fails on target "ldapaddmt".

Re-link fails on target "ldapadd".

Re-link fails on target "ldapmodify".

Re-link fails on target "ldapmodifymt".

Re-link fails on target "idgmgrl".

Re-link fails on target "ilsnrctl".

Re-link fails on target "itnslsnr".

Re-link fails on target "nmosudo".

Re-link fails on target "emdctl".

Re-link fails on target "agent".

Re-link fails on target "iplshprof".

Re-link fails on target "idg4pwd".

Re-link fails on target "isetasmgid".

Do you want to proceed? [y|n]

y <输入y>

User Responded with: Y

Composite patch 33477185 successfully applied.

OPatch Session completed with warnings.

Log file location: /opt/app/oracle/product/11.2/db_1/cfgtoollogs/opatch/opatch2023-02-08_13-25-17PM_1.log

OPatch completed with warnings.

注:最后会有一些报错,可以忽略,后面应用33991024补丁可以修复

  • 应用OJVM补丁

$(ORACLE)

cd /opt/soft/33560103/33561250

opatch apply

Do you want to proceed? [y|n]

y <输入y>

User Responded with: Y

All checks passed.

Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.

(Oracle Home = '/opt/app/oracle/product/11.2/db_1')

Is the local system ready for patching? [y|n]

y <输入y>

User Responded with: Y

Backing up files...

Applying interim patch '33561250' to OH '/opt/app/oracle/product/11.2/db_1'

ApplySession: Optional component(s) [ oracle.sqlj, 11.2.0.4.0 ] , [ oracle.sqlj.companion, 11.2.0.4.0 ] not present in the Oracle Home or a higher version is found.

Patching component oracle.javavm.server, 11.2.0.4.0...

Patching component oracle.precomp.common, 11.2.0.4.0...

Patching component oracle.rdbms, 11.2.0.4.0...

Patching component oracle.rdbms.dbscripts, 11.2.0.4.0...

Patching component oracle.javavm.client, 11.2.0.4.0...

Patching component oracle.dbjava.jdbc, 11.2.0.4.0...

Patching component oracle.dbjava.ic, 11.2.0.4.0...

Make failed to invoke "/usr/bin/make -f ins_rdbms.mk ioracle ORACLE_HOME=/opt/app/oracle/product/11.2/db_1 OPATCH_SESSION=apply"....'/opt/app/oracle/product/11.2/db_1/rdbms/lib/config.o: file not recognized: File truncated

collect2: error: ld returned 1 exit status

make: *** [ins_rdbms.mk:822: /opt/app/oracle/product/11.2/db_1/rdbms/lib/oracle] Error 1

'

The following make actions have failed :

Re-link fails on target "ioracle".

Do you want to proceed? [y|n]

y <输入y>

User Responded with: Y

Patch 33561250 successfully applied.

OPatch Session completed with warnings.

Log file location: /opt/app/oracle/product/11.2/db_1/cfgtoollogs/opatch/opatch2023-02-08_13-31-23PM_1.log

OPatch completed with warnings.

注:最后会有一些报错,可以忽略,后面应用33991024补丁可以修复

3.2.4.应用33991024补丁

  • 应用33991024 oneoff补丁

$(ORACLE)

cd /opt/soft/33991024

opatch apply

Do you want to proceed? [y|n]

y <输入y>

User Responded with: Y

All checks passed.

Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.

(Oracle Home = '/opt/app/oracle/product/11.2/db_1')

Is the local system ready for patching? [y|n]

y <输入y>

User Responded with: Y

Backing up files...

Applying interim patch '33991024' to OH '/opt/app/oracle/product/11.2/db_1'

Patching component oracle.rdbms.rsf, 11.2.0.4.0...

Patching component oracle.buildtools.rsf, 11.2.0.4.0...

Patching component oracle.has.db, 11.2.0.4.0...

Patch 33991024 successfully applied.

Log file location: /opt/app/oracle/product/11.2/db_1/cfgtoollogs/opatch/opatch2023-02-08_13-34-17PM_1.log

OPatch succeeded.

3.2.5.检查PSU是否安装成功

  • 检查GI PSU是否安装成功

#(ROOT)

su - grid

$ORACLE_HOME/OPatch/opatch lspatches

36460248;TOMCAT RELEASE UPDATE 19.0.0.0.0 (36460248)

36383196;DBWLM RELEASE UPDATE 19.0.0.0.0 (36383196)

36240578;OCW RELEASE UPDATE 19.23.0.0.0 (36240578)

36233343;ACFS RELEASE UPDATE 19.23.0.0.0 (36233343)

36233263;Database Release Update : 19.23.0.0.240416 (36233263)

  • 检查DB PSU是否安装成功

#(ROOT)

su - oracle

$ORACLE_HOME/OPatch/opatch lspatches

33991024;11204CERT ON OL8: LINKING ERRORS DURING 11204 FOR DB INSTALL ON OL8.2

34412266;OJVM PATCH SET UPDATE 11.2.0.4.221018

34386237;Database Patch Set Update : 11.2.0.4.221018 (34386237)

3.4.Relink二进制文件

在LIUNX8上安装11g数据库会有大量的文件link连接错误,安装时可以跳过忽略这些报错,安装后需要额外应用33991024 oneoff补丁修复,然后重新relink文件

  • Reline二进制文件

$(ORACLE)

$ORACLE_HOME/bin/relink all

writing relink log to: /opt/app/oracle/product/11.2/db_1/install/relink.log

  • 查看日志报错

$(ORACLE)

cat /opt/app/oracle/product/11.2/db_1/install/relink.log | grep -B2 "make: ***"

make[1]: *** [/opt/app/oracle/product/11.2/db_1/sysman/lib/ins_emagent.mk:135: /opt/app/oracle/product/11.2/db_1/sysman/lib/emagent] Error 1

make[1]: Leaving directory '/opt/app/oracle/product/11.2/db_1/sysman/lib'

make: *** [/opt/app/oracle/product/11.2/db_1/sysman/lib/ins_emagent.mk:52: emagent] Error 2

注:重新relink后,还会剩下一个emagent没有解决,这个在liunx7中有对应的解决方案和修复补丁包,但是在liunx8中已经不在适用(如果需要oracle修复需要购买MDS扩展服务);这个会影响EM操作,如果没有使用EM可安全忽略。

参考MOS文档:Not Able To Secure Database Control In OL7 (Doc ID 2181088.1)

配置使两节点程序共同使用共享磁盘的数据文件

修改备节点参数文件指向主节点在共享磁盘的控制文件,可达到主备节点共同使用一套数据文件目的

修改备节点参数文件

  • 关闭主节点数据库,copy spfile文件到备节点

#(ROOT)

show parameter control; 查看控制文件地址

show parameter pfile; 查看参数文件地址

shutdown immediate;

注:pfile为文本文件可以进行编辑修改控制文件地址,spfile为二进制文件不可以进行修改;

  • 修改参数文件中控制文件地址,使其指向共享磁盘 (Linux/windows操作步骤同理),此步骤在需要节点上执行(不需要则跳过)

##修改pfile中控制文件存放路径

vi pfile

*.control_files='D:/APP/ORADATA/CONTROL01.CTL','D:/APP/RECOVE_ARCA/CONTROL02.CTL'

修改为

*.control_files='Z:/control/CONTROL01.CTL','D:/RECOVE_ARCA/CONTROL02.CTL'

  • 复制 pfile文件或者是spfile文件到 备节点 ,同时挂载共享磁盘

#(ROOT)

scp /opt/app/xxxx 192.168.1.10:/opt/app/xxx

startup mount pfile=’xxxxxxx’; # xxxxx 为控制文件地址

show parameter control; 查看控制文件地址

show parameter pfile; 查看参数文件地址

如果无问题创建spfile

create spfile from pfile=’xxxxx/xxxx’;

Show parameter pfile;

Alter database open;

Shutdown immediate;

查看数据文件、日志文件地址

select file#,name from v$dbfile;

select group#,member from v$logfile;

## 设置数据库归档日志

archive log list;

alter system set log_archive_dest_1='location=Z:\arch';

alter database archivelog;

Linux 修改权限 oracle.oinstall 权限

windows复制控制文件到新地址,并修改控制文件用户组,对比源控制文件用户组进行添加

CONTROL01.CTL右键属性->安全->编辑->添加->高级->立即查找->点击ORACLEsvrfv->确定->确定->权限都选(完全控制、修改、读取和执行、列出、读取、写入)

## 关库状态下创建spfile,并启动数据库到mount

create spfile from pfile='D:/文件路径';

startup mount;

查看参数文件和控制文件地址

show parameter pfile;

show parameter control;

迁移数据文件 (此步骤有需要才可以执行)

## rman中执行复制数据文件,即copy

rman target /

copy datafile 'D:/APP/oradata/orcl/system01.dbf' to 'Z:/oradata/orcl/system01.dbf';

copy datafile 'D:/APP/oradata/orcl/sysaux01.dbf' to 'Z:/oradata/orcl/sysaux01.dbf';

copy datafile 'D:/APP/oradata/orcl/users01.dbf' to 'Z:/oradata/orcl/users01.dbf';

copy datafile 'D:/APP/oradata/orcl/example01.dbf' to 'Z:/oradata/orcl/example01.dbf';

copy datafile 'D:/APP/oradata/orcl/system01.dbf' to 'Z:/oradata/orcl/system01.dbf';

exit

windows中复制redo日志到新目录,并修改redo用户组,对比源控制文件用户组进行添加

redolog右键属性->安全->编辑->添加->高级->立即查找->点击ORACLEsvrfv->确定->确定->权限都选(完全控制、修改、读取和执行、列出、读取、写入)

sqlplus / as sysdba

alter database rename file 'D:/APP/oradata/orcl/system01.dbf' to 'Z:/oradata/orcl/system01.dbf';

alter database rename file 'D:/APP/oradata/orcl/sysaux01.dbf' to 'Z:/oradata/orcl/sysaux01.dbf';

alter database rename file 'D:/APP/oradata/orcl/users01.dbf' to 'Z:/oradata/orcl/users01.dbf';

alter database rename file 'D:/APP/oradata/orcl/example01.dbf' to 'Z:/oradata/orcl/example01.dbf';

alter database rename file 'D:/APP/oradata/orcl/redo01.log' to 'Z:/oradata/orcl/redo01.log';

alter database rename file 'D:/APP/oradata/orcl/redo02.log' to 'Z:/oradata/orcl/redo02.log';

alter database rename file 'D:/APP/oradata/orcl/redo03.log' to 'Z:/oradata/orcl/redo03.log';

查看数据文件、日志文件地址

select file#,name from v$dbfile;

select group#,member from v$logfile;

## 打开数据库

alter database open;

## 修改临时表空间的临时文件到新目录

select * from dba_temp_files; --查看临时表空间临时文件地址

alter tablespace temp add tempfile 'Z:/ORADATA/ORCL/TEMP01.dbf' size 1024M autoextend on maxsize 32704M; --新目录增加临时数据文件

alter database tempfile 'D:/APP/oradata/orcl/TEMP01.dbf' drop; --删除旧的数据文件

```

清理软件重装

如果安装过程出现无法解决的问题时,可以选择清理软件重装

  • 强制关闭集群

#(ROOT)

crsctl stop crs -f

ps -ef | grep grid

ps -ef | grep oracle

  • 删除文件

#(ROOT)

rm -rf /etc/ora*

rm -rf /opt/ora*

rm -rf /usr/local/ora*

rm -rf /opt/ORCLfmap

rm -rf /etc/oraInst.loc

rm -rf /opt/ORCLfmap

rm -f /etc/init.d/init.cssd

rm -f /etc/init.d/init.crs

rm -f /etc/init.d/init.crsd

rm -f /etc/init.d/init.evmd

rm -f /etc/rc2.d/K96init.crs

rm -f /etc/rc2.d/S96init.crs

rm -f /etc/rc3.d/K96init.crs

rm -f /etc/rc3.d/S96init.crs

rm -f /etc/rc5.d/K96init.crs

rm -f /etc/rc5.d/S96init.crs

rm -rf /etc/oracle/scls_scr

rm -f /etc/inittab.crs

rm -f /etc/ohasd

rm -f /etc/oraInst.loc

rm -rf /tmp/.oracle

rm -rf /tmp/ora*

rm -rf /var/tmp/.oracle

rm -rf /tmp/CVU*

rm -rf /tmp/Ora*

rm -rf /home/grid/.oracle

rm -rf /usr/app/*

rm -rf /etc/init.d/init.ohasd

rm -rf /usr/local/bin/dbhome

rm -rf /usr/local/bin/oraenv

rm -rf /usr/local/bin/coraenv

rm -rf /etc/oratab

rm -rf /tmp/*oracle*

rm -rf /tmp/OraInst*

rm -rf /etc/systemd/system/oracle*

  • 删除oracle目录

#(ROOT)

rm -rf /opt/app

  • dd磁盘

#(ROOT)

dd if=/dev/zero of= /dev/mapper/oraocr01 bs=1024 count=5000

dd if=/dev/zero of= /dev/mapper/ oraarch01 bs=1024 count=5000

dd if=/dev/zero of= /dev/mapper/ oradata01 bs=1024 count=5000

dd if=/dev/zero of= /dev/mapper/ oradata02 bs=1024 count=5000

  • 确认磁盘清空

#(ROOT)

hexdump -n 1024 -C /dev/mapper/oraocr01

hexdump -n 1024 -C /dev/mapper/ oraarch01

hexdump -n 1024 -C /dev/mapper/ oradata01

hexdump -n 1024 -C /dev/mapper/ oradata02

## 空盘输出如下 ##

00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

*

00000400

  • 重启操作系统

#(ROOT)

reboot

  • 重新创建oracle目录

#(ROOT)

mkdir -p /opt/app/19/grid

mkdir -p /opt/app/grid

mkdir -p /opt/app/oracle/product/11.2/db_1

chown -R grid:oinstall /opt/app

chown -R oracle:oinstall /opt/app/oracle

chmod -R 775 /opt/app

posted @ 2025-04-27 15:12  小明123_123  阅读(316)  评论(1)    收藏  举报