Oracle体系结构学习笔记
Oracle体系结构学习笔记,oracle database 最重要的是online redo log,ldquo;写rdquo;:检查点进程计算工作负载,来定检查点,
体系结构和备份恢复原理
1 Oracle database 最重要的是online redo log
类比法
controlfile :公司高管
datafile :生产车间
online redo log:财务处
注释:
system表空间是第一生产车间;
当公司高管换了,财务处也需要换;
2 shared pool主要包括:
library cache:放代码(sql,pl/sql,java)
data dictionary cache:放数据字典
注释:
在空间分配上,数据字典是男孩,代码是女孩,oracle server有重男轻女思想,若cache命中率低,要看的是女孩,而非男孩。因为会先给男孩喂奶水。
最近最少使用到代码会被销隐掉,否则,不断的代码进来,shared pool会内存不足。
3 large pool
下列场景需要用到large pool:
用rman备份与恢复;
并行sql;
异步I/O;
共享服务器模式;
注释:
large pool是shared pool的助理,若没有large pool,则会池迁移到shared pool。
4 java pool
是个跑马场,不是放java代码的地方
5 database buffer cache和redo log buffer
1)二者关系:
redo log buffer 画家(描述者)
database buffer cache 模特(被描述者)
2)LGWR只能有一个;DBWR可以有多个
3)oracle爱写日志,不爱写数据块。因为日志的单位是项(200个字节左右),而数据块的单位是块。
4)redo log buffer要么全写,要么全不写;而database buffer cache则悠着点,一次写一点
5)什么时候写日志?
每3秒写
1/3满写
commit的时候写
n M脏数据的时候写
DBWR写之前写
6)什么时候写数据块?
完全检查点事件发生
超时发生(增量检查点)
脏块达到域值(增量检查点)
没有free buffer的时候(对上面一条到补充)
6 oracle是个交易系统,,其交易发生在database buffer cache里。
具体交易:
“读”:server process去data dictionary cache查询,将需要的读到database buffer cache,然后,在PGA构造游标(结果集的指针),每一根指针都指向一个rowid,如果需要排序,连接,一致性读,则只需要对指针进行操作。所以,PGA是用户最直接的使用体验。
“改”: 申请TADDR
记日志
动两边事务槽,加行头锁
“写”:检查点进程计算工作负载,来定检查点,在检查点时,发生检查点事件,当检查点事件发生时逼着DBWRn按块第一次变脏的顺序写出一部份,由于这一部分脏块的写出,会在日志文件产生检查点位置。
7 RBA指针后有日志项,原因有二:
1)整个表空间级下线
2)按块第一次变脏的顺序写
8 用户不直接和oracle server打交道,而是和server process扛上了。
类比:
server process 导购小姐
user process 客人
9 “一根骨头挂点肉”
这俗语可以形容server process 和PGA的关系
骨头:server process
肉 :PGA
“一条绳上的两个蚂蚱”
蚂蚱:SADDR,TADDR
这话是说,新值在写的时候,旧值会跟着被写,同呼吸,共命运。所以,读上来8k,写下去便是16k,总共I/O为24k。
10 透过现象看本质
提交的本质:释放锁,写日志,事务槽进入倒计时
正常关机的本质:
1)关闭JAVA进程(oracle大战java)
2)写检查点
a)将current_scn冻结
b)把data block写下
c)让checkpoint_change#等于current_scn
注释:
select resetlogs_change# a,checkpoint_change# b,current_scn c
from v$database
其中,a a:建库的时间原点
b:写数据块的界,写后,内存中的所有数据块多比b来得大。所以,增量检查点这个会被延迟标识,因为,还没有全部下来。
11 system表空间
1)存放数据字典表
2)包,过程,函数和触发器等pl/sql对象
12 sysaux表空间
1)90%用来收集工作负载
2)10%存放sysman到东西
类比:
生活中,水表,电表,煤气表,这些表上面的度数,都是“逝者如斯夫”,为了比较,合理开支,需要抄表。
13 buffer的四种状态
free:写下去的时候
clean:刚读上来
pinned:特殊的clean,被加了latch,正要用
dirty:被改了
14 RBA指针的碎碎念
方向:总是无缝下移
出生地:控制文件
指向地:日志文件
过帐:对应的数据块已写到数据文件中
active :被RBA覆盖的日志(RBA只有一根)
完全检查点会直接把RBA干到重做日志组的最后一条
15 断电本质:SGA突然没有了,实力崩溃
与断电本质一致的是:
干掉SMON进程(kill -9 PID)
shutdown abort
16 在mount阶段,由SMON去读控制文件,并比较:
1)上次关机的SCN A
上次关机的checkpoint B
2)日志组最后一条的记录 C
RBA指针的位置 D
若正常关机,则 A=B C=D
若不正常关机,则 A>B D>C
这时,就需要派SMON去前滚,按重做日志的记录在内存中重做一遍,直到C=D。
更多Oracle相关信息见Oracle 专题页面 ?tid=12

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bahasa Go ialah bahasa pengaturcaraan yang cekap, ringkas dan mudah dipelajari Ia digemari oleh pembangun kerana kelebihannya dalam pengaturcaraan serentak dan pengaturcaraan rangkaian. Dalam pembangunan sebenar, operasi pangkalan data adalah bahagian yang sangat diperlukan Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data. Dalam bahasa Go, kami biasanya menggunakan perpustakaan pihak ketiga untuk mengendalikan pangkalan data, seperti pakej sql yang biasa digunakan, gorm, dsb. Di sini kami mengambil pakej sql sebagai contoh untuk memperkenalkan cara melaksanakan operasi penambahan, pemadaman, pengubahsuaian dan pertanyaan pangkalan data. Andaikan kami menggunakan pangkalan data MySQL.

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

Pemetaan polimorfik hibernate boleh memetakan kelas yang diwarisi ke pangkalan data dan menyediakan jenis pemetaan berikut: subkelas bercantum: Cipta jadual berasingan untuk subkelas, termasuk semua lajur kelas induk. table-per-class: Cipta jadual berasingan untuk subkelas, yang mengandungi hanya lajur khusus subkelas. union-subclass: serupa dengan joined-subclass, tetapi jadual kelas induk menggabungkan semua lajur subclass.

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

HTML tidak boleh membaca pangkalan data secara langsung, tetapi ia boleh dicapai melalui JavaScript dan AJAX. Langkah-langkah termasuk mewujudkan sambungan pangkalan data, menghantar pertanyaan, memproses respons dan mengemas kini halaman. Artikel ini menyediakan contoh praktikal menggunakan JavaScript, AJAX dan PHP untuk membaca data daripada pangkalan data MySQL, menunjukkan cara untuk memaparkan hasil pertanyaan secara dinamik dalam halaman HTML. Contoh ini menggunakan XMLHttpRequest untuk mewujudkan sambungan pangkalan data, menghantar pertanyaan dan memproses respons, dengan itu mengisi data ke dalam elemen halaman dan merealisasikan fungsi HTML membaca pangkalan data.

Analisis prinsip asas sistem pengurusan pangkalan data MySQL MySQL ialah sistem pengurusan pangkalan data hubungan yang biasa digunakan yang menggunakan bahasa pertanyaan berstruktur (SQL) untuk penyimpanan dan pengurusan data. Artikel ini akan memperkenalkan prinsip asas sistem pengurusan pangkalan data MySQL, termasuk penciptaan pangkalan data, reka bentuk jadual data, penambahan data, pemadaman, pengubahsuaian dan operasi lain, dan menyediakan contoh kod khusus. 1. Penciptaan Pangkalan Data Dalam MySQL, anda perlu mencipta contoh pangkalan data untuk menyimpan data. Kod berikut boleh mencipta fail bernama "my

PHP ialah bahasa pengaturcaraan bahagian belakang yang digunakan secara meluas dalam pembangunan laman web Ia mempunyai fungsi operasi pangkalan data yang kuat dan sering digunakan untuk berinteraksi dengan pangkalan data seperti MySQL. Walau bagaimanapun, disebabkan kerumitan pengekodan aksara Cina, masalah sering timbul apabila berurusan dengan aksara Cina bercelaru dalam pangkalan data. Artikel ini akan memperkenalkan kemahiran dan amalan PHP dalam mengendalikan aksara bercelaru bahasa Cina dalam pangkalan data, termasuk punca biasa aksara bercelaru, penyelesaian dan contoh kod khusus. Sebab biasa aksara bercelaru ialah tetapan set aksara pangkalan data yang salah: set aksara yang betul perlu dipilih semasa mencipta pangkalan data, seperti utf8 atau u

Untuk mengendalikan ralat sambungan pangkalan data dalam PHP, anda boleh menggunakan langkah berikut: Gunakan mysqli_connect_errno() untuk mendapatkan kod ralat. Gunakan mysqli_connect_error() untuk mendapatkan mesej ralat. Dengan menangkap dan mengelog mesej ralat ini, isu sambungan pangkalan data boleh dikenal pasti dan diselesaikan dengan mudah, memastikan kelancaran aplikasi anda.
