【oracle数据库安装篇三】Linux6.8单机环境oracle11g容灾ADG搭建

说明

DataGuard 是在主节点与备用节点间通过日志同步来保证数据的同步,可以实现数据库快速切换与灾难性恢复。用户能够在对主数据库影响很小的情况下,实现主备数据库的同步。

image.png

关联文章

【oracle数据库安装篇一】Linux5.6基于LVM安装oracle11gR2单机
【oracle数据库安装篇二】Linux6.8基于ASM安装oracle11gR2单机
【oracle数据库安装篇三】Linux6.8单机环境oracle11g容灾ADG搭建
【oracle数据库安装篇四】Linux6.8安装oracle11gR2之RAC双节点集群(待续)

1 环境规划

配置项主库备库
操作系统版本rhel6.8 x86_64rhel6.8 x86_64
服务器主机名oracle11goracle11gadg
IP地址192.168.56.3192.168.56.5
数据库版本11.2.0.4.011.2.0.4.0
db_nameorclorcl
db_unique_nameorclorcladg
instance_nameorclorcladg
存储方式ASMfile system
本地磁盘及Oracle软件目录/u01/app/oracle/u01/app/oracle

2 前期准备

主节点搭建好主库,备用节点只需要安装数据库软件。为了方便后续配置,需要提前规划好和清楚主库和备库的db_name、db_unique_name、instance_name、数据库文件路径。

例如,确定文件路径:

我的主库存储方式是ASM,需要清楚主库文件路径:

SQL> select name from v$datafile where rownum = 1;
NAME
--------------------------------------------------------------------------------
+DATA/orcl/datafile/system.256.1166397573SQL> select member from v$logfile where rownum = 1;
MEMBER
--------------------------------------------------------------------------------
+DATA/orcl/onlinelog/group_1.261.1166397623

所以可以确定主库的文件路径为+DATA/orcl,这需要记录下来,后面配置参数需要用到。

备库的存储方式我这里没有像主库一样用ASM,用的是file system。所以需要自己规划好文件路径创建在哪里,一般创建在数据库软件目录下:/u01/app/oracle/oradata/orcladg/$ORACLE_SID。如果也是使用ASM存储方式,则需要提前创建好asm实例。

3 主库配置

3.1 激活归档和强制记录日志

检查归档是否激活:

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/app/oracle/arch
Oldest online log sequence     44
Next log sequence to archive   46
Current log sequence           46

如果Automatic archival为Disabled,则需要将数据库启动到mount状态,然后开启归档:

SQL>shutdown immediate
SQL>startup mount
SQL>alter database archivelog;
SQL>alter database open;

查看是否打开强制记录日志:

SQL> select force_logging from v$database;FOR
---
NO

开启强制记录日志:

SQL> ALTER DATABASE FORCE LOGGING;Database altered.

3.2 添加Standby日志组

查看主库online日志数量和大小:

