Rumah  >  Artikel  >  pangkalan data  >  Analisis ringkas seni bina Oracle

Analisis ringkas seni bina Oracle

WBOY
WBOYke hadapan
2022-07-22 16:51:371697semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang Oracle, yang kebanyakannya menyusun isu berkaitan seni bina Oracle secara amnya dibahagikan kepada dua bahagian: Contoh (contoh) dan Pangkalan Data (pangkalan data), mari kita lihat. pada itu, saya harap ia akan membantu semua orang.

Analisis ringkas seni bina Oracle

Tutorial yang disyorkan: "Tutorial Video Oracle"

Seni bina Oracle secara amnya dibahagikan kepada dua bahagian: Instance (Instance ) dan Pangkalan data (pangkalan data) .

Seperti yang ditunjukkan dalam Rajah 1:

Rajah 1 Seni bina pangkalan data Oracle

Apa yang biasa kita panggil Pelayan Oracle (Pelayan Oracle) terdiri daripada Oracle Instance dan Pangkalan Data Oracle, seperti yang ditunjukkan dalam Rajah 2:

Rajah 2 Oracle Server

Oracle Instance terutamanya mengandungi SGA Dan beberapa Proses Backgroud (contohnya: PMON, SMON, DBWR, LGWR, CKPT, dll.).

SGA

SGA mengandungi 6 komponen asas: Kolam Kongsi (Cache Perpustakaan, Cache Kamus Data), Cache Penampan Pangkalan Data, Penampan Log Buat Semula, Kolam Java, Kolam Besar, kolam aliran .

Fungsi 6 komponen asas ini akan diperkenalkan di bawah.

1) kumpulan kongsi

  • Kolam kongsi ialah kawasan memori untuk analisis sintaks, penyusunan dan pelaksanaan program SQL dan PL/SQL.
  • Kolam kongsi terdiri daripada Cache Perpustakaan (cache perpustakaan), Cache Kamus Data (cache kamus data) dan Cache Hasil Pelayan (cache hasil).

Apakah fungsi mereka?

Cache Perpustakaan: Tempat penghuraian untuk SQL dan PL/SQL, yang menyimpan kandungan penyata SQL dan PL/SQL yang disusun dan dihuraikan untuk dikongsi oleh semua pengguna.

* Jika pernyataan SQL yang sama dilaksanakan pada kali seterusnya, tidak perlu menghuraikannya dan ia akan dilaksanakan serta-merta daripada Cache Perpustakaan.

* SAIZ Cache Perpustakaan akan menentukan kekerapan menyusun dan menghuraikan pernyataan SQL, dengan itu menentukan prestasi.

* Cache Pustaka mengandungi dua bahagian: Shared SQL Area dan Shared PL/SQL Area.

Cache Kamus Data: Menyimpan maklumat kamus data penting untuk kegunaan pangkalan data.

* Kamus Data ialah yang paling kerap digunakan dan hampir semua operasi memerlukan pertanyaan kamus data. Untuk meningkatkan kelajuan mengakses Kamus Data, Cache diperlukan pada masa ini, dan memori boleh diakses apabila diperlukan.

* Maklumat dalam Cache Kamus Data termasuk Fail Pangkalan Data, Jadual, Indeks, Lajur, Pengguna, Keistimewaan dan objek pangkalan data lain.

Cache Keputusan Pelayan: Menyimpan set hasil SQL bahagian pelayan dan nilai pulangan fungsi PL/SQL.

Setelah membaca penjelasan di atas, anda mungkin merasakan ianya agak abstrak, jadi saya akan menerangkannya melalui contoh di bawah.

Andaikan arahan diserahkan pada klien, seperti berikut:

SELECT ename,sal FROM emp WHERE empno=7788;

Jika pernyataan ini diserahkan kepada pangkalan data untuk kali pertama, ia perlu dihuraikan dibahagikan kepada penghuraian keras dan penghuraian lembut.

  • Penghuraian keras: Semak sintaks, semantik, kebenaran, analisis pembolehubah ikatan, dsb., dan akhirnya menjana pelan pelaksanaan; . Jika ia adalah pernyataan pilih, set hasil akan dikembalikan selepas pelaksanaan Jika ia adalah kenyataan kemas kini atau padam, tidak perlu mengembalikan set hasil.
  • Library Cache akan memuatkan pernyataan sql ini dan pelan pelaksanaan ke dalamnya.
Apakah tujuan memuatkan perkara ini?

