Linux安装Oracle Database 19c RAC

2023-11-20

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/networken/article/details/120788623

Linux安装Oracle Database 19c RAC

Oracle Real Application Clusters(RAC)允许客户跨多台服务器运行单个Oracle数据库,以便在访问共享存储的同时最大限度地提高可用性并实现水平可扩展性。连接到Oracle RAC实例的用户会话可以在停机期间进行故障切换并安全地更新更改,而不会对最终用户应用程序进行任何变更,从而对最终用户隐藏停机的影响。

在这里插入图片描述

rack安装参考:https://docs.oracle.com/en/database/oracle/oracle-database/19/rilin/index.html

rac管理员参考:https://docs.oracle.com/en/database/oracle/oracle-database/19/racad/index.html

grid安装参考:https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/index.html

准备软件包

安装环境所需的软件:

  • LINUX.X64_193000_grid_home.zip
  • LINUX.X64_193000_db_home.zip

软件包下载地址:https://www.oracle.com/database/technologies/oracle19c-linux-downloads.html

安装环境准备

  • 操作系统:CentOS 7.8 minimal
  • CPU/内存: 2C8G
  • 服务器数量:2台

备注:无特殊说明后续操作在所有节点执行。

节点网络规划

参考:https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/about-oracle-grid-infrastructure-network-configuration-options.html

准备2台服务器部署RAC集群,每个节点至少需要2块网卡:

主机名 ens33-public-ip ens37-private-ip vip scan ip
node1 192.168.93.20 192.168.13.20 192.168.93.30 192.168.93.40 192.168.93.41
node2 192.168.93.21 192.168.13.21 192.168.93.31 192.168.93.42

网卡及IP规划说明:

  • 由于使用vmware workstation,ens33网卡使用NAT模式,ens37网卡使用Hostonly模式。
  • 公共网络接口ens33,用户和应用程序服务器在该接口上连接以访问数据库服务器上的数据;
  • 专用网络接口ens37,与公网IP不在同一个网段,用于节点间通信;
  • 每个节点都有一个VIP,与公网IP在同一个网段,VIP会绑定到对应节点的public网卡上;
  • SCAN VIP配置1~3个,与公网IP在同一个网段,为了防止单点故障推荐3个,scan ip会分配到不同节点的public网卡上;

节点磁盘组规划

参考:https://docs.oracle.com/en/database/oracle/oracle-database/19/ladbi/identifying-storage-requirements-for-oracle-automatic-storage-management.html

规划3个ASM磁盘组,每个磁盘组包含一至多块磁盘,其中/dev/sda为系统盘,ASM磁盘规划如下:

磁盘组名称 磁盘名称 磁盘大小 ASM磁盘名称 作用 冗余
OCR /dev/sdb 10G asm-ocr1 OCR/Voting File EXTERNAL
DATA /dev/sdc 40G asm-data1 Data Files EXTERNAL
FRA /dev/sdd 20G asm-fra1 Fast Recovery area EXTERNAL

磁盘组说明:

  • OCR:OCR和表决盘(OCR/Voting File)
  • DATA:数据盘(Data Files)
  • FRA:归档和快速恢复区(Fast Recovery area)

每个磁盘组可以包含多块磁盘提供冗余,需要的最少磁盘数由不同冗余模式决定:

  • External级别,对于每个extend(asm的最小数据单元)只存储一份,没有做冗余,最少需要一块磁盘(无需failure group),这种情况一般是依靠硬件存储级别做RAID实现;
  • Normal级别,每个extend只有一份镜像冗余,asm使用2份镜像存储,最少需要两块磁盘(两个failure group),有效磁盘空间是所有磁盘设备大小之和的1/2;
  • High冗余级别,每个extend有两份镜像冗余。asm使用3份镜像存储,最少需要三块磁盘(三个failure group),有效磁盘空间是所有磁盘设备大小之和的1/3;
  • Flex redundancy:一个Flex冗余度的ASM磁盘组可以被设置为任意保护模式(3副本、2副本、无保护),默认情况下,Flex冗余度的磁盘组使用2副本模式。

最终虚拟机配置如下:
在这里插入图片描述

创建共享磁盘

使用vmware workstation工具创建共享磁盘,以管理员身份运行powershell,执行以下命令:

cd "C:\Program Files (x86)\VMware\VMware Workstation"

./vmware-vdiskmanager.exe -c -s 10GB -t 4 sharedisk01.vmdk
./vmware-vdiskmanager.exe -c -s 40GB -t 4 sharedisk02.vmdk
./vmware-vdiskmanager.exe -c -s 20GB -t 4 sharedisk03.vmdk

各个虚拟机节点使用相同的方法添加共享磁盘,选择编辑虚拟机->添加磁盘->使用现有虚拟磁盘->选择现有磁盘->保持现有格式。
在这里插入图片描述
磁盘默认路径:

C:\Program Files (x86)\VMware\VMware Workstation

根据上述步骤完成其他磁盘的添加,启动虚拟机前需要编辑虚拟机配置文件(比如:CentOS78-93.20.vmx):
在这里插入图片描述
文件中末尾加入以下内容后,才可以正常打开虚拟机:

disk.locking = "false"
scsi1.shareBus = "VIRTUAL"
disk.EnableUUID = "TRUE"

查看磁盘信息

[root@localhost ~]# lsscsi
[0:0:0:0]    disk    VMware,  VMware Virtual S 1.0   /dev/sda 
[0:0:1:0]    disk    VMware,  VMware Virtual S 1.0   /dev/sdb 
[0:0:2:0]    disk    VMware,  VMware Virtual S 1.0   /dev/sdc 
[0:0:3:0]    disk    VMware,  VMware Virtual S 1.0   /dev/sdd

配置/etc/hosts文件

配置主机名

# node1
hostnamectl set-hostname node1

# node2
hostnamectl set-hostname node2

编辑/etc/hosts文件,增加以下内容

cat >/etc/hosts<< EOF
# Public
192.168.93.20 node1 node1.racdb.local
192.168.93.21 node2 node2.racdb.local

# Private
192.168.13.10 node1-priv node1-priv.racdb.local
192.168.13.11 node2-priv node2-priv.racdb.local

# Virtual
192.168.93.30 node1-vip node1-vip.racdb.local
192.168.93.31 node2-vip node2-vip.racdb.local

# SCAN
192.168.93.40 node-cluster-scan node-cluster-scan.racdb.local
192.168.93.41 node-cluster-scan node-cluster-scan.racdb.local
192.168.93.42 node-cluster-scan node-cluster-scan.racdb.local
EOF

为第二块网卡配置静态IP地址

# node1节点
nmcli con mod "Wired connection 1" \
  ipv4.method manual \
  con-name ens37 \
  ipv4.addresses 192.168.13.10/24 \
  connection.autoconnect yes

nmcli device reapply ens37

# node2节点
nmcli con mod "Wired connection 1" \
  ipv4.method manual \
  con-name ens37 \
  ipv4.addresses 192.168.13.11/24 \
  connection.autoconnect yes

nmcli device reapply ens37

查看节点IP地址信息