SQL> 
set lines 200
col groupno for a10
col member for a50
col THREAD for a10
SELECT to_char(f.group#) groupno , to_char(l.thread#) thread , f.member member , f.type redo_file_type , l.status group_status , f.status member_status , l.bytes/1024/1024 bytes , l.archived archived FROM v$logfile f , v$log l WHERE f.group# = l.group# ORDER BY f.group#, f.member;GROUPNO    THREAD     MEMBER                                             REDO_FI GROUP_STATUS     MEMBER_      BYTES ARC
---------- ---------- -------------------------------------------------- ------- ---------------- ------- ---------- ---
1          1          +DATA/orcl/onlinelog/group_1.261.1166397623        ONLINE  CURRENT                          50 NO
2          1          +DATA/orcl/onlinelog/group_2.262.1166397623        ONLINE  INACTIVE                         50 YES
3          1          +DATA/orcl/onlinelog/group_3.263.1166397623        ONLINE  INACTIVE                         50 YES

添加Standby日志组,大小与onlinelog一样,数量多一两组:

alter database add standby logfile group 4 '+DATA' size 50m;
alter database add standby logfile group 5 '+DATA' size 50m;
alter database add standby logfile group 6 '+DATA' size 50m;
alter database add standby logfile group 7 '+DATA' size 50m;
alter database add standby logfile group 8 '+DATA' size 50m;

查看

SQL> select group#,THREAD#,archived,status from v$standby_log;GROUP#    THREAD# ARC STATUS
---------- ---------- --- ----------4          0 YES UNASSIGNED5          0 YES UNASSIGNED6          0 YES UNASSIGNED7          0 YES UNASSIGNED8          0 YES UNASSIGNED

3.3 修改DG参数

alter system set log_archive_config='DG_CONFIG=(orcl,orcladg)' scope=both ;
alter system set log_archive_dest_1='LOCATION=/u01/app/oracle/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' scope=both;
alter system set log_archive_dest_2='SERVICE=orcladg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcladg' scope=both;
alter system set log_archive_dest_state_1=ENABLE scope=both;
alter system set log_archive_dest_state_2=ENABLE scope=both;
alter system set fal_server=orcladg scope=both;
alter system set fal_client=orcl scope=both;
alter system set standby_file_management=auto;
alter system set db_file_name_convert='/u01/app/oracle/oradata/orcladg','+DATA/orcl' scope=spfile;
alter system set log_file_name_convert='/u01/app/oracle/oradata/orcladg','+DATA/orcl' scope=spfile;

参数说明:

  • log_archive_config:指定Data Guard配置中的两个数据库的唯一名称:orcl(主数据库)和orcladg(备用数据库)。
  • log_archive_dest_1:定义了第一个归档日志路径,即归档日志将被写入到/u01/app/oracle/arch目录下。这个归档位置对所有日志文件和所有角色(主和备用)都有效,且这些归档日志属于orcl数据库。
  • log_archive_dest_2:第二个归档日志目标,即归档日志将通过LGWR(日志写入器)进程异步发送到名为orcladg的备用数据库服务上。这个归档位置仅对在线日志文件和主角色有效,且这些归档日志属于orcladg数据库。
  • log_archive_dest_state_1:启用log_archive_dest_1。
  • log_archive_dest_state_2:启用log_archive_dest_2。
  • fal_server:指定了FAL(Fetch Archive Log)服务器。
  • fal_client:指定了FAL(Fetch Archive Log)客户端。
  • standby_file_management:设置备用数据库的文件管理为自动模式,备用数据库将自动创建、删除或重命名所需的文件。
  • db_file_name_convert:当数据文件从主数据库复制到备用数据库时转换文件名。
  • log_file_name_convert:当日志文件从主数据库复制到备用数据库时转换文件名。

创建静态参数文件:

SQL> create pfile='/home/oracle/pfile/initorcl.ora' from spfile;File created.

3.4 添加网络服务名

[oracle@oracle11g admin]$ cat $ORACLE_HOME/network/admin/tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.ORCL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle11g)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))ORCLADG =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle11gadg)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)(UR = A)))

测试联通性:

[oracle@oracle11g ~]$ tnsping orcladgTNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 21-APR-2024 21:47:08Copyright (c) 1997, 2013, Oracle.  All rights reserved.Used parameter files:Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle11gadg)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) (UR = A)))
OK (10 msec)

3.5 传输参数文件和密码文件到备用节点

[oracle@oracle11g ~]$ scp $ORACLE_HOME/network/admin/tnsnames.ora oracle11gadg:$ORACLE_HOME/network/admin/tnsnames.ora
oracle@oracle11gadg's password:
tnsnames.ora                                                                                                           100%  514     0.5KB/s   00:00[oracle@oracle11g ~]$ scp $ORACLE_HOME/dbs/orapworcl oracle11gadg:$ORACLE_HOME/dbs/orapworcladg
oracle@oracle11gadg's password:
orapworcl                                                                                                              100% 2048     2.0KB/s   00:00