Pada kali seterusnya anda menaip ayat yang sama (tanda baca, huruf besar dan ruang adalah betul-betul sama), tidak perlu menghurai keras.


Soal jawab pantas:

Jika klien menyerahkan arahan lain pada masa ini:

select ename,sal from emp where empno=7788;
Tebak, pernyataan ini memerlukan Adakah ia dihuraikan?

Jawapan: Ya.
Nota kecil: Ambil perhatian bahawa pernyataan mestilah betul-betul sama untuk mengelakkan penghuraian. Tanda baca, huruf besar, ruang, dll. mestilah betul-betul sama! Faedah penulisan biasa ditunjukkan di sini.

Seperti yang dinyatakan sebelum ini, jika ia adalah pernyataan pilih, set keputusan akan dikembalikan selepas pelaksanaan. Di manakah set keputusan disimpan?

Set keputusan yang dikembalikan oleh pelaksanaan pernyataan ini akan disimpan dalam Cache Keputusan Pelayan.
select ename,sal from emp where empno=7788;

2) Cache Penampan Pangkalan Data

  • Database Buffer Cache用于存储从磁盘数据文件中读入的数据,为所有用户共享。
  • Server Process(服务器进程)将读入的数据保存在数据缓冲区中,当后续的请求需要这些数据时可以在内存中找到,则不需要再从磁盘读取。

小说明:逻辑读(从内存读)的速度是物理读(从磁盘读)的1万倍呦,所以还是想办法尽量多从内存读哦。
所以,数据缓冲区的大小对数据库的读取速度有直接的影响。

例如用户访问一个表里面的记录时,数据库接收到这个请求后,首先会在Database Buffer Cache中查找是否存在该数据库表的记录,如果有所需的记录就直接从内存中读取该记录返回给用户(有效提升了访问的速度),否则只能去磁盘上去读取。

继续看上面的例子:

select ename,sal from emp where empno=7788;

该条语句以及它的执行计划被放在Library Cache里,但语句涉及到的数据,会放在 Database Buffer Cache 里。

小问答:
Database Buffer Cache是怎么工作的呢?

这就要说一说Database Buffer Cache的设计思想了。
磁盘上存储的是块(block),文件都有文件号,块也有块号。
若要访问磁盘上的块,并不是CPU拿到指令后直接访问磁盘,而是先把块读到内存中的Database Buffer cache里,生成副本,查询或增删改都是对内存中的副本进行操作。如图3所示。
另外,如果是增删操作,操作后会形成脏块,脏块会在恰当时机再写回磁盘原位置,注意哦,可不是立刻写回呦。

也许你会问,为什么不立刻写回呢?
因为:
(1)减少物理IO;
(2)可共享,若后面又有对该块的访问,可直接在内存中进行逻辑读。


图3 访问数据块

小问答:
为什么要通过内存访问数据块,而不是CPU直接访问磁盘呢?
答:因为相较于CPU,IO的速度实在是太慢了,CPU的速度是IO 的100万倍呢?如果CPU直接访问磁盘的话,会造成大量的IO等待,CPU的利用率会很低。所以,利用速度相当的内存(CPU速度为内存的100倍)做中间缓存,可以有效减少物理IO,提高CPU利用率。

但是,这里会有一个问题。前面说到查询或增删改都是对内存中的副本进行操作,当增删改操作产生脏块时不会立刻写回磁盘。

小问答:
我们设想一下,如果在 Database Buffer Cache 中存放大量未来得及写回磁盘的脏块时,突然出现系统故障(比如断电),导致内存中的数据丢失。而此时磁盘中的块存放的依然是修改前的旧数据,这样岂不是导致前面的修改无效?
要怎样保持事务的一致性呢?
答:如果我们能够保存住提交的记录,在 Database Buffer Cache 中一旦有数据更改,马上写入一个地方记录下来,不就可以保证事务一致性了嘛。

小说明:Instance在断电时会消失,Instance在内存中存放的数据将丢失。这就需要 Redo Log Buffer 发挥它的作用啦。

3)Redo Log Buffer

  • 日志条目(Redo Entries )记录了数据库的所有修改信息(包括 DML 和 DDL),一条Redo Entries记录一次对数据库的改变 ,为的是数据库恢复。
  • 日志条目首先产生于日志缓冲区。日志缓冲区较小,它是以字节为单位的,它极其重要。
  • 在Database Buffer Cache中一旦有数据更改,马上写入Redo Log Buffer,Redo Log Buffer在内存中保留一段时间后,会写入磁盘,然后归档(3级结构)。

