Oracle Dataguard(主库为 Oracle rac 集群)配置教程(01)—— dataguard 服务器安装 Oracle 软件

news2025/3/14 3:27:09

Oracle Dataguard(主库为 Oracle rac 集群)配置教程(01)—— dataguard 服务器安装 Oracle 软件

在这里插入图片描述
/
本专栏详细讲解 Oracle Dataguard(Oracle 版本为11g,主库为双节点 Oracle rac 集群)的配置过程。主要内容包括:
(1)dataguard 服务器 Oracle 软件的安装。
(2)Oracle RAC 主库与 Dataguard 服务器的配置。
(3)主从同步测试。
(4)主备库切换。
/

目录

  • Oracle Dataguard(主库为 Oracle rac 集群)配置教程(01)—— dataguard 服务器安装 Oracle 软件
    • 一、系统环境
    • 二、配置安装环境
        • 1、查看 dataguard 服务器操作系统版本
        • 2、查看 dataguard 服务器 IP 地址
        • 3、关闭防火墙
        • 4、关闭 selinux
        • 5、查看并修改主机名
        • 6、修改 /etc/hosts 文件,添加主机名和 IP 地址
        • 7、修改系统内核参数
        • 8、修改用户资源限制
    • 三、创建用户与目录并设置环境变量
        • 1、创建 oracle 用户与组
        • 2、创建安装目录并授权
        • 3、设置 oracle 用户的环境变量
        • 4、安装 readline-6.2 和 rlwrap-0.37
    • 四、安装所需的依赖包
        • 1、把安装 Oracle 所需的依赖包上传到服务器
        • 2、安装所需的依赖包
    • 五、Oracle 软件的安装与配置
        • 1、上传并解压缩 Oracle 安装文件
        • 2、修改 oracle 应答模板文件 —— db_install.rsp
        • 3、根据应答文件静默安装 oracle
        • 4、配置监听

一、系统环境

主库为 Oracle rac 双节点集群。操作系统版本如下:

[root@rac2 ~]# cat /etc/redhat-release 
CentOS Linux release 7.3.1611 (Core) 

Oracle 版本如下:

[oracle@rac2 ~]$ sqlplus -v
SQL*Plus: Release 11.2.0.4.0 Production

集群使用的 IP 地址与主机名如下:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

#Public Network ——公用IP
192.168.1.101 rac1   # 节点1的主机名为 rac1
192.168.1.102 rac2   # 节点2的主机名为 rac2

#Private Interconnect ——私有IP
10.1.1.101 rac1-priv
10.1.1.102 rac2-priv

#Virtual IP——虚拟IP,与公用IP必须在同一网段    
192.168.1.111 rac1-vip
192.168.1.112 rac2-vip

#scan IP
192.168.1.201 rac-scan

Oracle RAC 集群信息如下:

[grid@rac1 ~]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora.BAK.dg     ora....up.type ONLINE    ONLINE    rac1        
ora.DATA.dg    ora....up.type ONLINE    ONLINE    rac1        
ora....ER.lsnr ora....er.type ONLINE    ONLINE    rac1        
ora....N1.lsnr ora....er.type ONLINE    ONLINE    rac1        
ora.OCR.dg     ora....up.type ONLINE    ONLINE    rac1        
ora.asm        ora.asm.type   ONLINE    ONLINE    rac1        
ora.cvu        ora.cvu.type   ONLINE    ONLINE    rac1        
ora.gsd        ora.gsd.type   OFFLINE   OFFLINE               
ora.hisdb.db   ora....se.type ONLINE    ONLINE    rac1        
ora....network ora....rk.type ONLINE    ONLINE    rac1        
ora.oc4j       ora.oc4j.type  ONLINE    ONLINE    rac1        
ora.ons        ora.ons.type   ONLINE    ONLINE    rac1        
ora....SM1.asm application    ONLINE    ONLINE    rac1        
ora....C1.lsnr application    ONLINE    ONLINE    rac1        
ora.rac1.gsd   application    OFFLINE   OFFLINE               
ora.rac1.ons   application    ONLINE    ONLINE    rac1        
ora.rac1.vip   ora....t1.type ONLINE    ONLINE    rac1        
ora....SM2.asm application    ONLINE    ONLINE    rac2        
ora....C2.lsnr application    ONLINE    ONLINE    rac2        
ora.rac2.gsd   application    OFFLINE   OFFLINE               
ora.rac2.ons   application    ONLINE    ONLINE    rac2        
ora.rac2.vip   ora....t1.type ONLINE    ONLINE    rac2        
ora.scan1.vip  ora....ip.type ONLINE    ONLINE    rac1        

为 dataguard 服务器安装 Oracle 软件(不需要建库):

二、配置安装环境

1、查看 dataguard 服务器操作系统版本

[root@wgx-dg ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core) 

2、查看 dataguard 服务器 IP 地址