注意:这个密码文件的格式是orapw$ORACLE_SID,如果备库的实例名和主库不一致的话,密码文件的后缀名也要相应修改。如果密码文件名不对的话,远程登录备库的时候就会报错。我备库的实例名是orcladg,所以密码文件为orapworcladg。

4 备库配置

4.1 环境变量

主要是确认实例名。

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2/db_1
export ORACLE_SID=orcladg
export LANG=en_US
export PATH=$ORACLE_HOME/bin:$PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export TEMP=/tmp
export TMPDIR=/tmp
umask 022
export PATH

4.2 创建数据库文件目录

创建数据目录和快速恢复区域目录:

[oracle@oracle10g oracle]$ mkdir -p /u01/app/oracle/oradata/orcladg/orcladg[oracle@oracle10g oracle]$ mkdir -p /u01/app/oracle/fast_recovery_area/orcladg

如果你的备库也创建了ASM实例,那么就切换到grid用户,asmcmd命令进去创建目录:

[grid@oracle11g ~]$ asmcmd
ASMCMD> mkdir /data/orcladg
ASMCMD> ls data
ASM/
ORCLADG/

4.3 配置静态监听

由于备库未建库,当备库没有实例无法启动,最多启动到nomount状态,这时动态监听注册的服务状态为BLOCKED,是无法连接的。

为了让主库能远程登录备库,所以需要创建备库的静态监听。

静态注册就是 listener 启动时读取 listener.ora 文件中实例和服务的配置,将
实例和服务注册到监听进程,实例状态为UNKNOWN值时表明此服务是静态注册的,这时实例可能并未启动。

把下面这段监听配置添加到$ORACLE_HOME/network/admin/listener.ora文件中:

SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = orcl)(ORACLE_HOME = /u01/app/oracle/product/11.2/db_1)(SID_NAME = orcladg)))

注意:SID_NAME为备库实例名。GLOBAL_DBNAME为服务名,取什么都可以,需要和tnsnames.ora文件的server_name保持一致。

4.4 配置tnsnames.ora

检查一下从主库传过来的tnsnames.ora配置是否正确:

[oracle@oracle11gadg admin]$ cat tnsnames.ora
ORCL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle11g)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))ORCLADG =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = oracle11gadg)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)(UR = A)))

注意:SERVICE_NAME需要和listener.ora文件的静态监听配置的GLOBAL_DBNAME保持一致。

4.5 修改参数

修改从主库传过来的静态参数文件:

[oracle@oracle11gadg dbs]$ vim $ORACLE_HOME/dbs/initorcladg.oraorcl.__db_cache_size=352321536
orcl.__java_pool_size=4194304
orcl.__large_pool_size=8388608
orcl.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=335544320
orcl.__sga_target=503316480
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=130023424
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='/u01/app/oracle/oradata/orcladg/controlfile/controlfile1.ctl','/u01/app/oracle/oradata/orcladg/controlfile/controlfile2.ctl','/u01/app/oracle/fast_recovery_area/orcladg/controlfile/controlfile3.ctl'#Oracle managed file
*.db_block_size=8192
*.db_domain=''
*.db_file_name_convert='+DATA/orcl','/u01/app/oracle/oradata/orcladg'
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area/orcladg'
*.db_recovery_file_dest_size=4294967296
*.db_unique_name='ORCLADG'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.fal_client='ORCLADG'
*.fal_server='ORCL'
*.log_archive_config='DG_CONFIG=(orcladg,orcl)'
*.log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/orcladg/arch'
*.log_archive_dest_2='SERVICE=orcladg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcladg'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_file_name_convert='+DATA/orcl','/u01/app/oracle/oradata/orcladg'
*.memory_target=838860800
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'

需要关注或修改的几个参数为:

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.control_files='/u01/app/oracle/oradata/orcladg/controlfile/controlfile1.ctl','/u01/app/oracle/oradata/orcladg/controlfile/controlfile2.ctl','/u01/app/oracle/fast_recovery_area/orcladg/controlfile/controlfile3.ctl'#Oracle managed file
*.db_file_name_convert='+DATA/orcl','/u01/app/oracle/oradata/orcladg'
*.db_name='orcl'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area/orcladg'
*.db_unique_name='ORCLADG'
*.fal_client='ORCLADG'
*.fal_server='ORCL'
*.log_archive_config='DG_CONFIG=(orcladg,orcl)'
*.log_archive_dest_1='LOCATION=/u01/app/oracle/oradata/orcladg/arch'
*.log_archive_dest_2='SERVICE=orcladg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcladg'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_file_name_convert='+DATA/orcl','/u01/app/oracle/oradata/orcladg'

注意:db_file_name_convert和log_file_name_convert是和主库相反的。

创建adump目录:

mkdir -p /u01/app/oracle/admin/orcl/adump

4.6 开启备库到nomount状态,并启动网络监听

启动的时候会自动通过参数文件initorcladg.ora启动,此时show parameter spfile可以看到为空。

startup npomount;

验证参数,主要看db_name、db_unique_name和instance_name。

SQL> show parameter nameNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cell_offloadgroup_name               string
db_file_name_convert                 string      +DATA/orcl, /u01/app/oracle/oradata
db_name                              string      orcl
db_unique_name                       string      ORCLADG
global_names                         boolean     FALSE
instance_name                        string      orcladg
lock_name_space                      string
log_file_name_convert                string      +DATA/orcl, /u01/app/oracle/oradata
processor_group_name                 stringNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
service_names                        string      ORCLADG

启动监听:

lsnrctl stop
lsnrctl start

主备库验证连通性,主备库都执行:

sqlplus sys/oracle@orcl as sysdba
sqlplus sys/oracle@orcladg as sysdba

sys的密码根据实际替换。

5 创建备库

5.1 rman在线远程duplicate主库到备库

[oracle@oracle11g ~]$ rman target sys/oracle@orcl auxiliary sys/oracle@orcladgRMAN> 
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate auxiliary channel c3 type disk;
allocate auxiliary channel c4 type disk;
duplicate target database for standby from active database;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}

需要同时观察主库和备库的alert日志,看看有没有错误信息。如果有报错,脚本执行到中途会停下来,根据alert日志定位和解决相应问题后,重新执行一遍上述rman脚本即可,直到所有没有输出任何错误

脚本最后出现Finished Duplicate为成功。

5.2 打开备库

备库创建成功后,此时已经从nomount变为mount状态,打开备库数据库实例

SQL> select open_mode from v$database;OPEN_MODE
--------------------
MOUNTEDSQL> alter database open;Database altered.

5.3 备库开启日志应用

SQL> 
alter database recover managed standby database disconnect;
alter database recover managed standby database cancel;
alter database recover managed standby database using current logfile disconnect from session;Database altered.SQL> col name for a50
select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;NAME                                                SEQUENCE# APPLIED
-------------------------------------------------- ---------- ---------
/u01/app/oracle/oradata/arch1_39_1166397622.dbf            39 YES
/u01/app/oracle/oradata/arch1_40_1166397622.dbf            40 YES
/u01/app/oracle/oradata/arch1_41_1166397622.dbf            41 YES
/u01/app/oracle/oradata/arch1_42_1166397622.dbf            42 YES
/u01/app/oracle/oradata/arch1_43_1166397622.dbf            43 IN-MEMORY

6 安装后检查

一、查看备库同步情况

SQL> set lines 200
col name for a13
col value for a20
col unit for a30
col TIME_COMPUTED for a30
select name,value,unit,time_computed from v$dataguard_stats where name in ('transport lag','apply lag');NAME          VALUE                UNIT                           TIME_COMPUTED
------------- -------------------- ------------------------------ ------------------------------
transport lag +00 00:00:00         day(2) to second(0) interval   04/29/2024 15:22:45
apply lag     +00 00:00:00         day(2) to second(0) interval   04/29/2024 15:22:45

二、查看主备库数据库角色

主库:

SQL> select name,database_role from v$database;
NAME      DATABASE_ROLE
--------- ----------------
ORCL      PRIMARY

备库:

SQL> select name,database_role from v$database;
NAME          DATABASE_ROLE
------------- ----------------
ORCL          PHYSICAL STANDBY

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

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

相关文章

追踪攻击数据包中的真实IP地址:方法与技巧

在网络安全领域,追踪攻击数据包中的真实IP地址是一项至关重要的任务。通过确定攻击者的真实IP地址,可以有效地识别和阻止网络攻击行为,提高网络安全防御水平。IP数据云IP地址查询将介绍几种常用的方法和技巧,帮助安全人员有效追踪…

嵌入式C语言教程:实现气压监测系统

气压监测在气象学、航空和户外活动装备中非常重要。本教程将介绍如何在STM32微控制器上使用数字气压传感器实现实时气压监测系统。 一、开发环境准备 硬件要求 微控制器:STM32L476RG,具备低功耗特性和足够的处理能力。开发板:STM32L4 Disc…

CAXA 3D实体设计2024:塑造未来的创新引擎

在数字化时代的浪潮中,3D CAD实体建模设计正成为推动工业创新的核心动力。CAXA 3D实体设计2024,以其卓越的性能和丰富的功能,为企业和个人用户带来了前所未有的设计体验。 CAXA 3D实体设计2024不仅拥有直观易用的界面,还配备了强…

【Osek网络管理测试】[TG4_TC5]唤醒条件

🙋‍♂️ 【Osek网络管理测试】系列💁‍♂️点击跳转 文章目录 1.环境搭建2.测试目的3.测试步骤4.预期结果5.测试结果 1.环境搭建 硬件:VN1630 软件:CANoe 2.测试目的 验证DUT验证DUT睡眠后被唤醒,并再次睡眠能否…

关于二手车系统学习--登录模块

1.样式1-17行 <div class"cheader"><div style"width: 80%;margin: 0 auto;line-height: 50px;padding-top: 10px"><el-row><el-col:span"5"style"font-size: 20px;cursor: pointer;color: #00ae66;font-weight: bold…

运维自动化之 ansible

目录 一 常见的自动化运维工具 &#xff08;一&#xff09;有哪些常见的 自动化运维工具 &#xff08;二&#xff09;为什么后面都变成用 ansible 二 ansible 基本介绍 1&#xff0c; ansible 是什么 2&#xff0c;ansible能干什么 3&#xff0c;ansible 工作原…

桌面文件删除了怎么恢复?4个靠谱方法分享!

“我平常工作的时候喜欢将文件直接保存在电脑桌面上&#xff0c;但是今天一打开电脑&#xff0c;突然发现我的文件都不见了&#xff0c;有什么恢复桌面文件的简单方法吗&#xff1f;希望大家可以推荐几个。” 很多用户在使用电脑时可能都习惯了把文件直接放在桌面上&#xff0c…

基于.NET WinForms 数据CURD功能的实现

使用开发工具 VS 2022 C#&#xff0c;数据库MS SQL SERVER 2019 &#xff0c;基于NET WinForms&#xff0c;实现数据记录的创建(Create)、更新(Update)、读取(Read)和删除(Delete)等功能。主要控件包括&#xff1a;DataGridView&#xff0c;SqlDataApater &#xff0c; DataTab…

瑞萨RH850 SPI的异步传输

一、SPI工作原理 SPI (Serial Peripheralinterface),顾名思义就是串行外围设备接口。SPI是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;并且在芯片的管脚上只占用四根线&#xff0c;节约了芯片的管脚&#xff0c;同时为PCB的布局上节省空间&#xff0…

深度解读:Agent AI智能体如何重塑我们的现实和未来|TodayAI

​​​​​​​ 一、 引言 在当今时代&#xff0c;人工智能&#xff08;AI&#xff09;技术的快速发展正不断改变着我们的生活与工作方式。尤其是Agent AI智能体&#xff0c;作为AI技术中的一种重要形式&#xff0c;它们通过模拟人类智能行为来执行各种复杂任务&#xff0c;从…