4)Large Pool(可选)

为了进行大的后台进程操作而分配的内存空间,与 shared pool 管理不同,主要用于共享服
务器的 session memory,RMAN 备份恢复以及并行查询等。

5)Java Pool(可选)

为了 java 虚拟机及应用而分配的内存空间,包含所有 session 指定的 JAVA 代码和数据。

6)Stream Pool(可选)

为了 stream process 而分配的内存空间。stream 技术是为了在不同数据库之间共享数据,
因此,它只对使用了 stream 数据库特性的系统是重要的。

Background process

在正式介绍 Background Process 之前,先简单介绍 Oracle 的 Process 类型。

Oracle Process 有三种类型:

  • User Proces

客户端要与服务器连接,在客户端启动起来的进程就是 User Process,一般分为三种形式(sql*plus, 应用程序,web 方式(OEM))。

  • Proses Pelayan

Proses Pengguna tidak boleh mengakses Oracle secara langsung, dan mesti mengakses contoh melalui Proses Pelayan yang sepadan dan kemudian mengakses pangkalan data.
Apabila pengguna log masuk ke Pelayan Oracle, Proses Pengguna dan Proses Pelayan mewujudkan Sambungan.

  • proses latar belakang

Satu bahagian penting dalam Instance Oracle. Ini akan diterangkan secara terperinci seterusnya.

Tambahan kecil:
Sambungan & Sesi
Sambungan merujuk kepada sambungan TCP yang ditubuhkan oleh klien Oracle dan latar belakang serta proses latar belakang (Proses Pelayan). Seperti yang ditunjukkan dalam Rajah 4:

Rajah 4 Sambungan

Proses penubuhan sambungan boleh diterangkan secara ringkas seperti berikut:

1 Mula-mula mewujudkan sambungan TCP, Oracle mengesahkan identiti pengguna, menjalankan audit keselamatan, dsb.
2 ;
3 Apabila sambungan Oracle diwujudkan, ini bermakna Sesi dimulakan Apabila sambungan diputuskan, sesi itu hilang.

Sesi dan Sambungan saling melengkapi. Maklumat sesi akan disimpan dalam Kamus Data Oracle.
Anda boleh melihat secara visual perbezaan antara Sambungan dan Sesi melalui Rajah 5.

Rajah 5 Sambungan & Sesi

Proses Latar Belakang terutamanya termasuk: SMON (proses pemantauan sistem), PMON (proses pelayan pemantauan proses), DBWR (proses penulis pangkalan data), LGWR (proses penulis log), CKPT (proses pusat pemeriksaan).

1) PMON (Pemantau Proses)

Fungsi utama PMON adalah seperti berikut:

  • Pantau sama ada setiap proses latar belakang Oracle adalah normal dan hapuskan kelainan proses jika ia dijumpai, respawn proses.
  • (Nota: Apabila proses pengguna diputuskan sambungan, Proses Pelayan tidak berguna jika ia kekal, tetapi ia masih mengambil ruang. PMON akan menyemak Proses Pelayan dengan kerap. Jika ia tidak dapat disambungkan ke Proses Pengguna, PMON akan menuntut semula Proses Pelayan, menuntut semula ruang PGA dan menuntut semula kunci di dalam )
  • Pantau sama ada sesi melahu mencapai ambang.
  • Pendaftaran dinamik untuk pemantauan.

2) SMON (System Monitor)

Fungsi utama SMON adalah seperti berikut:

  • Apabila Oracle tiba-tiba turun semasa berjalan, instance diperlukan untuk permulaan seterusnya (Pemulihan Instance), SMON bertanggungjawab untuk pemantauan penuh pemulihan instance
  • Apabila Oracle tiba-tiba ranap semasa berjalan, apabila Oracle Instance dimulakan, beberapa sumber yang belum dikeluarkan; akan dibersihkan oleh SMON;
  • Sesetengah transaksi juga dibersihkan oleh SMON apabila ia gagal; Keluarkan segmen sementara (Segmen) yang tidak lagi digunakan ).
  • 3) DBWR (Penulis Pangkalan Data)

DBWn ialah proses kerja yang paling berat dalam Oracle. Fungsi utama adalah seperti berikut:

Tulis blok kotor (Dirty Buffer) dalam Cache Buffer Pangkalan Data ke Fail Data.
  • Lepaskan ruang Cache Penampan Data.
Nota kecil:

Jika beban pangkalan data agak besar, terdapat banyak permintaan daripada pelanggan, dan terdapat sejumlah besar operasi IO, kandungan penimbal perlu ditulis ke cakera dengan kerap, maka berbilang DBWn boleh dikonfigurasikan pada masa ini (Oracle menyokong sejumlah 20 DBWn, DBW0-DBW9, DBWa-DBWg). Biasanya Oracle bersaiz kecil dan sederhana hanya memerlukan satu Proses DBW0.
Nota: Apabila situasi berikut berlaku, Proses DBWR akan dicetuskan untuk menulis kandungan Cache Penampan Pangkalan Data ke Fail Data:

Titik Pemeriksaan Berlaku
  • Ambang capaian Penampan Kotor
  • Tiada Penampan percuma
  • Tamat masa berlaku
  • Permintaan ping RAC dibuat
  • Ruang meja LUAR TALIAN
  • Ruang meja BACA SAHAJA
  • Table DROP or TRUNCATE
  • Tablespace BEGIN
  • SANDARAN
Tambahan kecil:

Proses pelayan melaksanakan pada fail data Operasi Baca, manakala DBWR bertanggungjawab untuk melaksanakan operasi tulis pada fail data.

Soalan dan jawapan pantas: Apakah yang DBWR lakukan apabila

Komited? Jawapan: Jangan buat apa-apa!

4) LGWR ((Penulis LOG))

Hanya terdapat satu Proses LGWR dalam Instance Oracle, dan kerja Proses ini adalah serupa dengan Proses DBWR. Fungsi utama adalah seperti berikut:

Tulis kandungan Penampan Log Buat Semula kepada Fail Log Buat Semula (log mesti ditulis sebelum DBWR menulis blok kotor).

(Penimbal Log Buat Semula ialah Penimbal kitaran, dan Fail Log Semula Semula yang sepadan juga merupakan kumpulan fail kitaran. Ia mula menulis dari permulaan fail. Apabila fail penuh, ia akan mula menulis dari permulaan fail. Kandungan sebelumnya ditimpa Untuk mengelakkan daripada menulis ganti Fail Log Semula, anda boleh memilih untuk menulisnya ke Fail Log Semula Arkib)

Nota: Apabila situasi berikut berlaku, LGWR Proses akan dicetuskan kepada Redo Log Kandungan dalam Buffer ditulis kepada Redo Log Files:

  • At Commit
  • Apabila satu pertiga penuh
  • Apabila terdapat 1 MB buat semula
  • Setiap tiga saat
  • Sebelum DBWn menulis

Bagaimana untuk memastikan transaksi yang diserahkan dikekalkan secara kekal?
Jawapan: Operasi kemas kini telah dilakukan sebagai contoh.
1. Apabila menulis pernyataan komit, pengubahsuaian telah ditulis kepada Redo Log Buffer
2.
3 . Jadi selepas penyerahan berjaya, perubahan telah disegerakkan ke cakera dan tidak akan hilang.

5) CKPT (Checkpoint)

Fungsi utama CKPT adalah seperti berikut:

  • Jana pusat pemeriksaan, memaklumkan atau menggesa DBWR untuk menulis blok kotor ;
  • *Titik pemeriksaan penuh: pastikan data konsisten.
  • * Pusat pemeriksaan tambahan: Kemas kini lokasi pusat pemeriksaan secara berterusan dalam fail kawalan Apabila ranap kejadian berlaku, masa pemulihan contoh boleh dipendekkan sebanyak mungkin. Kemas kini maklumat pusat pemeriksaan dalam pengepala fail Fail Data;

6) ARCn (Arkib)

  • ARCn ialah proses latar belakang pilihan (hampir dianggap sebagai proses yang diperlukan).
  • Oracle boleh dijalankan dalam dua mod: MOD ARCHIVELOG (mod arkib) dan MOD NOARCHIVELOG (mod bukan arkib).
  • Keputusan penting yang DBA mesti buat ialah sama ada untuk mengkonfigurasi pangkalan data untuk dijalankan dalam mod ARCHIVELOG atau mod NOARCHIVELOG.
  • Selepas fail log buat semula dalam talian diisi, tika Oracle mula menulis fail log buat semula dalam talian seterusnya.
  • Proses menukar daripada satu fail log semula dalam talian kepada fail log semula dalam talian yang lain dipanggil penukaran log.

Fungsi utama ARCn adalah seperti berikut:

Apabila Oracle berjalan dalam mod arkib

  • Proses ARCn akan mula log setiap kali suis log dilakukan. Isi kumpulan log untuk sandaran atau pengarkiban.
  • Proses ARCn mengarkibkan fail log semula secara automatik sebelum log boleh digunakan semula, dengan itu mengekalkan semua perubahan yang dibuat pada pangkalan data.

Dengan cara ini, walaupun pemacu cakera rosak, pangkalan data boleh dipulihkan sehingga tahap kegagalan.

Melalui pembelajaran di atas, mula-mula kemas kini Rajah 1 seperti berikut:

Rajah 6 Seni bina pangkalan data Oracle

Pangkalan data

Pangkalan data sebenarnya terdiri daripada sekumpulan fail fizikal, terutamanya digunakan untuk menyimpan data Pangkalan data terutamanya mengandungi tiga jenis fail: Fail Data, Fail Kawalan dan Fail Log Buat Semula.
Terdapat juga Fail Parameter, Fail Kata Laluan, Fail Log Tercapai, dsb.

1) Fail Data

Fail Data digunakan untuk menyimpan data dan data dalam Jadual disimpan dalam Fail Data.

2) Fail Kawalan

Oracle menyediakan beberapa Fail Kawalan untuk mengendalikan Fail Data ini terutamanya merekodkan beberapa maklumat kawalan pangkalan data.

3) Buat Semula Fail Log

Buat Semula Fail Log merekodkan perubahan dalam pangkalan data Jika anda memasukkan data ke dalam pangkalan data atau mengubah suai data di dalam, anda hanya perlu membuat perubahan pada pangkalan data data diubahsuai, maka status sebelum pengubahsuaian dan status selepas pengubahsuaian mesti direkodkan dalam Redo Log Files, yang berfungsi untuk memulihkan Fail Data.
* Contohnya: ada transaksi dalam pangkalan data yang perlu dihantar, tetapi penyerahan gagal, transaksi akan digulung semula, maka asas untuk rollback transaksi datang dari Redo Log Files ini. Buat Semula Fail Log merekodkan perubahan pangkalan data Berkenaan perubahan transaksi ini, jika anda perlu melancarkan semula, anda perlu mengeluarkan data dalam Fail Log Buat Semula dan memulihkan Fail Data kepada keadaan sebelum pengubahsuaian mengikut data dalam Fail Log Buat Semula.

4) Fail Parameter

Sebarang pangkalan data mesti mempunyai fail parameter Fail parameter ini menentukan nilai beberapa parameter asas dan parameter permulaan dalam Oracle.

5) Fail Log Diarkibkan

Fail Log Diarkib dan Fail Log Buat Semula saling melengkapi antara satu sama lain . Untuk meningkatkan lagi keupayaan sandaran dan pemulihan pangkalan data, maklumat yang diubah suai ini diarkibkan dalam Fail Log Terarkib sebelum menulis ganti.

6) Fail Kata Laluan

Kata laluan disimpan apabila pelanggan pengguna menyambung ke sistem pangkalan data bahagian belakang.

Soal Jawab Pantas:
Apakah hubungan yang sepadan antara Instance dan Pangkalan Data?

Jawapan: Instance: Database = n: 1
1 Instance hanya boleh dimiliki oleh satu pangkalan data dan berbilang Instans boleh mengakses satu pangkalan data pada masa yang sama.

Tambahan kecil:
Struktur Memori Oracle

Struktur Memori Oracle sebenarnya terdiri daripada dua bahagian: SGA dan PGA

SGA ( Kawasan Global Sistem)

  • Instance Oracle sepadan dengan SGA yang diperuntukkan apabila Instance Oracle dimulakan.
  • Instance Oracle hanya mempunyai satu SGA iaitu ruang ingatan yang sangat besar malah boleh menduduki 80% daripada memori fizikal.

PGA (Kawasan Global Program)

  • PGA akan diperuntukkan apabila Proses Pelayan bermula. Terdapat banyak PGA dalam Instance Oracle. Contohnya, jika anda memulakan 10 Proses Pelayan, akan ada 10 PGA.
  • PGA menyimpan kursor pengguna, pembolehubah, kawalan, pengisihan data dan menyimpan nilai cincang.
  • Berbeza dengan SGA, PGA adalah bebas dan tidak dikongsi. Merupakan kawasan memori yang diperuntukkan kepada proses dan peribadi kepada proses itu.

Tutorial yang disyorkan: "Tutorial Video Oracle"

Atas ialah kandungan terperinci Analisis ringkas seni bina Oracle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:jb51.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam