网站首页 > 技术文章 正文
Oracle体系结构理解
我们去了解一个新的数据库系统.首先需要弄清楚它的逻辑和物理结构.所以接下来.我们一起了解一下Oracle的体系结构.了解了它的体系结构能够帮我们快速入门Oracle.MySQL是单进程多线程的结构.Oracle和PG都是多进程.
Oracle的整体结构
Oracle server是由instance和database两部分组成.一个instance只能对应一个数据库.rac是特殊情况.一个数据库对应了多个instance
物理结构:
主要是我们环境变量中指定的ORACLE_BASE下边的各个目录下的文件
[oracle@db01 ~]$ cd $ORACLE_BASE
[oracle@db01 oracle]$ ll
总用量 0
drwxr-x--- 4 oracle oinstall 31 8月 3 09:28 admin
drwxr-x--- 4 oracle oinstall 31 8月 3 09:30 audit
drwxr-x--- 5 oracle oinstall 47 8月 2 14:20 cfgtoollogs
drwxr-xr-x 2 oracle oinstall 6 8月 2 14:11 checkpoints
drwxrwxr-x 23 oracle oinstall 280 8月 2 14:11 diag
drwxr-x--- 3 oracle oinstall 19 8月 3 09:28 oradata
drwxrwxr-x 3 oracle oinstall 18 8月 2 13:48 product
其中product下主要是我们的程序目录.类似于MySQL的程序目录
[oracle@db01 oracle]$ ll product/19.3/db/
总用量 80
drwxr-xr-x 2 oracle oinstall 102 8月 2 14:11 addnode
drwxr-xr-x 6 oracle oinstall 4096 4月 17 2019 apex
drwxr-xr-x 9 oracle oinstall 93 4月 17 2019 assistants
drwxr-xr-x 2 oracle oinstall 8192 8月 2 14:12 bin
drwxr-xr-x 4 oracle oinstall 30 8月 2 14:11 cfgtoollogs
drwxr-xr-x 4 oracle oinstall 87 8月 2 14:11 clone
drwxr-xr-x 6 oracle oinstall 55 4月 17 2019 crs
drwxr-xr-x 3 oracle oinstall 18 4月 17 2019 css
drwxr-xr-x 11 oracle oinstall 119 4月 17 2019 ctx
drwxr-xr-x 7 oracle oinstall 71 4月 17 2019 cv
drwxr-xr-x 3 oracle oinstall 20 4月 17 2019 data
drwxr-xr-x 3 oracle oinstall 19 4月 17 2019 dbjava
drwxr-xr-x 2 oracle oinstall 169 8月 3 13:47 dbs
drwxr-xr-x 5 oracle oinstall 191 8月 2 14:11 deinstall
drwxr-xr-x 3 oracle oinstall 20 4月 17 2019 demo
drwxr-xr-x 3 oracle oinstall 20 4月 17 2019 diagnostics
drwxr-xr-x 13 oracle oinstall 198 4月 17 2019 dmu
drwxr-xr-x 4 oracle oinstall 30 4月 17 2019 drdaas
drwxr-xr-x 3 oracle oinstall 19 4月 17 2019 dv
-rw-r--r-- 1 oracle oinstall 852 8月 18 2015 env.ora
drwxr-xr-x 3 oracle oinstall 18 4月 17 2019 has
drwxr-xr-x 5 oracle oinstall 41 4月 17 2019 hs
drwxrwx--- 10 oracle oinstall 4096 8月 2 14:11 install
drwxr-xr-x 2 oracle oinstall 29 4月 17 2019 instantclient
drwxr-x--- 14 oracle oinstall 233 8月 2 14:11 inventory
drwxr-xr-x 8 oracle oinstall 82 4月 18 2019 javavm
drwxr-xr-x 3 oracle oinstall 35 4月 17 2019 jdbc
drwxr-xr-x 6 oracle oinstall 219 4月 18 2019 jdk
drwxr-xr-x 2 oracle oinstall 4096 4月 17 2019 jlib
drwxr-xr-x 10 oracle oinstall 112 4月 17 2019 ldap
drwxr-xr-x 4 oracle oinstall 12288 8月 2 14:11 lib
drwxr-x--T 4 oracle oinstall 30 8月 3 09:17 log
drwxr-xr-x 9 oracle oinstall 98 4月 17 2019 md
drwxr-xr-x 4 oracle oinstall 31 4月 17 2019 mgw
drwxr-xr-x 10 oracle oinstall 106 4月 17 2019 network
drwxr-xr-x 5 oracle oinstall 46 4月 17 2019 nls
drwxr-xr-x 8 oracle oinstall 101 4月 17 2019 odbc
drwxr-xr-x 5 oracle oinstall 42 4月 17 2019 olap
drwxr-x--- 14 oracle oinstall 4096 8月 2 14:11 OPatch
drwxr-xr-x 7 oracle oinstall 65 4月 17 2019 opmn
drwxr-xr-x 4 oracle oinstall 34 4月 17 2019 oracore
-rw-r----- 1 oracle oinstall 55 8月 2 11:07 oraInst.loc
drwxr-xr-x 6 oracle oinstall 52 4月 17 2019 ord
drwxr-xr-x 4 oracle oinstall 66 4月 17 2019 ords
drwxr-xr-x 3 oracle oinstall 19 4月 17 2019 oss
drwxr-xr-x 8 oracle oinstall 226 8月 2 14:11 oui
drwxr-xr-x 4 oracle oinstall 33 4月 17 2019 owm
drwxr-xr-x 5 oracle oinstall 39 4月 17 2019 perl
drwxr-xr-x 6 oracle oinstall 78 4月 17 2019 plsql
drwxr-xr-x 6 oracle oinstall 56 4月 18 2019 precomp
drwxr-xr-x 2 oracle oinstall 26 4月 17 2019 QOpatch
drwxr-xr-x 5 oracle oinstall 52 4月 17 2019 R
drwxr-xr-x 4 oracle oinstall 29 4月 17 2019 racg
drwxr-xr-x 13 oracle oinstall 140 4月 18 2019 rdbms
drwxr-xr-x 3 oracle oinstall 21 4月 17 2019 relnotes
-rwx------ 1 oracle oinstall 582 8月 2 14:11 root.sh
-rwx------ 1 oracle oinstall 786 4月 17 2019 root.sh.old
-rw-r----- 1 oracle oinstall 10 4月 17 2019 root.sh.old.1
-rwx------ 1 oracle oinstall 638 4月 18 2019 root.sh.old.2
-rw-r----- 1 oracle oinstall 10 4月 17 2019 root.sh.old.3
-rwxr-x--- 1 oracle oinstall 1783 3月 9 2017 runInstaller
-rw-r--r-- 1 oracle oinstall 2927 10月 15 2016 schagent.conf
drwxr-xr-x 5 oracle oinstall 119 4月 17 2019 sdk
drwxr-xr-x 3 oracle oinstall 18 4月 17 2019 slax
drwxr-xr-x 4 oracle oinstall 41 4月 17 2019 sqldeveloper
drwxr-xr-x 3 oracle oinstall 17 4月 17 2019 sqlj
drwxr-xr-x 4 oracle oinstall 236 4月 18 2019 sqlpatch
drwxr-xr-x 6 oracle oinstall 53 8月 2 14:11 sqlplus
drwxr-xr-x 6 oracle oinstall 54 4月 17 2019 srvm
drwxr-xr-x 5 oracle oinstall 45 4月 17 2019 suptools
drwxr-xr-x 3 oracle oinstall 35 4月 17 2019 ucp
drwxr-xr-x 4 oracle oinstall 31 4月 17 2019 usm
drwxr-xr-x 2 oracle oinstall 33 4月 17 2019 utl
drwxr-xr-x 3 oracle oinstall 19 4月 17 2019 wwg
drwxr-x--- 7 oracle oinstall 69 4月 17 2019 xdk
oradata下主要是数据目录(可以看到主要包含控制文件,redo文件以及对应的表空间文件)
[oracle@db01 oracle]$ ll oradata/ORCL1/
总用量 2479380
-rw-r----- 1 oracle oinstall 10600448 8月 3 15:01 control01.ctl
-rw-r----- 1 oracle oinstall 10600448 8月 3 15:01 control02.ctl
-rw-r----- 1 oracle oinstall 209715712 8月 3 13:44 redo01.log
-rw-r----- 1 oracle oinstall 209715712 8月 3 13:44 redo02.log
-rw-r----- 1 oracle oinstall 209715712 8月 3 15:01 redo03.log
-rw-r----- 1 oracle oinstall 576724992 8月 3 15:00 sysaux01.dbf
-rw-r----- 1 oracle oinstall 943726592 8月 3 14:47 system01.dbf
-rw-r----- 1 oracle oinstall 33562624 8月 3 09:32 temp01.dbf
-rw-r----- 1 oracle oinstall 361766912 8月 3 15:00 undotbs01.dbf
-rw-r----- 1 oracle oinstall 5251072 8月 3 13:44 users01.dbf
admin目录主要是记录Oracle实例配置及运行日志等文件
[oracle@db01 oracle]$ ll admin/orcl1/
总用量 12
drwxr-x--- 2 oracle oinstall 8192 8月 3 15:00 adump
drwxr-x--- 2 oracle oinstall 20 8月 3 09:32 dpdump
drwxr-x--- 2 oracle oinstall 34 8月 3 09:32 pfile
drwxr-x--- 2 oracle oinstall 44 8月 3 09:28 xdb_wallet
diag目录主要是存放各个程序的日志目录
[oracle@db01 oracle]$ ll diag/
总用量 0
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 afdboot
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 apx
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 asm
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 asmcmd
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 asmtool
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 bdsql
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 clients
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 crs
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 diagtool
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 dps
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 em
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 gsm
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 ios
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 kfod
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 lsnrctl
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 netcman
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 ofm
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 plsql
drwxrwxr-x 2 oracle oinstall 6 8月 2 14:11 plsqlapp
drwxrwxr-x 4 oracle oinstall 31 8月 3 09:28 rdbms
drwxrwxr-x 3 oracle oinstall 18 8月 3 08:10 tnslsnr
查看对应instance的日志:
[oracle@db01 oracle]$ ll diag/rdbms/orcl1/orcl1/
总用量 24
drwxr-x--- 2 oracle oinstall 21 8月 3 09:28 alert
drwxr-x--- 2 oracle oinstall 6 8月 3 09:28 cdump
drwxr-x--- 2 oracle oinstall 6 8月 3 09:28 hm
drwxr-x--- 7 oracle oinstall 100 8月 3 13:44 incident
drwxr-x--- 2 oracle oinstall 6 8月 3 09:28 incpkg
drwxr-x--- 2 oracle oinstall 6 8月 3 09:28 ir
drwxr-x--- 2 oracle oinstall 4096 8月 3 13:44 lck
drwxr-x--- 8 oracle oinstall 120 8月 3 09:28 log
drwxr-x--- 2 oracle oinstall 4096 8月 3 09:28 metadata
drwxr-x--- 2 oracle oinstall 6 8月 3 09:28 metadata_dgif
drwxr-x--- 2 oracle oinstall 6 8月 3 09:28 metadata_pv
drwxr-x--- 2 oracle oinstall 259 8月 3 13:44 stage
drwxr-x--- 2 oracle oinstall 6 8月 3 13:44 sweep
drwxr-x--- 2 oracle oinstall 12288 8月 3 15:12 trace
cfgtoollogs目录主要存放dbca.netca等程序的日志目录
[oracle@db01 oracle]$ ll cfgtoollogs/
总用量 4
drwxr-x--- 4 oracle oinstall 109 8月 3 09:28 dbca
drwxr-x--- 2 oracle oinstall 4096 8月 3 08:10 netca
drwxr-x--- 7 oracle oinstall 218 8月 3 09:32 sqlpatch
checkpoints 存放检查点的目录
audit 审计信息目录
逻辑结构:
Oracle的逻辑结构是段区块.在Oracle中默认的块大小是8k.可以修改.默认一个区是8个块.在MySQL中逻辑结构是段区页.默认页大小是16k.默认一个区是64个数据页.
Oracle的内存结构:
Oracle的内存主要分为SGA和PGA两块内存区
SGA介绍:SGA是一组为系统分配的共享的内存结构,可以包含一个数据库实例的数据或控制信息。如果多个用户连接到同一个数据库实例,在实例的SGA中,数据可以被多个用户共享, 当数据库实例启动时,SGA的内存被自动分配;当数据库实例关闭时,SGA内存被回收。 SGA是占用内存最大的一个区域,同时也是影响数据库性能的重要因素。
SGA缓存区主要包括:share pool,db buffer cache,redo log buffer,large pool,java pool,stream pool
share pool:用于存放最近执行的SQL语句和数据字典信息。共享池主要有库高速缓存(Library Cache)和数据字典高速缓存(Dictionary cache)两部分组成
1) 库高速缓存(Library Cache)
库高速缓存用于存放最近执行的sql语句信息,包括sql语句文本,解析代码值及执行计划
2) 数据字典高速缓存区(Dictionary cache)
用于存放数据字典的信息,包括表、列定义以及权限信息)库高速缓存和数据字典高速缓存大小是动态变化的,不是固定的
Database Buffer cache 用于存放最近访问的数据块信息,它由许多小缓冲区(缓冲区大小=数据尺寸)组成
redo log buffer 重做日志缓存区(Redo log buffer),用于记载实例的变化。执行DDL或DML语句时,服务器进程首先将事物的变化记载到重做日志缓存区,然后才会修改数据高速缓存。重做日志缓存区由很多重做记录(Redo record)组成,并且每条重做记录记载了被修改数据块的位置以及变换后的数据
large pool
为大内存操作提供的独立内存区
PGA 用于存放服务器进程的数据和控制信息,独立于SGA的一块内存区域。
当用户连接到Oracle Server时,Oracle server会为每个服务器进程分配相应的PGA.SGA是所有服务器进程都可共享的一块内存区域,而每个服务器进程都具有私有的PGA内存空间。
进程结构
[oracle@db01 oracle]$ ps -ef |grep ora
oracle 3316 1 0 13:54 ? 00:00:00 ora_w005_orcl1
oracle 3326 1 0 13:54 ? 00:00:00 ora_w006_orcl1
oracle 3484 1 0 13:54 ? 00:00:00 ora_w007_orcl1
oracle 13675 1 0 15:52 ? 00:00:01 ora_m001_orcl1
oracle 15289 1 0 15:53 ? 00:00:00 ora_m000_orcl1
oracle 19095 1 0 14:05 ? 00:00:05 ora_m004_orcl1
root 19334 19140 0 13:43 pts/1 00:00:00 su - oracle
oracle 19335 19334 0 13:43 pts/1 00:00:00 -bash
oracle 20955 1 0 13:43 ? 00:00:00 ora_pmon_orcl1
oracle 20960 1 0 13:43 ? 00:00:00 ora_clmn_orcl1
oracle 20962 1 0 13:43 ? 00:00:00 ora_psp0_orcl1
oracle 20997 1 0 13:43 ? 00:00:01 ora_vktm_orcl1
oracle 21002 1 0 13:44 ? 00:00:00 ora_gen0_orcl1
oracle 21004 1 0 13:44 ? 00:00:00 ora_mman_orcl1
oracle 21009 1 0 13:44 ? 00:00:01 ora_gen1_orcl1
oracle 21014 1 0 13:44 ? 00:00:00 ora_diag_orcl1
oracle 21016 1 0 13:44 ? 00:00:00 ora_ofsd_orcl1
oracle 21019 1 0 13:44 ? 00:00:01 ora_dbrm_orcl1
oracle 21022 1 0 13:44 ? 00:00:00 ora_vkrm_orcl1
oracle 21024 1 0 13:44 ? 00:00:00 ora_svcb_orcl1
oracle 21028 1 0 13:44 ? 00:00:00 ora_pman_orcl1
oracle 21030 1 0 13:44 ? 00:00:03 ora_dia0_orcl1
oracle 21035 1 0 13:44 ? 00:00:00 ora_dbw0_orcl1
oracle 21042 1 0 13:44 ? 00:00:00 ora_lgwr_orcl1
oracle 21046 1 0 13:44 ? 00:00:00 ora_lg00_orcl1
oracle 21050 1 0 13:44 ? 00:00:01 ora_ckpt_orcl1
oracle 21055 1 0 13:44 ? 00:00:00 ora_lg01_orcl1
oracle 21058 1 0 13:44 ? 00:00:00 ora_smon_orcl1
oracle 21060 1 0 13:44 ? 00:00:00 ora_smco_orcl1
oracle 21063 1 0 13:44 ? 00:00:00 ora_reco_orcl1
oracle 21066 1 0 13:44 ? 00:00:00 ora_w000_orcl1
oracle 21073 1 0 13:44 ? 00:00:00 ora_lreg_orcl1
oracle 21075 1 0 13:44 ? 00:00:00 ora_w001_orcl1
oracle 21077 1 0 13:44 ? 00:00:00 ora_pxmn_orcl1
oracle 21081 1 0 13:44 ? 00:00:02 ora_mmon_orcl1
oracle 21097 1 0 13:44 ? 00:00:01 ora_mmnl_orcl1
oracle 21099 1 0 13:44 ? 00:00:00 ora_d000_orcl1
oracle 21101 1 0 13:44 ? 00:00:00 ora_s000_orcl1
oracle 21103 1 0 13:44 ? 00:00:00 ora_tmon_orcl1
oracle 21309 1 0 13:44 ? 00:00:00 ora_p000_orcl1
oracle 21311 1 0 13:44 ? 00:00:00 ora_p001_orcl1
oracle 21313 1 0 13:44 ? 00:00:00 ora_p002_orcl1
oracle 21318 1 0 13:44 ? 00:00:00 ora_tt00_orcl1
oracle 21322 1 0 13:44 ? 00:00:00 ora_tt01_orcl1
oracle 21330 1 0 13:44 ? 00:00:00 ora_tt02_orcl1
oracle 21356 1 0 13:44 ? 00:00:00 ora_aqpc_orcl1
oracle 21358 1 0 13:44 ? 00:00:03 ora_cjq0_orcl1
oracle 21363 1 0 13:44 ? 00:00:00 ora_p003_orcl1
oracle 21365 1 0 13:44 ? 00:00:00 ora_p004_orcl1
oracle 21367 1 0 13:44 ? 00:00:00 ora_p005_orcl1
oracle 21369 1 0 13:44 ? 00:00:00 ora_p006_orcl1
oracle 21372 1 0 13:44 ? 00:00:00 ora_p007_orcl1
oracle 21374 1 0 13:44 ? 00:00:00 ora_w002_orcl1
oracle 21687 1 0 13:44 ? 00:00:00 ora_w003_orcl1
oracle 21732 1 0 13:44 ? 00:00:00 ora_w004_orcl1
oracle 21737 1 0 13:44 ? 00:00:00 ora_qm02_orcl1
oracle 21743 1 0 13:44 ? 00:00:00 ora_q003_orcl1
oracle 22129 1 0 13:44 ? 00:00:00 ora_q00g_orcl1
oracle 23369 1 0 13:45 ? 00:00:00 /u01/app/oracle/product/19.3/db/bin/tnslsnr LISTENER -inherit
oracle 25295 1 0 16:00 ? 00:00:00 ora_m003_orcl1
root 25299 18011 0 13:46 pts/0 00:00:00 su - oracle
oracle 25301 25299 0 13:46 pts/0 00:00:00 -bash
oracle 25379 25301 0 13:46 pts/0 00:00:00 sqlplus as sysdba
oracle 25380 25379 0 13:46 ? 00:00:01 oracleorcl1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 25655 1 0 15:38 ? 00:00:00 ora_m002_orcl1
oracle 27953 1 0 13:48 ? 00:00:00 oracleorcl1 (LOCAL=NO)
oracle 27955 1 0 13:48 ? 00:00:00 oracleorcl1 (LOCAL=NO)
主要进程解释:
pmon:用户进程分配,监听注册
smon:该进程实例启动时,执行实例恢复,还负责清理不再使用的临时段。在具有并行服务器选项的环境下,SMON对有故障CPU或实例进行实例恢复。SMON进程有规律地被呼醒,检查是否需要,或者其它进程发现需要时可以被调用
dbwr:数据写进程
lgwr:日志写进程
ckpt:数据库检查点进程
tmon:12c以后出来的用来做DG同步的进程
总结
这篇文章主要分享了Oracle的体系结构
猜你喜欢
- 2024-10-24 彻底理解MySQL数据结构和存储原理
- 2024-10-24 Oracle10g数据库存储结构的组成 oracle数据库存储种类
- 2024-10-24 数据库笔试面试111——在Oracle中,逻辑结构正确的是?
- 2024-10-24 Oracle索引物理结构 oracle的索引有几种,各有何用途
- 2024-10-24 关于Oracle数据库几种常见的应用结构,你知道哪些?
- 2024-10-24 Tech Talk · 云技术有话聊 带你了解Oracle数据库基础架构及原理
- 2024-10-24 详解Oracle RDBMS存储结构--物理结构和逻辑结构
- 2024-10-24 Oracle 实例架构由多个组件组成 oracle 实例架构由多个组件组成一个
- 2024-10-24 几张图梳理Oracle架构发展历程 几张图梳理oracle架构发展历程
- 2024-10-24 Oracle的体系结构图万花筒 oracle数据库体系结构图
你 发表评论:
欢迎- 615℃几个Oracle空值处理函数 oracle处理null值的函数
- 608℃Oracle分析函数之Lag和Lead()使用
- 595℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 592℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 587℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 580℃【数据统计分析】详解Oracle分组函数之CUBE
- 569℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 560℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- PageHelper - 最方便的 MyBatis 分页插件
- 面试二:pagehelper是怎么实现分页的,
- MyBatis如何实现分页查询?(mybatis-plus分页查询)
- SpringBoot 各种分页查询方式详解(全网最全)
- 如何在Linux上运行exe文件,怎么用linux运行windows软件
- 快速了解hive(快速了解美国50个州)
- Python 中的 pyodbc 库(pydbclib)
- Linux搭建Weblogic集群(linux weblogic部署项目步骤)
- 「DM专栏」DMDSC共享集群之部署(一)——共享存储配置
- 故障分析 | MySQL 派生表优化(mysql pipe)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)