如何从Mac上的清空垃圾箱中恢复已删除的文件?

Mac用户几乎每天都会删除文件。当您将文档删除到 Mac 垃圾箱时&#xff0c;该文件将被剪切到 Mac 垃圾箱中&#xff0c;并且可以轻松放回原处。但是&#xff0c;在某些情况下&#xff0c;您错误地删除了文档和文件&#xff0c;并在您意识到自己犯了一个大错误之前清空了垃圾箱。…

【Leetcode 42】 接雨水-单调栈解法

基础思路&#xff1a; 维持栈单调递减&#xff0c;一旦出现元素大于栈顶元素&#xff0c;就可以计算雨水量&#xff0c;同时填坑&#xff08;弹出栈顶元素&#xff09; 需要注意&#xff1a; 单调栈通常保存的是下标&#xff0c;用于计算距离 public static int trap2(int[…

leetcode-缺失的第一个正整数-96

题目要求 思路 1.这里的题目要求刚好符合map和unordered_map 2.创建一个对应map把元素添加进去&#xff0c;用map.find(res)进行查找&#xff0c;如果存在返回指向该元素的迭代器&#xff0c;否则返回map::end()。 代码实现 class Solution { public:int minNumberDisappeare…

一文快速掌握高性能内存队列Disruptor

写在文章开头 Disruptor是英国外汇公司LMAX开源的一款高性能内存消息队列&#xff0c;理想情况下单线程可支撑600w的订单。所以本文会从使用以及设计的角度来探讨一下这款神级java消息队列。 Hi&#xff0c;我是 sharkChili &#xff0c;是个不断在硬核技术上作死的 java code…

【Java基础】JVM内存简单介绍

JVM把内存分为五块&#xff1a;栈、堆、方法区、本地方法区、寄存器当函数被调用时&#xff0c;函数内部的局部变量在栈中开辟内存&#xff0c;当局部变量的作用域结束时&#xff0c;立刻释放栈中所占据的内存。 栈 栈的特点&#xff1a;先进后出当函数被调用时&#xff0c;为…

unity制作app(5)--发送数据给数据库

这个之前做过&#xff0c;先不做照片的。下一节再做带照片的。 第一步 收集数据 1.先做一个AppModel结构体&#xff0c;这个结构体需要单做的。 using System; using System.Collections.Generic; using System.Linq; using System.Text; //using Assets.Model; public clas…

【Linux】System V 共享内存

文章目录 1. 共享内存示意图2. 共享内存数据结构3. 共享内存函数shmgetshmatshmdtshmctl 4. 实例代码测试共享内存5. 共享内存相关命令6. System V 消息队列&#xff08;了解&#xff09;7. System V 信号量&#xff08;了解&#xff09; 共享内存区是最快的 IPC 形式。一旦这样…

力扣每日一题109:有序链表转换二叉搜索树

题目 中等 给定一个单链表的头节点 head &#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为 平衡 二叉搜索树。 示例 1: 输入: head [-10,-3,0,5,9] 输出: [0,-3,9,-10,null,5] 解释: 一个可能的答案是[0&#xff0c;-3,9&#xff0c;-10,null,5]&#xff0c;它…

Linux进程间通信方式

每个进程的用户空间都是独立的&#xff0c;不能相互访问。 所有进程的内核空间(32位系统3G-4G)都是共享的 应用场景 作为缓冲区&#xff0c;处理速度不同的进程之间的数据传输资源共享&#xff1a;多个进程之间共享同样的资源&#xff0c;一个进程对共享数据的修改&#xff0c…

【目录】500 行或更少(500 Lines or Less)

AOSA 500 行或更少&#xff08;500 Lines or Less&#xff09;是《开源应用程序体系结构》(Architecture of Open Source Applications, AOSA)系列的第四卷。该系列的前三卷是关于大型程序必须解决的大问题&#xff0c;而本书专注于程序员在构建新事物时在小规模中做出的设计决…