[root@node1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b6:45:44 brd ff:ff:ff:ff:ff:ff
    inet 192.168.93.20/24 brd 192.168.93.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::f7e2:c660:346d:b6d5/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b6:45:4e brd ff:ff:ff:ff:ff:ff
    inet 192.168.13.10/24 brd 192.168.13.255 scope global noprefixroute ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::71e:6f8e:388b:9bec/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

配置时间同步

使用chrony从公网同步时间

yum install -y chrony
systemctl enable --now chronyd

配置selinux及防火墙

关闭selinux

sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/sysconfig/selinux
setenforce permissive

关闭firewalld防火墙

systemctl disable --now firewalld

安装依赖包

参考:

https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/supported-red-hat-enterprise-linux-7-distributions-for-x86-64.html

https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/installation-requirements-for-programming-environments-for-linux-x86-64.html

Oracle Database 19c 需要一些软件包,在继续之前使用yum命令安装这些包。

yum install -y \
  bc \
  binutils \
  compat-libcap1 \
  compat-libstdc++-33 \
  elfutils-libelf \
  elfutils-libelf-devel \
  fontconfig-devel \
  glibc \
  glibc-devel \
  ksh \
  libaio \
  libaio-devel \
  libX11 \
  libXau \
  libXi \
  libXtst \
  libXrender \
  libXrender-devel \
  libgcc \
  libstdc++ \
  libstdc++-devel \
  libxcb \
  make \
  smartmontools \
  sysstat \
  net-tools \
  unzip \
  nfs-utils \
  gcc \
  gcc-c++

创建相关用户组

创建用户及组

# 创建用户组
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
groupadd -g 54330 racdba

# 创建用户并加入组
useradd -u 54321 -g oinstall -G dba,asmdba,backupdba,dgdba,kmdba,racdba,oper oracle 
useradd -u 54331 -g oinstall -G dba,asmdba,asmoper,asmadmin,racdba grid

# 设置用户密码
echo "oracle" | passwd oracle --stdin
echo "grid" | passwd grid --stdin

创建相应目录

参考:https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/about-creating-oracle-base-oracle-home-directories.html

mkdir -p /u01/app/19.3.0/grid
mkdir -p /u01/app/grid
mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1

chown -R grid:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01/

使能shmem

参考:https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/server-configuration-checklist-for-oracle-grid-infrastructure.html

所有节点分别执行(预检查要求):

cat >>/etc/fstab<<EOF
tmpfs /dev/shm tmpfs defaults,size=4G 0 0
EOF

配置NOZEROCONF

所有节点分别执行(预检查要求):

cat >>/etc/sysconfig/network<<EOF
NOZEROCONF=yes
EOF

登录配置

cat >>/etc/pam.d/login<<EOF
#ORACLE SETTING
session required pam_limits.so
EOF

配置内核参数

参考:https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/changing-kernel-parameter-values.html

# 配置以下内核参数
cat >/etc/sysctl.d/97-oracledatabase-sysctl.conf<<EOF
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
EOF

# 使配置生效
sysctl --system

为用户设置安全限制

参考:https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/checking-resource-limits-for-oracle-software-installation-users.html

为oracle及grid用户配置安全限制

cat >/etc/security/limits.d/30-oracle.conf<<EOF
grid  soft  nproc 16384
grid  hard  nproc 16384
grid  soft  nofile 1024
grid  hard  nofile 65536
grid  soft  stack 10240
grid  hard  stack 32768
oracle soft nproc 16384
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack  10240
oracle hard stack  32768
oracle hard memlock 3145728
oracle soft memlock 3145728
EOF

cat>>/etc/security/limits.d/20-nproc.conf<<EOF
* - nproc 16384
EOF

修改用户profile

注意修改ORACLE_HOSTNAME及ORACLE_SID变量,node1节点与node2节点不同。

其中grid用户配置,节点1的ORACLE_SID=+ASM1,节点2的ORACLE_SID=+ASM1。

node1节点配置

# grid用户
cat>>/home/grid/.bash_profile<<'EOF'
# oracle grid
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=node1.racdb.local
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export ORACLE_SID=+ASM1
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
EOF

# oracle用户
cat>>/home/oracle/.bash_profile<<'EOF'
# oracle
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=node1.racdb.local
export ORACLE_UNQNAME=racdb
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORACLE_SID=racdb1
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
EOF

node2节点配置

# grid用户
cat>>/home/grid/.bash_profile<<'EOF'
# oracle grid
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=node2.racdb.local
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/19.3.0/grid
export ORACLE_SID=+ASM2
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
EOF

# oracle用户
cat>>/home/oracle/.bash_profile<<'EOF'
# oracle
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=node2.racdb.local
export ORACLE_UNQNAME=racdb
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORACLE_SID=racdb2
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
EOF

节点免密配置

节点node1配置:

su - grid
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id node2
 
su - oracle
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id node2

节点node2配置:

su - grid
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id node1
 
su - oracle
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
ssh-copy-id node1

关闭Transparent HugePages

参考:https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/disabling-transparent-hugepages.html

使用systemd管理hugepage

# 创建systemd文件
cat > /etc/systemd/system/disable-thp.service <<EOF

[Unit]
Description=Disable Transparent Huge Pages (THP)

[Service]
Type=simple
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"

[Install]
WantedBy=multi-user.target
EOF

# 启动服务
systemctl enable --now disable-thp

配置共享存储

参考:https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/configuring-disk-devices-to-use-oracle-asmlib.html

下载RHEL7的oracleasmlib以及oracleasm-support,所有节点都要安装跟配置。

下载地址:https://www.oracle.com/linux/downloads/linux-asmlib-rhel7-downloads.html

yum install -y kmod-oracleasm

wget https://download.oracle.com/otn_software/asmlib/oracleasmlib-2.0.12-1.el7.x86_64.rpm
wget https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracleasm-support-2.1.11-2.el7.x86_64.rpm
yum -y localinstall oracleasmlib-2.0.12-1.el7.x86_64.rpm
yum -y localinstall oracleasm-support-2.1.11-2.el7.x86_64.rpm

#初始化
oracleasm init

#修改配置
oracleasm configure -e -u grid -g asmadmin

查看配置

[root@node1 ~]# oracleasm configure
ORACLEASM_ENABLED=true
ORACLEASM_UID=grid
ORACLEASM_GID=asmadmin
ORACLEASM_SCANBOOT=true
ORACLEASM_SCANORDER=""
ORACLEASM_SCANEXCLUDE=""
ORACLEASM_SCAN_DIRECTORIES=""
ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false"

仅在node1节点执行,进行磁盘分区:

parted /dev/sdb -s -- mklabel gpt mkpart primary 1 -1
parted /dev/sdc -s -- mklabel gpt mkpart primary 1 -1
parted /dev/sdd -s -- mklabel gpt mkpart primary 1 -1

确认分区情况

[root@node1 ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   70G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   69G  0 part 
  ├─centos-root 253:0    0 60.1G  0 lvm  /
  ├─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0    5G  0 lvm  /home
sdb               8:16   0   10G  0 disk 
└─sdb1            8:17   0   10G  0 part 
sdc               8:32   0   40G  0 disk 
└─sdc1            8:33   0   40G  0 part 
sdd               8:48   0   20G  0 disk 
└─sdd1            8:49   0   20G  0 part

仅在node1节点执行,使用oracleasm创建磁盘,根据你的实际盘符名:

oracleasm createdisk OCR1 /dev/sdb1
oracleasm createdisk DATA1 /dev/sdc1
oracleasm createdisk FRA1 /dev/sdd1

在所有节点执行

oracleasm scandisks
oracleasm listdisks

执行结果

[root@node1 ~]# oracleasm listdisks
DATA1
FRA1
OCR1

查看磁盘设备

[root@node1 ~]# ls -l /dev/oracleasm/disks
total 0
brw-rw---- 1 grid asmadmin 8, 33 Oct 18 22:21 DATA1
brw-rw---- 1 grid asmadmin 8, 49 Oct 18 22:21 FRA1
brw-rw---- 1 grid asmadmin 8, 17 Oct 18 22:21 OCR1

开始安装GRID

在第一个节点node1执行。

使用ssh登陆到grid用户,将下载好的安装包LINUX.X64_193000_grid_home.zip上传到$GRID_HOME目录。

解压到$ORACLE_HOME目录下

[grid@node1 ~]$ unzip LINUX.X64_193000_grid_home.zip -d $ORACLE_HOME

将cvuqdisk rpm包复制到集群上的每个节点

参考:https://docs.oracle.com/en/database/oracle/oracle-database/19/cwlin/installing-the-cvuqdisk-rpm-for-linux.html

scp $ORACLE_HOME/cv/rpm/cvuqdisk-1.0.10-1.rpm root@node2:/tmp

切换回root用户安装cvuqdisk rpm包。

# node1
CVUQDISK_GRP=oinstall; export CVUQDISK_GRP
rpm -iv /u01/app/19.3.0/grid/cv/rpm/cvuqdisk-1.0.10-1.rpm

# node2
CVUQDISK_GRP=oinstall; export CVUQDISK_GRP
rpm -iv /tmp/cvuqdisk-1.0.10-1.rpm

由于使用最小安装的操作系统,无图形界面,node1节点安装xorg-x11,并在windows中安装xming以调用GUI界面:

yum install -y xorg-x11-xinit

# 重新登录会话生效
exit

SecureCRT配置勾选X11转发(xshell等其他ssh工具配置类似):
在这里插入图片描述
windows中下载安装Xming Server,直接启动即可,SecureCRT将转发图形界面到Xming Server显示。
在这里插入图片描述

node1节点以grid用户身份登陆,转到ORACLE_HOME目录

[grid@racdb1:/home/grid]$ cd $ORACLE_HOME

在node1命令行界面执行以下命令开始安装grid

./gridSetup.sh

需要注意,如果你是远程登陆,必须直接以grid用户登录,才可以远程调用图形化窗口,不可以使用root切换到grid。
![(…/images/screenshot_1634104778919.png)]](https://img-blog.csdnimg.cn/6f4faf2d86ca4228b4c9f4671f830a03.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAd2lsbGJsb2c=,size_20,color_FFFFFF,t_70,g_se,x_16)
集群配置
在这里插入图片描述

SCAN NAME使用/etc/hosts文件中的SCAN NAME
在这里插入图片描述
添加node2节点

在这里插入图片描述

查看添加的节点

在这里插入图片描述

配置网络接口
在这里插入图片描述

配置存储选项
在这里插入图片描述

配置GIMR
在这里插入图片描述

选择Change Discovery Path
在这里插入图片描述
路径配置为:

/dev/oracleasm/disks/

配置密码Oracle#123
在这里插入图片描述

配置Failure Isolation
在这里插入图片描述

配置management options
在这里插入图片描述
配置系统组
在这里插入图片描述

配置安装选项
在这里插入图片描述

配置Inventory
在这里插入图片描述

配置root脚本
在这里插入图片描述
安装前检查
在这里插入图片描述
查看配置信息
在这里插入图片描述

自动执行脚本
在弹出用root用户执行脚本的时候,手动用root用户,在两个节点上执行root.sh脚本,先节点一执行完,再节点二执行:

#node1上执行
/u01/app/oraInventory/orainstRoot.sh
#node1上执行
/u01/app/19.3.0/grid/root.sh
#node2上执行
/u01/app/19.3.0/grid/root.sh

执行完成后,在下图中选是;
在这里插入图片描述

安装完成,失败项可以忽略
在这里插入图片描述
获取特定资源的状态和配置信息

[grid@node1 grid]$ crsctl status resource -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.chad
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.net1.network
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.ons
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       node2                    STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       node1                    STABLE
ora.node1.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.node2.vip
      1        ONLINE  ONLINE       node2                    STABLE
ora.qosmserver
      1        ONLINE  ONLINE       node1                    STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       node2                    STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       node1                    STABLE
--------------------------------------------------------------------------------

检查本地服务器上的 Oracle High Availability Services 和 Oracle Clusterware 堆栈的状态

[grid@node1 grid]$ crsctl check crs
CRS-4638: Oracle High Availability Services is online
CRS-4537: Cluster Ready Services is online
CRS-4529: Cluster Synchronization Services is online
CRS-4533: Event Manager is online

查看node1 IP信息

[root@node1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b6:45:44 brd ff:ff:ff:ff:ff:ff
    inet 192.168.93.20/24 brd 192.168.93.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.93.30/24 brd 192.168.93.255 scope global secondary ens33:1
       valid_lft forever preferred_lft forever
    inet 192.168.93.41/24 brd 192.168.93.255 scope global secondary ens33:3
       valid_lft forever preferred_lft forever
    inet 192.168.93.42/24 brd 192.168.93.255 scope global secondary ens33:4
       valid_lft forever preferred_lft forever
    inet6 fe80::f7e2:c660:346d:b6d5/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b6:45:4e brd ff:ff:ff:ff:ff:ff
    inet 192.168.13.10/24 brd 192.168.13.255 scope global noprefixroute ens37
       valid_lft forever preferred_lft forever
    inet 169.254.17.241/19 brd 169.254.31.255 scope global ens37:1
       valid_lft forever preferred_lft forever
    inet6 fe80::71e:6f8e:388b:9bec/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

查看node2 IP信息

[root@node2 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:ab:d1:6d brd ff:ff:ff:ff:ff:ff
    inet 192.168.93.21/24 brd 192.168.93.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.93.40/24 brd 192.168.93.255 scope global secondary ens33:1
       valid_lft forever preferred_lft forever
    inet 192.168.93.31/24 brd 192.168.93.255 scope global secondary ens33:2
       valid_lft forever preferred_lft forever
    inet6 fe80::f7e2:c660:346d:b6d5/64 scope link tentative noprefixroute dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::30f5:d4f6:f0f0:8564/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:ab:d1:77 brd ff:ff:ff:ff:ff:ff
    inet 192.168.13.11/24 brd 192.168.13.255 scope global noprefixroute ens37
       valid_lft forever preferred_lft forever
    inet 169.254.25.6/19 brd 169.254.31.255 scope global ens37:1
       valid_lft forever preferred_lft forever
    inet6 fe80::153a:c28f:f182:d96/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

创建用于DB的磁盘组

使用GRID用户,运行asmca:

[grid@node1 grid]$ asmca

新建磁盘组

在这里插入图片描述

查看磁盘组

在这里插入图片描述

查询磁盘组挂载状态以及CRSD状态:

[grid@node1 ~]$ sqlplus / as sysasm


SQL> select NAME,state from v$asm_diskgroup;

NAME                           STATE
------------------------------ -----------
OCR                            MOUNTED
DATA                           MOUNTED
FRA                            MOUNTED

开始安装ORACLE

SSH登陆到oracle用户,将下载的 zip 文件解压到ORACLE_HOME目录。

[oracle@node1 ~]$ unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME

转到ORACLE_HOME目录

cd $ORACLE_HOME

然后运行runInstaller

./runInstaller

开始安装
在这里插入图片描述

配置SSH connectivity,点击Setup
在这里插入图片描述

选择数据库版本
在这里插入图片描述

选择安装位置
在这里插入图片描述

配置用户组
在这里插入图片描述

自动执行root脚本
在这里插入图片描述

安装预检查
在这里插入图片描述

全局设置信息
在这里插入图片描述

安装完成
在这里插入图片描述

开始安装数据库

ssh连接到oracle用户,验证 DBCA 的要求

/u01/app/19.3.0/grid/bin/cluvfy stage -pre dbcfg -fixup -n node1,node2 \
  -d /u01/app/oracle/product/19.3.0/dbhome_1 -verbose

运行dbca:

dbca

创建数据库
在这里插入图片描述

配置模式
在这里插入图片描述

部署类型
在这里插入图片描述

节点选择
在这里插入图片描述

配置数据库认证
在这里插入图片描述

配置存储
在这里插入图片描述

这里开启FRA跟归档,使用FRA作为路径:
在这里插入图片描述

数据库选项
在这里插入图片描述

配置选项
在这里插入图片描述

管理选项
在这里插入图片描述

用户凭证Oracle#123
在这里插入图片描述

创建选项
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ls8Y6CBx-1634632922000)(../images/screenshot_1634203917157.png)]

安装检查,勾选忽略检查失败部分
在这里插入图片描述

全局配置信息

在这里插入图片描述
在这里插入图片描述

开始安装
在这里插入图片描述

安装完成

在这里插入图片描述

查看状态

[grid@node1 ~]$ crsctl status res -t
--------------------------------------------------------------------------------
Name           Target  State        Server                   State details       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.LISTENER.lsnr
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.chad
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.net1.network
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
ora.ons
               ONLINE  ONLINE       node1                    STABLE
               ONLINE  ONLINE       node2                    STABLE
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.ASMNET1LSNR_ASM.lsnr(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.DATA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    STABLE
      3        ONLINE  OFFLINE                               STABLE
ora.FRA.dg(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    STABLE
      3        ONLINE  OFFLINE                               STABLE
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       node2                    STABLE
ora.LISTENER_SCAN2.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.LISTENER_SCAN3.lsnr
      1        ONLINE  ONLINE       node1                    STABLE
ora.OCR.dg(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asm(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    Started,STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.asmnet1.asmnetwork(ora.asmgroup)
      1        ONLINE  ONLINE       node1                    STABLE
      2        ONLINE  ONLINE       node2                    STABLE
      3        OFFLINE OFFLINE                               STABLE
ora.cvu
      1        ONLINE  ONLINE       node1                    STABLE
ora.node1.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.node2.vip
      1        ONLINE  ONLINE       node2                    STABLE
ora.qosmserver
      1        ONLINE  ONLINE       node1                    STABLE
ora.racdb.db
      1        ONLINE  ONLINE       node1                    Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
      2        ONLINE  ONLINE       node2                    Open,HOME=/u01/app/o
                                                             racle/product/19.3.0
                                                             /dbhome_1,STABLE
ora.scan1.vip
      1        ONLINE  ONLINE       node2                    STABLE
ora.scan2.vip
      1        ONLINE  ONLINE       node1                    STABLE
ora.scan3.vip
      1        ONLINE  ONLINE       node1                    STABLE
--------------------------------------------------------------------------------

验证数据库状态:

[oracle@node1 ~]$ srvctl status database -d racdb
Instance racdb1 is running on node node1
Instance racdb2 is running on node node2

查看数据库配置

[oracle@node1 ~]$ srvctl config database -d racdb
Database unique name: racdb
Database name: racdb
Oracle home: /u01/app/oracle/product/19.3.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/RACDB/PARAMETERFILE/spfile.272.1086358693
Password file: +DATA/RACDB/PASSWORD/pwdracdb.256.1086353867
Domain: 
Start options: open
Stop options: immediate
Database role: PRIMARY
Management policy: AUTOMATIC
Server pools: 
Disk Groups: DATA,FRA
Mount point paths: 
Services: 
Type: RAC
Start concurrency: 
Stop concurrency: 
OSDBA group: dba
OSOPER group: oper
Database instances: racdb1,racdb2
Configured nodes: node1,node2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services: 
Database is administrator managed

连接数据库查看

[oracle@node1 ~]$ sqlplus / as sysdba

SQL> select instance_name,status from gv$Instance;

INSTANCE_NAME    STATUS
---------------- ------------
racdb2           OPEN
racdb1           OPEN

参考:

https://www.cnblogs.com/ryanw/articles/12540153.html
https://blog.csdn.net/huang987246510/article/details/116291633
https://www.modb.pro/db/95684#35_multipathudev_603
https://dbtut.com/index.php/2020/11/18/how-to-install-oracle-rac-19c-on-linux/
https://oracle-base.com/articles/19c/oracle-db-19c-rac-installation-on-oracle-linux-7-using-virtualbox
https://www.bigdba.com/oracle/831/how-to-install-oracle-19c-two-node-real-application-clusterrac-on-the-google-cloud-platform/
https://blog.csdn.net/networken/article/details/120788623

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux安装Oracle Database 19c RAC 的相关文章

  • 如何从linux命令行运行.exe可执行文件? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 Windows 中有一个 abc exe 可执行文件 我可以使用 DOS 命令提示来执行此应用程序 并为其提供一些运行时变量 我想从
  • numpy 未定义符号:PyFPE_jbuf

    我正在尝试使用一百万首歌曲数据集 为此我必须安装 python 表 numpy cython hdf5 numexpr 等 昨天我设法安装了我需要的所有内容 在使用 hdf5 遇到一些麻烦之后 我下载了预编译的二进制包并将它们保存在我的 b
  • 构建 makefile 依赖/继承树

    如果我解释得不好或者问了一些明显的问题 我很抱歉 但我是 Linux 内核的新手 而且有点深入 我们有一个嵌入式 Linux 系统 它附带一个 文档非常糟糕的 SDK 其中包含数百个文件夹stuff 大多数文件夹包含rules make m
  • 在 BEFORE INSERT 触发器中使用 IF EXISTS (SELECT ...) (Oracle)

    我的代码不起作用 Oracle 告诉我创建触发器时出现构建错误 显然我无法获得有关构建错误的更准确信息 我以前确实没有做过很多SQL 所以我对语法不太熟悉 我有一种预感 Oracle 不喜欢我的 IF EXISTS SELECT THEN
  • 如何列出表中的所有列?

    对于各种流行的数据库系统 如何列出表中的所有列 对于 MySQL 请使用 DESCRIBE name of table 只要您使用 SQL Plus 或 Oracle 的 SQL Developer 这也适用于 Oracle
  • 无法执行'x86_64-conda_cos6-linux-gnu-gcc':没有这样的文件或目录(pysam安装)

    我正在尝试安装 pysam 执行后 python path to pysam master setup py build 这个错误的产生是 unable to execute x86 64 conda cos6 linux gnu gcc
  • 为 Qt 应用程序创建 Linux 安装

    我刚刚用 Qt Creator 制作了一个很棒的程序 我对自己很满意 如何将其从台式机移至笔记本电脑 那么 最好的方法是安装程序 对吗 对于 Ubuntu 这是一个 Debian 软件包 对吗 我怎么做 有人这样做过吗 他们可以分享 QT
  • Inotify linux 监视子目录

    是否可以以这种模式监视目录 storage data usernames Download gt storage data Download 我需要监视每个用户的下载文件夹中是否进行了更改 也许我需要创建所有路径的列表 将其放入数组中 并在
  • 在 Ubuntu 16.04 上找不到 printf.c

    我最近切换到Ubuntu 16 04 我在用vscode作为 Ubuntu 上的 IDE 我配置了其他语言 但我无法做到这一点C C 我创建c cpp properties json launch json tasks json 当我开始编
  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • 适用于 KDE 和 Gnome 的 Gui [重复]

    这个问题在这里已经有答案了 我想为一个现在是 CLI 的应用程序编写一个 gui 它需要在 KDE 和 Gnome DE 中 看起来不错 充分利用用户的外观设置 如果我选择 Qt 或 GTK 我能够做到这一点吗 它们与两个 DE 集成良好吗
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • 如何查找连接到 AF_INET 套接字的客户端的 UID?

    有什么方法或类似的东西ucred for AF UNIX如果是AF INET插座 TCP在我的例子中 找出连接到我的套接字的客户端的UID 还有 proc net tcp但它显示了UID of the creator插座的而不是连接的cli
  • 归档文件系统或格式

    我正在寻找一种文件类型来存储已退役系统的档案 目前 我们主要使用 tar gz 但从 200GB tar gz 存档中查找并提取几个文件是很麻烦的 因为 tar gz 不支持任何类型的随机访问读取规定 在你明白之前 使用 FUSE 安装 t
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • Oracle - 获取星期几

    今天是星期二 为什么当我运行这个 SQL 语句时 它说今天不是星期二 SELECT CASE WHEN TO CHAR sysdate Day Tuesday THEN Its Tuesday ELSE Its Not Tuesday EN
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7
  • 在 Linux 中禁用历史记录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 要在 Linux 环境中禁用历史记录 我执行了以下命令 export HISTFILESIZE 0 export HISTSIZE 0 u
  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然

随机推荐

  • 基本的Java的MVC入门案例

    概念 MVC Model View Controller 模型 视图 控制器 他是一种专门设计web程序的模式 高内聚 低耦合 高内聚 专人干专事 低耦合 让类与类之间的关系不能太紧密 模型 Model 是应用程序中与处理应用程序数据逻辑的
  • React抽离组件到独立的JS文件中

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 React学习记录 一 抽离组件到独立的JS文件中 1 先创建一个Hello js 2 再创建一个index js文件 React学习记录 一 抽离组件到独立的JS
  • PHP is_array()函数详解,PHP判断是否为数组

    作者主页 士别三日wyx 作者简介 CSDN top100 阿里云博客专家 华为云享专家 网络安全领域优质创作者 推荐专栏 对网络安全感兴趣的小伙伴可以关注专栏 网络安全入门到精通 is array 一 基本使用 二 空数组 三 同时判断多
  • 字节对齐规则和位域

    字节对齐规则 结构体的起始存储位置必须是能够被该结构体中最大的数据类型所整除 每个数据成员存储的起始位置是自身大小的整数倍 比如int在32位机为4字节 则int型成员要从4的整数倍地址开始存储 结构体总大小 也就是sizeof的结果 必须
  • matlab 因果分析,matlab非参数的格兰杰因果分析

    代码1 deseason m function rp vp deseason data textdata days flipud textdata 1 days days 1 end 1 volume flipud data 5 price
  • Vue如何将数据显示在页面中

    如何将data的数据显示在页面中 1 文本插值 div msg div 渲染结果 div hello world div 2 原始HTML插值 v html v text 区别 v text不会对标签进行转义而v html会对标签进行一次转
  • QT笔记——初识QHostInfo、QHostAddress、QNetworkInterface

    网络模块需要在 pro文件中添加 QT network QHostInfo 利用操作系统提供的查询机制来查询与特定主机名相关联的主机的 IP 地址 头文件 include
  • Js中的defer属性和async属性

    Js中的defer属性和async属性 一 defer和async 1 defer 指外部js文件和当前html页面同时加载 异步加载 但只在当前页面解析完成之后执行js代码 async 指外部js文件和当前html页面同时加载 异步加载
  • Redhat Add and Remove Software[No Groups Available in any repository ]

    在 etc yum repos d中把rhel debuginfo repo 修改一下 enabled 1 修改为 enabled 1
  • Java 实现令牌桶限流算法 原生极简实现 包括单机和多线程版本

    文章目录 令牌桶算法简介 令牌桶算法限流范围 单机版实现 多线程版实现 令牌桶算法简介 令牌桶是指一个限流容器 容器有最大容量 每秒或每100ms产生一个令牌 具体取决于机器每秒处理的请求数 当容量中令牌数量达到最大容量时 令牌数量也不会改
  • Python中访问类中的私有变量的两种方法

    我们知道 类中的私有变量是不能直接在类外访问或修改的 因此我们可以设置一个get函数和一个set函数来间接访问和修改私有属性 那么每次访问和修改的都需要调用函数 有没有更简单的方法呢 下面介绍两种方法 1 property 属性函数 比如P
  • 如何保证数据产出质量简述

    如何保证数据产出质量简述 数据质量的评估 数据质量的保障 数据产出流程 机制 revire机制 数据质量保障中的工具 规则 SQLSCAN DQC 基线 数据质量的评估 数据质量可以从一下几个角度进行评估 完整性 完整性是指数据的记录和信息
  • ECG信号三大主要噪声-基线漂移,工频干扰,肌电干扰

    1 基线漂移 基线漂移属于 低频干扰 呼吸的节奏 四肢动作以及前端处理电路设计 都有可能造成基线漂移 致使原始ECG信号漂移之后的 幅度达到R波最大幅值的0 1 0 2倍 ECG信号的一般采用是 粘贴式或吸球式 电极来采集信号 那么存在于体
  • 请关闭该文件夹或文件,然后重试 怎么处理?

    一 打开任务管理器 性能 gt 打开资源监视器 选择CPU gt 搜索句柄中填入文件夹名称 右击结束进程 就能进行操作了
  • 【Linux入门教程】2 文件权限和访问模式、环境变量、管道和过滤器

    Linux文件权限和访问模式 为了更加安全的存储文件 Linux为不同的文件赋予了不同的权限 每个文件都拥有下面三种权限 所有者权限 文件所有者能够进行的操作 组权限 文件所属用户组能够进行的操作 外部权限 其他权限 其他用户可以进行的操作
  • QT编程之信号和槽机制知识

    qt知识总结 一 常见的父窗口有3类 1 QWidget 它是所有对象的基类 继承自QOject和OPaintDevice 2 QMainWindow 它提供了一个主要的应用窗口 可以用来构建APP的应用界面 3 QDialog 对话框 其
  • TensorFlow.js预测鸢尾花种类

    源码连接 TensorFlow js实现鸢尾花种类预测 机器学习文档类资源 CSDN下载 一 加载IRIS数据集 创建index html入口文件 跳转到script主文件 在script js文件夹中利用预先准备好的脚本生成鸢尾花数据集
  • 无公网IP通过旁路由openwrt的Zerotier实现和在家一样访问家里每个设备

    现在的IP地址精贵 很多人拉的线路都没有公网IP了 早期时候有公网IP可以干很多事情 例如架个Web FTP 游戏等各种服务 再通过动态域名 在公司或者朋友可以直接访问 只要映射端口就可以了 如果没有公网IP 其实还有其他办法 例如frp反
  • BGP双平面实验

    实验要求 1 合理IP地址 2 AS 1 2 3 内部使用OSPF 协议 AS 1 AS 2内部建立全互联的IBGP邻居 AS之间建立全部的EBGP邻居 3 PC 1 3 5 属于电信的路由 通信时必须使用电信AS 1 PC 2 4 6 属
  • Linux安装Oracle Database 19c RAC

    版权声明 本文为博主原创文章 遵循 CC 4 0 BY SA 版权协议 转载请附上原文出处链接和本声明 本文链接 https blog csdn net networken article details 120788623 Linux安装