[root@wgx-dg ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.151  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:fed0:7d7d  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:d0:7d:7d  txqueuelen 1000  (Ethernet)
        RX packets 26731  bytes 10589717 (10.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1923  bytes 167644 (163.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 36  bytes 2932 (2.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 36  bytes 2932 (2.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

3、关闭防火墙

systemctl stop firewalld        # 关闭防火墙
systemctl disable firewalld     # 永久关闭防火墙
systemctl status firewalld      # 查看防火墙状态
# 关闭防火墙
[root@localhost ~]# systemctl stop firewalld

# 永久关闭防火墙
[root@localhost ~]# systemctl disable firewalld

# 查看防火墙状态
[root@localhost ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

210 12:18:01 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
210 12:18:12 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
210 12:20:25 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewall daemon...
210 12:20:25 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewall daemon.

4、关闭 selinux

(1)修改文件 /etc/selinux/config,设置 SELINUX=disabled

[root@localhost ~]# vi /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=diabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targetedxxxxxxxxxx [root@localhost ~]# vi /etc/selinux/config# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:#     enforcing - SELinux security policy is enforced.#     permissive - SELinux prints warnings instead of enforcing.#     disabled - No SELinux policy is loaded.SELINUX=diabled# SELINUXTYPE= can take one of three two values:#     targeted - Targeted processes are protected,#     minimum - Modification of targeted policy. Only selected processes are protected.#     mls - Multi Level Security protection.SELINUXTYPE=targetedsqlshell

(2)执行 setenforce 0

[root@localhost ~]# setenforce 0

5、查看并修改主机名

hostname        # 查看主机名
hostname hisdg  # 临时修改主机名

# 查看主机名
[root@localhost ~]# hostname
localhost.localdomain

# 临时修改主机名
[root@localhost ~]# hostname hisdg

# 永久修改主机名
[root@localhost ~]# vi /etc/hostname
hisdg

# 查看主机名
[root@localhost ~]# hostname
hisdg

6、修改 /etc/hosts 文件,添加主机名和 IP 地址

# 查看本机 ip 地址
[root@hisdg ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.151  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:fed0:7d7d  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:d0:7d:7d  txqueuelen 1000  (Ethernet)
        RX packets 405  bytes 45066 (44.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 304  bytes 45037 (43.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 72  bytes 6252 (6.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 72  bytes 6252 (6.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        
# 修改 /etc/hosts 文件
[root@hisdg ~]# vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.151 hisdg

7、修改系统内核参数

(1)编辑 /etc/sysctl.conf 文件,在文件结尾添加以下内容

[root@hisdg ~]# vi /etc/sysctl.conf

# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).


fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 1073741824  
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

######################################################################################
# 参数详解:
kernel.shmmax:
用于定义单个共享内存段的最大值。设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。
官方建议值:
32位linux系统:可取最大值为4GB(4294967296bytes)-1byte,即4294967295。建议值为多于内存的一半,所以如果是32为系统,一般可取值为4294967295。32位系统对SGA大小有限制,所以SGA肯定可以包含在单个共享内存段中。
64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,一般取值大于SGA_MAX_SIZE即可,可以取物理内存-1byte。
内存为 12G 时,该值为 12*1024*1024*1024-1 = 12884901887
内存为 16G 时,该值为 16*1024*1024*1024-1 = 17179869183
内存为 32G 时,该值为 32*1024*1024*1024-1 = 34359738367
内存为 64G 时,该值为 64*1024*1024*1024-1 = 68719476735
内存为 128G 时,该值为 128*1024*1024*1024-1 = 137438953471

kernel.shmall:该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。
当内存为 12G 时, kernel.shmall = 3145728
当内存为 16G 时, kernel.shmall = 4194304
当内次为 32G 时, kernel.shmall = 8388608
当内存为 64G 时, kernel.shmall = 16777216
当内存为 128G 时, kernel.shmall = 33554432

kernel.sem:
以kernel.sem = 250 32000 100 128为例:
       250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。
       32000是参数semmns的值,表示系统内可允许的信号量最大数目。
       100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。
       128是参数semmni的值,表示系统信号量集合总数。

net.ipv4.ip_local_port_range:表示应用程序可使用的IPv4端口范围。
net.core.rmem_default:表示套接字接收缓冲区大小的缺省值。
net.core.rmem_max:表示套接字接收缓冲区大小的最大值。
net.core.wmem_default:表示套接字发送缓冲区大小的缺省值。
net.core.wmem_max:表示套接字发送缓冲区大小的最大值。
######################################################################################

(2)执行 sysctl -p 命令使配置文件生效

[root@hisdg ~]# sysctl  -p
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 1073741824
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

8、修改用户资源限制

(1)修改进程数和最大会话数:在配置文件 /etc/security/limits.conf 结尾添加如下内容

[root@hisdg ~]# vi /etc/security/limits.conf

...........

oracle              soft    nproc  2047
oracle              hard    nproc  16384
oracle              soft    nofile  1024
oracle              hard    nofile  65536
oracle              soft    stack   10240

(2)设置关联信息:在文件 /etc/pam.d/login 结尾添加如下内容

[root@hisdg ~]# vi /etc/pam.d/login

.....

session required /lib64/security/pam_limits.so
session required pam_limits.so

三、创建用户与目录并设置环境变量

1、创建 oracle 用户与组

###################################################################################
groupadd oinstall                      # 创建组:oinstall
groupadd dba                           # 创建组:dba
useradd -g oinstall -G dba oracle      # 创建 oracle 用户
echo "oracle" | passwd --stdin oracle  #为 oracle 用户设置密码
###################################################################################

[root@hisdg ~]# groupadd oinstall                      # 创建组:oinstall
[root@hisdg ~]# groupadd dba                           # 创建组:dba
[root@hisdg ~]# useradd -g oinstall -G dba oracle      # 创建 oracle 用户
[root@hisdg ~]# echo "oracle" | passwd --stdin oracle  #为 oracle 用户设置密码
更改用户 oracle 的密码 。
passwd:所有的身份验证令牌已经成功更新。

2、创建安装目录并授权

###################################################################################
# (1)创建目录
mkdir -p /u01/app/oracle /u01/app/oraInventory /u01/app/oradata/ 
# (2)更改所有者和所属的组
chown -R oracle:oinstall /u01/
# (3)授予操作权限
chmod -R 775 /u01/
# (4)查看目录的所有者及权限
ll /usr/local/

# 执行如下命令
[root@hisdg ~]# mkdir -p /u01/app/oracle /u01/app/oraInventory /u01/app/oradata/ 
[root@hisdg ~]# chown -R oracle:oinstall /u01/
[root@hisdg ~]# chmod -R 775 /u01/
[root@hisdg ~]# ll /u01/app/
总用量 0
drwxrwxr-x. 2 oracle oinstall  6 210 13:00 oracle
drwxrwxr-x. 2 oracle oinstall  6 210 13:00 oradata
drwxrwxr-x. 2 oracle oinstall  6 210 13:03 oraInventory

3、设置 oracle 用户的环境变量

[root@hisdg app]# vi /home/oracle/.bash_profile

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=hisdg
export ORACLE_OWNER=oracle
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
alias sqlplus='rlwrap sqlplus'
alias lsnrctl='rlwrap lsnrctl'
alias rman='rlwrap rman'

使环境变量生效:

[root@hisdg app]# source /home/oracle/.bash_profile

4、安装 readline-6.2 和 rlwrap-0.37

(1)安装 readline-6.2

# 安装编译工具 gcc:
[root@hisdg app]# yum install -y gcc

已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.bfsu.edu.cn
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.bfsu.edu.cn
正在解决依赖关系
--> 正在检查事务
......
更新完毕:
  gcc.x86_64 0:4.8.5-44.el7                                                                                                     

作为依赖被升级:
  cpp.x86_64 0:4.8.5-44.el7             gcc-c++.x86_64 0:4.8.5-44.el7              gcc-gfortran.x86_64 0:4.8.5-44.el7         
  gcc-gnat.x86_64 0:4.8.5-44.el7        gcc-go.x86_64 0:4.8.5-44.el7               gcc-objc.x86_64 0:4.8.5-44.el7             
  gcc-objc++.x86_64 0:4.8.5-44.el7      gcc-plugin-devel.x86_64 0:4.8.5-44.el7     libgcc.x86_64 0:4.8.5-44.el7               
  libgfortran.x86_64 0:4.8.5-44.el7     libgnat.x86_64 0:4.8.5-44.el7              libgnat-devel.x86_64 0:4.8.5-44.el7        
  libgo.x86_64 0:4.8.5-44.el7           libgo-devel.x86_64 0:4.8.5-44.el7          libgomp.x86_64 0:4.8.5-44.el7              
  libobjc.x86_64 0:4.8.5-44.el7         libquadmath.x86_64 0:4.8.5-44.el7          libquadmath-devel.x86_64 0:4.8.5-44.el7    
  libstdc++.x86_64 0:4.8.5-44.el7       libstdc++-devel.x86_64 0:4.8.5-44.el7      libstdc++-static.x86_64 0:4.8.5-44.el7     

完毕!


# 上传软件
[root@hisdg soft]# pwd
/soft
[root@hisdg soft]# ll
总用量 2476
drwxr-xr-x. 2 root root     214 210 13:26 libtermcap-devel
-rw-r--r--. 1 root root 2277926 63 2021 readline-6.2.tar.gz
-rw-r--r--. 1 root root  251438 515 2019 rlwrap-0.37.tar.gz

# 解压缩
[root@hisdg soft]# tar zxvf readline-6.2.tar.gz

readline-6.2/
readline-6.2/doc/
readline-6.2/doc/Makefile.in
readline-6.2/doc/texinfo.tex
readline-6.2/doc/version.texi
.....

# 编译、安装软件
[root@hisdg soft]# cd readline-6.2

[root@hisdg readline-6.2]# ./configure && make && make install

checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu

...........

readline.so.6.2install: you may need to run ldconfig
make[1]: 离开目录“/soft/readline-6.2/shlib”

(2)安装libtermcap-devel

# 查看 rpm 包
[root@hisdg libtermcap-devel]# pwd
/soft/libtermcap-devel
[root@hisdg libtermcap-devel]# ll
总用量 1408
-rw-r--r--. 1 root root 310928 97 2017 ncurses-5.9-14.20130511.el7_4.x86_64.rpm
-rw-r--r--. 1 root root  69900 97 2017 ncurses-base-5.9-14.20130511.el7_4.noarch.rpm
-rw-r--r--. 1 root root 729508 97 2017 ncurses-devel-5.9-14.20130511.el7_4.x86_64.rpm
-rw-r--r--. 1 root root 323192 97 2017 ncurses-libs-5.9-14.20130511.el7_4.x86_64.rpm


# 安装 rpm 包
[root@hisdg libtermcap-devel]# rpm -ivh --force --nodeps *.rpm
准备中...                          ################################# [100%]
正在升级/安装...
   1:ncurses-base-5.9-14.20130511.el7_################################# [ 25%]
   2:ncurses-libs-5.9-14.20130511.el7_################################# [ 50%]
   3:ncurses-5.9-14.20130511.el7_4    ################################# [ 75%]
   4:ncurses-devel-5.9-14.20130511.el7################################# [100%]

(3)安装 rlwrap-0.37

[root@hisdg soft]# ll
总用量 2484
drwxr-xr-x. 2 root root      214 210 13:26 libtermcap-devel
drwxrwxr-x. 6  286 wheel    4096 210 13:28 readline-6.2
-rw-r--r--. 1 root root  2277926 63 2021 readline-6.2.tar.gz
-rw-r--r--. 1 root root   251438 515 2019 rlwrap-0.37.tar.gz

# 解压缩软件 rlwrap-0.37
[root@hisdg soft]# tar zxvf rlwrap-0.37.tar.gz

rlwrap-0.37/
rlwrap-0.37/completions/
rlwrap-0.37/completions/testclient
rlwrap-0.37/completions/coqtop
rlwrap-0.37/doc/
....

[root@hisdg soft]# ll
总用量 2484
drwxr-xr-x. 2 root root      214 210 13:26 libtermcap-devel
drwxrwxr-x. 6  286 wheel    4096 210 13:28 readline-6.2
-rw-r--r--. 1 root root  2277926 63 2021 readline-6.2.tar.gz
drwxrwxr-x. 8  500   500    4096 55 2010 rlwrap-0.37
-rw-r--r--. 1 root root   251438 515 2019 rlwrap-0.37.tar.gz


# 编译、安装软件
[root@hisdg soft]# cd rlwrap-0.37
[root@hisdg rlwrap-0.37]# ./configure && make && make install

checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c

........

make[3]: 进入目录“/soft/rlwrap-0.37”
chmod a+x /usr/local/share/rlwrap/filters/* 
make[3]: 离开目录“/soft/rlwrap-0.37”
make[2]: 离开目录“/soft/rlwrap-0.37”
make[1]: 离开目录“/soft/rlwrap-0.37”

四、安装所需的依赖包

1、把安装 Oracle 所需的依赖包上传到服务器

[root@hisdg pack]# pwd
/soft/pack
[root@hisdg pack]# ll
总用量 119612
-rw-r--r--. 1 root root   195388 314 2015 compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
-rw-r--r--. 1 root root  6236316 823 2019 cpp-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root    33596 44 2020 elfutils-default-yama-scope-0.176-4.el7.noarch.rpm
-rw-r--r--. 1 root root   199264 44 2020 elfutils-libelf-0.176-4.el7.x86_64.rpm
-rw-r--r--. 1 root root    40632 44 2020 elfutils-libelf-devel-0.176-4.el7.x86_64.rpm
-rw-r--r--. 1 root root    77868 44 2020 elfutils-libelf-devel-static-0.176-4.el7.x86_64.rpm
-rw-r--r--. 1 root root   297776 44 2020 elfutils-libs-0.176-4.el7.x86_64.rpm
-rw-r--r--. 1 root root 16966352 823 2019 gcc-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root  7529552 823 2019 gcc-c++-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root  6983372 823 2019 gcc-gfortran-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root 13559304 823 2019 gcc-gnat-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root  6199712 823 2019 gcc-go-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root  6026156 823 2019 gcc-objc-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root  6447348 823 2019 gcc-objc++-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root   847636 823 2019 gcc-plugin-devel-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root  3815032 44 2020 glibc-2.17-307.el7.1.x86_64.rpm
-rw-r--r--. 1 root root 12057552 44 2020 glibc-common-2.17-307.el7.1.x86_64.rpm
-rw-r--r--. 1 root root  1126396 44 2020 glibc-devel-2.17-307.el7.1.x86_64.rpm
-rw-r--r--. 1 root root   705348 44 2020 glibc-headers-2.17-307.el7.1.x86_64.rpm
-rw-r--r--. 1 root root   287768 811 2017 gmp-6.0.0-15.el7.x86_64.rpm
-rw-r--r--. 1 root root   185500 811 2017 gmp-devel-6.0.0-15.el7.x86_64.rpm
-rw-r--r--. 1 root root  9389840 826 2020 kernel-headers-3.10.0-1127.19.1.el7.x86_64.rpm
-rw-r--r--. 1 root root    24744 625 2019 libaio-0.3.109-13.el7.x86_64.rpm
-rw-r--r--. 1 root root    13176 1125 2015 libaio-devel-0.3.109-13.el7.x86_64.rpm
-rw-r--r--. 1 root root   104736 823 2019 libgcc-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root   307596 823 2019 libgfortran-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root   989820 823 2019 libgnat-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root  2821040 823 2019 libgnat-devel-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root  2287136 823 2019 libgo-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root   235848 823 2019 libgo-devel-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root   161828 823 2019 libgomp-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root    51732 74 2014 libmpc-1.0.1-3.el7.x86_64.rpm
-rw-r--r--. 1 root root    32904 74 2014 libmpc-devel-1.0.1-3.el7.x86_64.rpm
-rw-r--r--. 1 root root    81836 823 2019 libobjc-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root   194380 823 2019 libquadmath-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root    54228 823 2019 libquadmath-devel-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root   312504 823 2019 libstdc++-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root  1580840 823 2019 libstdc++-devel-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root 11580600 823 2019 libstdc++-docs-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root   422504 823 2019 libstdc++-static-4.8.5-39.el7.x86_64.rpm
-rw-r--r--. 1 root root    50076 413 2017 libtool-ltdl-2.4.2-22.el7_3.x86_64.rpm
-rw-r--r--. 1 root root    42784 823 2019 lm_sensors-libs-3.4.0-8.20160601gitf9185e5.el7.x86_64.rpm
-rw-r--r--. 1 root root   208316 74 2014 mpfr-3.1.1-4.el7.x86_64.rpm
-rw-r--r--. 1 root root    69904 74 2014 mpfr-devel-3.1.1-4.el7.x86_64.rpm
-rw-r--r--. 1 root root   210440 16 2019 pdksh-5.2.14-37.el7.centos.1.x86_64.rpm
-rw-r--r--. 1 root root   376916 16 2019 pdksh-debuginfo-5.2.14-37.el7.centos.1.x86_64.rpm
-rw-r--r--. 1 root root   323020 44 2020 sysstat-10.1.5-19.el7.x86_64.rpm
-rw-r--r--. 1 root root   423152 823 2019 unixODBC-2.3.1-14.el7.x86_64.rpm
-rw-r--r--. 1 root root    56144 823 2019 unixODBC-devel-2.3.1-14.el7.x86_64.rpm
-rw-r--r--. 1 root root    91960 1112 2018 zlib-1.2.7-18.el7.x86_64.rpm
-rw-r--r--. 1 root root    51128 1112 2018 zlib-devel-1.2.7-18.el7.x86_64.rpm

2、安装所需的依赖包

[root@hisdg pack]# rpm -ivh --nodeps --force *.rpm
准备中...                          ################################# [100%]
正在升级/安装...
   1:libgcc-4.8.5-39.el7              ################################# [  2%]
   2:glibc-common-2.17-307.el7.1      ################################# [  4%]
   3:glibc-2.17-307.el7.1             ################################# [  6%]
   4:zlib-1.2.7-18.el7                ################################# [  8%]
   5:libquadmath-4.8.5-39.el7         ################################# [ 10%]
   6:libstdc++-4.8.5-39.el7           ################################# [ 12%]
   7:gmp-1:6.0.0-15.el7               ################################# [ 14%]
   8:mpfr-3.1.1-4.el7                 ################################# [ 16%]
   9:libmpc-1.0.1-3.el7               ################################# [ 18%]
  10:gmp-devel-1:6.0.0-15.el7         ################################# [ 20%]
  11:mpfr-devel-3.1.1-4.el7           ################################# [ 22%]
  12:libstdc++-devel-4.8.5-39.el7     ################################# [ 24%]
  13:elfutils-libelf-0.176-4.el7      ################################# [ 25%]
  14:libgo-4.8.5-39.el7               ################################# [ 27%]
  15:libgo-devel-4.8.5-39.el7         ################################# [ 29%]
  16:libmpc-devel-1.0.1-3.el7         ################################# [ 31%]
  17:cpp-4.8.5-39.el7                 ################################# [ 33%]
  18:libgfortran-4.8.5-39.el7         ################################# [ 35%]
  19:zlib-devel-1.2.7-18.el7          ################################# [ 37%]
  20:elfutils-libelf-devel-0.176-4.el7################################# [ 39%]
  21:libaio-0.3.109-13.el7            ################################# [ 41%]
  22:libgnat-4.8.5-39.el7             ################################# [ 43%]
  23:libgomp-4.8.5-39.el7             ################################# [ 45%]
  24:libobjc-4.8.5-39.el7             ################################# [ 47%]
  25:libtool-ltdl-2.4.2-22.el7_3      ################################# [ 49%]
  26:unixODBC-2.3.1-14.el7            ################################# [ 51%]
  27:lm_sensors-libs-3.4.0-8.20160601g################################# [ 53%]
  28:libgnat-devel-4.8.5-39.el7       ################################# [ 55%]
  29:kernel-headers-3.10.0-1127.19.1.e################################# [ 57%]
  30:glibc-headers-2.17-307.el7.1     ################################# [ 59%]
  31:glibc-devel-2.17-307.el7.1       ################################# [ 61%]
  32:gcc-4.8.5-39.el7                 ################################# [ 63%]
  33:gcc-c++-4.8.5-39.el7             ################################# [ 65%]
  34:gcc-objc-4.8.5-39.el7            ################################# [ 67%]
  35:libquadmath-devel-4.8.5-39.el7   ################################# [ 69%]
  36:elfutils-default-yama-scope-0.176################################# [ 71%]
  37:elfutils-libs-0.176-4.el7        ################################# [ 73%]
  38:gcc-gfortran-4.8.5-39.el7        ################################# [ 75%]
  39:gcc-objc++-4.8.5-39.el7          ################################# [ 76%]
  40:gcc-gnat-4.8.5-39.el7            ################################# [ 78%]
  41:gcc-go-4.8.5-39.el7              ################################# [ 80%]
  42:gcc-plugin-devel-4.8.5-39.el7    ################################# [ 82%]
  43:sysstat-10.1.5-19.el7            ################################# [ 84%]
  44:unixODBC-devel-2.3.1-14.el7      ################################# [ 86%]
  45:libaio-devel-0.3.109-13.el7      ################################# [ 88%]
  46:elfutils-libelf-devel-static-0.17################################# [ 90%]
  47:libstdc++-static-4.8.5-39.el7    ################################# [ 92%]
  48:compat-libstdc++-33-3.2.3-72.el7 ################################# [ 94%]
  49:pdksh-5.2.14-37.el7.centos.1     ################################# [ 96%]
  50:pdksh-debuginfo-5.2.14-37.el7.cen################################# [ 98%]
  51:libstdc++-docs-4.8.5-39.el7      ################################# [100%]

五、Oracle 软件的安装与配置

1、上传并解压缩 Oracle 安装文件

(1)把安装文件上传到服务器

切换为 oracle 用户,把安装文件上传到 /home/oracle 目录:

[oracle@hisdg ~]$ pwd
/home/oracle
[oracle@hisdg ~]$ ll
总用量 2487200
-rw-r--r--. 1 oracle oinstall 1395582860 17 2020 p13390677_112040_Linux-x86-64_1of7.zip
-rw-r--r--. 1 oracle oinstall 1151304589 17 2020 p13390677_112040_Linux-x86-64_2of7.zip

(2)解压缩安装文件

# 解压缩安装文件
[oracle@hisdg ~]$ unzip p13390677_112040_Linux-x86-64_1of7.zip
[oracle@hisdg ~]$ unzip p13390677_112040_Linux-x86-64_2of7.zip

# 查看目录所有者及权限
[oracle@hisdg ~]$ ll
总用量 2487200
drwxr-xr-x. 7 oracle oinstall        136 827 2013 database
-rw-r--r--. 1 oracle oinstall 1395582860 17 2020 p13390677_112040_Linux-x86-64_1of7.zip
-rw-r--r--. 1 oracle oinstall 1151304589 17 2020 p13390677_112040_Linux-x86-64_2of7.zip

2、修改 oracle 应答模板文件 —— db_install.rsp

(1)查看应答文件

该文件默认存放在解压后的安装包内,在 /home/oracle/database/response 目录下。

[oracle@hisdg response]$ pwd
/home/oracle/database/response
[oracle@hisdg response]$ ll
总用量 80
-rwxr-xr-x. 1 oracle oinstall 44533 827 2013 dbca.rsp
-rw-r--r--. 1 oracle oinstall 25116 827 2013 db_install.rsp
-rwxr-xr-x. 1 oracle oinstall  5871 827 2013 netca.rsp

(2)修改应答文件

# 把应答模板文件db_install.rsp复制到/home/oracle/目录下
[oracle@hisdg response]$ cp db_install.rsp /home/oracle/
[oracle@hisdg response]$ cd /home/oracle
[oracle@hisdg ~]$ ll
总用量 2487228
drwxr-xr-x. 7 oracle oinstall        136 827 2013 database
-rw-r--r--. 1 oracle oinstall      25116 210 14:10 db_install.rsp
-rw-r--r--. 1 oracle oinstall 1395582860 17 2020 p13390677_112040_Linux-x86-64_1of7.zip
-rw-r--r--. 1 oracle oinstall 1151304589 17 2020 p13390677_112040_Linux-x86-64_2of7.zip

# 修改应答文件的内容如下:
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=hisdg
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
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.memoryLimit=81920
oracle.install.db.config.starterdb.password.ALL=oracle
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false            
DECLINE_SECURITY_UPDATES=true

3、根据应答文件静默安装 oracle

(1)切换为 oracle 用户,执行 /home/oracle/soft/database/runInstaller 文件

[oracle@hisdg database]$ pwd
/home/oracle/database
[oracle@hisdg database]$ ll
总用量 44
drwxr-xr-x.  4 oracle oinstall   248 827 2013 install
-rw-r--r--.  1 oracle oinstall 30016 827 2013 readme.html
drwxr-xr-x.  2 oracle oinstall    61 210 14:13 response
drwxr-xr-x.  2 oracle oinstall    34 827 2013 rpm
-rwxr-xr-x.  1 oracle oinstall  3267 827 2013 runInstaller
drwxr-xr-x.  2 oracle oinstall    29 827 2013 sshsetup
drwxr-xr-x. 14 oracle oinstall  4096 827 2013 stage
-rw-r--r--.  1 oracle oinstall   500 827 2013 welcome.html


[oracle@hisdg database]$ ./runInstaller  -silent -responseFile /home/oracle/db_install.rsp -ignorePrereq
正在启动 Oracle Universal Installer...

检查临时空间: 必须大于 120 MB。   实际为 18278 MB    通过
检查交换空间: 必须大于 150 MB。   实际为 4495 MB    通过
准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2023-02-10_02-19-50PM. 请稍候...[oracle@hisdg database]$ 可以在以下
位置找到本次安装会话的日志: /u01/app/oraInventory/logs/installActions2023-02-10_02-19-50PM.log
Oracle Database 11g 的 安装 已成功。
请查看 '/u01/app/oraInventory/logs/silentInstall2023-02-10_02-19-50PM.log' 以获取详细资料。

以 root 用户的身份执行以下脚本:
	1. /u01/app/oraInventory/orainstRoot.sh
	2. /u01/app/oracle/product/11.2.0/db_1/root.sh


Successfully Setup Software.

(2)安装时可以使用如下命令查看安装日志信息

[oracle@hisdg ~]$ tail -f /u01/app/oraInventory/logs/installActions2023-02-10_02-19-50PM.log
信息: 正在安装
信息: 将文件提取到 '/u01/app/oracle/product/11.2.0/db_1'。
信息: 将文件提取到 '/u01/app/oracle/product/11.2.0/db_1'。
信息: 根据文件 'oracle.server_EE_exp_1.xml' 中的信息执行快速复制操作。
信息: 根据文件 'racfiles.jar' 中的信息执行快速复制操作。
信息: 根据文件 'oracle.server_EE_dirs.lst' 中的信息执行快速复制操作。
信息: 根据文件 'oracle.server_EE_filemap.jar' 中的信息执行快速复制操作。
信息: 根据文件 'oracle.server_EE_1.xml' 中的信息执行快速复制操作。
信息: 根据文件 'setperms1.sh' 中的信息执行快速复制操作。
信息: Number of threads for fast copy :1
.......

(3)打开另一个终端,切换到 root 用户,执行 orainstRoot.sh 和 root.sh 脚本

# 切换为root用户
[oracle@hisdg ~]$ su - root
密码:
上一次登录:五 210 14:11:33 CST 2023192.168.1.8pts/1 上

# 执行脚本:orainstRoot.sh
[root@hisdg ~]# /u01/app/oraInventory/orainstRoot.sh
更改权限/u01/app/oraInventory.
添加组的读取和写入权限。
删除全局的读取, 写入和执行权限。

更改组名/u01/app/oraInventory 到 oinstall.
脚本的执行已完成。

# 执行脚本:root.sh
[root@hisdg ~]# /u01/app/oracle/product/11.2.0/db_1/root.sh
Check /u01/app/oracle/product/11.2.0/db_1/install/root_hisdg_2023-02-10_14-35-46.log for the output of root script

4、配置监听

(1)运行 netca 脚本,生成 sqlnet.ora 和 listener.ora 文件

生成的文件位于 $ORACLE_HOME/network/admin 目录下:

[oracle@hisdg database]$ netca -silent -responsefile /home/oracle/database/response/netca.rsp

正在对命令行参数进行语法分析:
参数"silent" = true
参数"responsefile" = /home/oracle/database/response/netca.rsp
完成对命令行参数进行语法分析。
Oracle Net Services 配置:
完成概要文件配置。
Oracle Net 监听程序启动:
    正在运行监听程序控制: 
      /u01/app/oracle/product/11.2.0/db_1/bin/lsnrctl start LISTENER
    监听程序控制完成。
    监听程序已成功启动。
监听程序配置完成。
成功完成 Oracle Net Services 配置。退出代码是0


[oracle@hisdg database]$ cd $ORACLE_HOME/network/admin
[oracle@hisdg admin]$ 
[oracle@hisdg admin]$ pwd
/u01/app/oracle/product/11.2.0/db_1/network/admin
[oracle@hisdg admin]$ ll
总用量 12
-rw-r--r--. 1 oracle oinstall 366 210 14:48 listener.ora
drwxr-xr-x. 2 oracle oinstall  64 210 14:22 samples
-rw-r--r--. 1 oracle oinstall 381 1217 2012 shrept.lst
-rw-r--r--. 1 oracle oinstall 219 210 14:48 sqlnet.ora

(2)启动监听

[oracle@hisdg admin]$ lsnrctl start LISTENER

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 10-FEB-2023 14:49:22

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

TNS-01106: Listener using listener name LISTENER has already been started

(3)查看监听状态

[oracle@hisdg admin]$ netstat -tlnp
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::1521                 :::*                    LISTEN      22518/tnslsnr       
tcp6       0      0 :::22                   :::*                    LISTEN      -                   
tcp6       0      0 ::1:25                  :::*                    LISTEN      -        



[oracle@hisdg admin]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 10-FEB-2023 14:50:09

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date                10-FEB-2023 14:48:04
Uptime                    0 days 0 hr. 2 min. 6 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/hisdg/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hisdg)(PORT=1521)))
The listener supports no services
The command completed successfully

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/335080.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

共享模型之无锁(二)

1.原子基本类型 1>.J.U.C并发包提供了多个原子基本类型: AtomicBoolean AtomicInteger AtomicLong ...2>.以AtomicInteger为例: public class TestAtomicIntegerDemo01 {public static void main(String[] args) {//原子整型类AtomicInteger i new AtomicInteger(0);…

linux入门---基础指令(上)

这里写目录标题前言ls指令pwd指令cd指令touch指令mkdirrmdirrmman指令cp指令mv指令前言 我们平时使用电脑主要是通过鼠标键盘以及操作系统中自带的图形来对电脑执行相应的命令&#xff0c;比如说我想打开D盘中的cctalk这个文件&#xff1a; 我就可以先用鼠标左键单击这个文件…

负载均衡的方式

在业务初期&#xff0c;我们一般会先使用单台服务器对外提供服务。随着业务流量越来越大&#xff0c;单台服务器无论如何优化&#xff0c;无论采用多好的硬件&#xff0c;总会有性能天花板&#xff0c;当单服务器的性能无法满足业务需求时&#xff0c;就需要把多台服务器组成集…

五岳科技与亚马逊云科技,助力中国产品实现全球品牌力提升

随着DTC模式实践在全球跨境电商市场取得成功&#xff0c;越来越多中国品牌走出国门&#xff0c;走向世界。而文化差异、语言隔阂、信息差等始终是行业中的共同难题&#xff0c;如何提高竞争壁垒与解决数据困境成为企业的共同需求。 作为一家致力于用AI技术赋能传统行业升级以…

将群晖NAS变为本地盘

本文介绍一个工具&#xff0c;可以在 Windows 系统下将群晖NAS的目录变为本地盘&#xff0c;好处是在外部访问的时候&#xff0c;能够大大改善体验。可以用本地的应用程序直接打开&#xff0c;速度依赖网络带宽&#xff0c;正常情况下&#xff0c;看视频是没有问题的。当然&…

MySQL入门篇-Xtrabackup详细介绍

Xtrabackup简介 MySQL冷备、mysqldump、MySQL热拷贝都无法实现对数据库进行增量备份。在实际生产环境中增量备份是非常实用的&#xff0c;如果数据大于50G或100G&#xff0c;存储空间足够的情况下&#xff0c;可以每天进行完整备份&#xff0c;如果每天产生的数据量较大&#…

Vue3 企业级优雅实战 - 组件库框架 - 11 组件库的打包构建和发布

回顾第一篇文章中谈到的组件库的几个方面&#xff0c;只剩下最后的、也是最重要的组件库的打包构建、本地发布、远程发布了。 1 组件库构建 组件库的入口是 packages/yyg-demo-ui&#xff0c;构建组件库有两个步骤&#xff1a; 添加 TypeScript 的配置文件&#xff1a; tsco…

百趣代谢组学资讯:槟榔的基因组为雌雄同株植物的性别决定提供见解

文章标题&#xff1a;The genome of Areca catechu provides insights into sex determination of monoecious plants 发表期刊&#xff1a;New Phytologist 影响因子&#xff1a;10.323 作者单位&#xff1a;海南大学 百趣生物提供服务&#xff1a;植物激素高通量靶标定…

怎么查看自己的电脑IP地址?

作为一个互联网冲浪侠&#xff0c;你应该对IP地址并不陌生&#xff1a;访问网站和网络服务器知道你的IP地址&#xff1b;发送的电子邮件头包含你的IP地址。如果有人想从IP地址追踪到你的物理地址和身份&#xff0c;是有可能的。 IP地址代表互联网协议地址。它是一个特殊的号码…

linux高级命令系列一

重定向命令学习目标能够使用重定向命令将终端显示内容重定向到文件1. 重定向命令的介绍重定向也称为输出重定向&#xff0c;把在终端执行命令的结果保存到目标文件。2. 重定向命令的使用命令说明>如果文件存在会覆盖原有文件内容&#xff0c;相当于文件操作中的‘w’模式>…

C/C++:预处理(下)

目录 一.回顾程序的编译链接过程 二. 预处理之预定义#define 1.#define定义的标识符 2.#define定义的宏 3.带副作用的表达式作为宏实参 4.两个经典的宏 5.#define使用的一些注意事项小结 6.宏与函数的比较 7.#undef 附&#xff1a;关于#define的三个冷知识 三. 条件…

Android 14 首个开发者预览版到来

作者 / Dave Burke, VP of Engineering让 Android 在数十亿用户的手中良好运行&#xff0c;是我们、Android 设备制造商&#xff0c;以及开发者社区的一致追求。今天&#xff0c;我们为大家带来 Android 14 的第一个开发者预览版。大家针对预览版提出的反馈具有重要意义&#x…

企业管理的三大基石及其关系

企业管理的三大基石三大基石是什么三大基石的关系制度&#xff1a;管理&#xff1a;文化&#xff1a;三大基石是什么 一个企业&#xff0c;不管它是属于哪种类型&#xff0c;影响员工行为的都有三种力量——制度、管理和文化&#xff0c;这是管理的三大基石。 三大基石的关系 …

sleep()、wait()、 join()、 yield()的区别

在这之前&#xff0c;需要明白锁池和等待池的含义 1.锁池 所有需要竞争同步锁的线程都会放在锁池当中&#xff0c;比如当前对象的锁已经被其中一个线程得到&#xff0c;则其他线程需要在这个锁池进行等待&#xff0c;当前面的线程释放同步锁后锁池中的线程去竞争同步锁&#…

ThreadLocal 源码级别详解

ThreadLocal简介 稍微翻译一下&#xff1a; ThreadLocal提供线程局部变量。这些变量与正常的变量不同&#xff0c;因为每一个线程在访问ThreadLocal实例的时候&#xff08;通过其get或set方法&#xff09;都有自己的、独立初始化的变量副本。ThreadLocal实例通常是类中的私有静…

excel拆分实例:如何快速制作考勤统计分析表

面对新的统计需求&#xff0c;很多人会一下变懵&#xff0c;不知如何办。如果涉及的统计有一千多行数据&#xff0c;哭的心思都有了&#xff1a;什么时候才能下班哟&#xff01;今天老菜鸟通过考勤统计分析表实例分享自己面对新统计需求的解决方法&#xff1a;简化数据、找数据…

【表面缺陷检测】基于YOLOX的PCB表面缺陷检测(全网最详细的YOLOX保姆级教程)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 Hello,大家好,我是augustqi。 今天给大家分享一个表面缺陷检测项目:基于YOLOX的PCB表面缺陷检测(保姆级教程)。多的…

用于异常检测的深度神经网络模型融合

用于异常检测的深度神经网络模型融合 在当今的数字时代&#xff0c;网络安全至关重要&#xff0c;因为全球数十亿台计算机通过网络连接。近年来&#xff0c;网络攻击的数量大幅增加。因此&#xff0c;网络威胁检测旨在通过观察一段时间内的流量数据来检测这些攻击&#xff0c;…

主流无线音频传输方案

一、概述 无线音频传输很大程度上解决了音影设备布线难的问题&#xff0c;特别是大型的场合。科技的进步&#xff0c;用户对无线传输的要求越来越高&#xff0c;一发对多收的无线音频方案将成为主流。 二、方案分类 无线传输方案&#xff0c;从目前来说方案的种类还是很多的&am…

线材分享丨同为(TOWE)IEC 60320国际标准制式电源转换延长线

电源线的作用是传输电流&#xff0c;其传输方式通常是点对点传输&#xff0c;在生活中我们随处可见它的身影。电源线按照用途可以分为AC交流电源线及DC直流电源线&#xff0c;而AC电源线有着高需要统一标准获得安全认证&#xff0c;如国标CCC认证机构、美国UL认证机构、欧洲VDE…