Oracle基本结构

数据库作用

1. 并发(DBMS)
2. 复杂计算
3. 便于存储
4. 安全、量大

Oracle数据体系

4ca3000e89d052c5a7635e3c94d99a8.png

Oracle = instance + database

instance = cache + process

database = files(data files + control files + redo log files) cache = PGA+SGA

内存(cache)

内存管理方式

AMM:自动内存管理,给一个总数,oracle自动分配给sga和pga

show parameter memory

ASMM:手工指定sga和pga大小

show parameter sga

# sga_max_size:实例最多可以使用的大小,只能改到参数文件中,重启生效。
# sga_target:启动实例的时候分配的大小,可以动态调整。

# 修改sga大小
alter system set sga_target=5G**

注:一般情况下这两个参数配置成一样。

SGA

image.png

System Global Area是OracleInstance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。

database buffer cache

来自于数据文件中的数据和修改过将要写入到数据文件中的数据(脏数据)。

shared pool

library cache+data dictionary cache

library cache:经过解析的sql语句,下次使用的时候可以直接从cache中读取
data dictionary cache:记录了数据库的详细信息及参数

Redo log buffer

数据每发生一次改变则Redo log Buffer就会添加一条记录,用户事务回滚。

PGA

Process Global Area是为每个连接到Oracledatabase的用户进程保留的内存。

进程

前台进程

client连接数据库时产生的进程

后台进程

DBWn:将db buffer cache中的脏数据写到数据文件中。 1. 检查点发生 2. 脏数据达到阈值 3. 找不到空余cache

LGWR:将redo log buffer中的数据写入到redo log files中。 1. 事务提交 2. 每隔三秒 3. redo log buffer满三分之一 4. redo log buffer满1M 5. DBWn把内存中的脏数据写入到数据文件之前,日志写先行

SMON:数据库垃圾收集者, 1. 清理空间 2. 接合空闲空间 3. 将不可用文件的事务恢复成活动状态

PMON:用于清理失败的服务器进程;监控oracle进程

CKPT:该进程在检查点出现时,负责跟新全部数据文件的头部信息,标记该检查点。

ARcn:将以填满的在线日志文件拷贝到指定的存储设备。archive log list

数据库结构

逻辑结构

os block:4K

oracle block:8K

物理结构

image.png

data file

[[参数#dba_data_files]]

数据文件:存储实际数据。

image.png

parameter file

作用:存储数据库的配置参数,如SGA多大、shard pool多大

pfile:可读,init+instance name+.ora,不可以动态修改

spfile:不可读,spfile+instance name+.ora,可以动态修改。数据库启动时将该文件加载到内存

启动方式:

1. 默认搜索路径,优先使用spfile,没有则使用pfile
2. 指定pfile启动,startup pfile=*** 
3. 如何确定数据库是哪种启动方式:alter文件
4. create pfile='***' form spfile;    create spfile form pfile = '***';

修改参数文件:

# 修改参数文件,当前不生效,重启生效
scope=spfile

# 修改内存,当前生效,重启丢失
scope=memory

control files

控制文件定义了数据库当前的物理状态,如datafile位置、SCN号、检查点信息、数据库结构信息。

# 查看控制文件按信息
show parameter control_files;

多路复用

注意:控制文件是在mount状态下读取的,所以说,一定要在mount之前,去操作控制文件,一但数据库启动到mount就不能操作控制文件了。

配置步骤:

1. 修改参数
2. 停库:shutdown immediate
3. 拷贝:cp xx xx
4. 启库:  startup
alter system set control_files = '/oradata/wjhdb/control01.ctl','/oradata/wjhdb/control02.ctl','/arch/wjhdb/control03.ctl' scope=spfile; 

在开库状态删除了控制文件,需要将数据库shutdown abort,然后复制备份文件,开库。

datafile

数据文件,一个数据文件只能属于一个表空间

redo logfile

存储重做日志:redo数据,至少需要两组。

查询视图:

  • **V$LOG**:用于查询日志组的信息(如大小、状态、序列号等)。
  • **V$LOGFILE**:用于查询日志文件的信息(如路径、状态等)。
image.png

v$log中status状态说明

状态说明
CURRENT当前正在使用的重做日志组。
ACTIVE重做日志组中的数据尚未写入数据文件,但已提交。
INACTIVE重做日志组中的数据已写入数据文件,不再需要。
UNUSED重做日志组尚未使用过。

若有三组redo log,其中两组处于active状态,一组位于current状态,如果需要写入新的redo log组,则会出现数据库会hang住。

扩容

  1. 修改数据文件大小
# 扩组数
alter database add logfile group 4 ('/oradata/lchdb/redo04.log') size 50m;
  1. 扩大小
# 切换日志组
alter system switch logfile;

# 将active的日志组变为inactive状态
alter system checkpoint;

# 删除日志组,该日志组需要处于inactive状态
alter database drop logfile group 1;

# 添加日志组
alter database add logfile group 1 '<PATH>' size 50m;

添加 redo log组成员

每个 Redo Log 组可以包含多个成员(即多个文件),这些成员是镜像关系,存储相同的内容。添加组成员可以提高容错能力、增强数据安全性和分散I/O负载。

alter database add logfile member '/arch/lchdb/redo01_2.log' to group 1;

archive logfile

作用: 热备恢复、追备份

# 查看归档模式
archive log list
show parameter log_archive_dest_1

# 设置归档路径地址
alter system set log_archive_dest_1='location=/arch' scope=spfile;

# 在mount模式下修改数据库为归档模式
alter database archivelog

# 修改当前归档组
alter system archive log current;

# 修改归档路径,可以在线修改
alter system set log_archive_dest_1='location=/arch2' scope=both;

# 归档视图
v$archived_log



### RMAN 用于删除归档 ###
# 连接RMAN
rman taget /

# 查看所有归档
list archivelog all;

# 删除n天内的归档
delete archvelog all compeleted before 'sysdate-n';

# 检查暴力删除的文件状态
crosscheck archivelog all

# 删除expired状态的归档文件
delete expired archivelog all
image.png

image.png

STATUS 状态说明

状态说明
A (Available)归档日志已成功生成并可用。
D (Deleted)归档日志已被删除。
U (Unavailable)归档日志不可用(可能由于文件丢失或损坏)。
X (Expired)归档日志已过期(通常由 RMAN 的 DELETE OBSOLETE 操作标记)。

diagnostic file

image.png

alter log:

Alert Log 文件是 Oracle 数据库的主要日志文件,记录了数据库启动、关闭、错误和其他重要事件。启动过程的详细信息会记录在此文件中。

$ORACLE_BASE/diag/rdbms/<DB_NAME>/<INSTANCE_NAME>/trace/alert_<INSTANCE_NAME>.log
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