第二章 Oracle體系結(jié)構(gòu)

Oracle數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)主要講解Oracle這款DBMS是如何設(shè)計和實現(xiàn)的。整體上Oracle數(shù)據(jù)庫分為輔存中的Oracle(一般稱為數(shù)據(jù)庫稠屠,分為數(shù)據(jù)庫物理存儲結(jié)構(gòu)邏輯存儲結(jié)構(gòu))和內(nèi)存中的Oracle(一般稱為實例勇边,分為內(nèi)存結(jié)構(gòu)和后臺進程)请唱。

Oracle數(shù)據(jù)庫體系結(jié)構(gòu)

-----------------------------------------存儲結(jié)構(gòu)--------------------------------------------


一 物理存儲結(jié)構(gòu)

1. 數(shù)據(jù)文件

① 數(shù)據(jù)文件是在物理上保存數(shù)據(jù)庫中數(shù)據(jù)的操作系統(tǒng)文件讯赏,是所有數(shù)據(jù)的實際存儲空間义黎。所有數(shù)據(jù)文件大小之和構(gòu)成了數(shù)據(jù)庫的大小。

② 數(shù)據(jù)文件的特點
(1) 一個數(shù)據(jù)文件僅與一個數(shù)據(jù)庫聯(lián)系
(2) 一個表空間由一個或多個數(shù)據(jù)文件組成
(3) 數(shù)據(jù)文件可以通過設(shè)置其自動擴展參數(shù)姐呐,實現(xiàn)其自動擴展的功能

③ 數(shù)據(jù)文件可以分為永久性數(shù)據(jù)文件和臨時性數(shù)據(jù)文件

④ 用戶表中的數(shù)據(jù)最終存儲在數(shù)據(jù)文件中殿怜,但無法指定存儲在哪一個數(shù)據(jù)文件中。(該特點與SQLSever不同曙砂,SQLServer可以指定存儲數(shù)據(jù)文件)

⑤ 雖然無法指定头谜,但我們可以通過數(shù)據(jù)字典dba_data_files或者v$datafile查看數(shù)據(jù)文件信息。

查看數(shù)據(jù)文件位置及名稱

2. 控制文件

① 控制文件是一個記錄數(shù)據(jù)庫結(jié)構(gòu)信息的重要的二進制文件鸠澈,用于描述和維護數(shù)據(jù)庫的物理結(jié)構(gòu)柱告。由Oracle系統(tǒng)進行讀寫操作,DBA不能直接操作控制文件笑陈。

② 控制文件存放了數(shù)據(jù)庫數(shù)據(jù)文件和日志文件的信息际度。
③ 數(shù)據(jù)庫啟動時,根據(jù)初始化參數(shù)文件的CONTROL_files參數(shù)找到控制文件涵妥,然后根據(jù)控制文件中的信息乖菱,進行數(shù)據(jù)庫數(shù)據(jù)文件和重做日志文件的加載,最后打開數(shù)據(jù)庫蓬网。

④ 一個數(shù)據(jù)庫至少需要一個控制文件窒所,如果控制文件損壞將導(dǎo)致數(shù)據(jù)庫無法啟動。(SQLsever中一個數(shù)據(jù)庫只需要日志文件和主數(shù)據(jù)文件帆锋,其中主數(shù)據(jù)文件包含了控制文件的內(nèi)容墩新。)

⑤ 查看控制文件中的信息

通過數(shù)據(jù)字典視圖v$controlfile查看控制文件信息。

3. 重做日志文件

① 重做日志文件是以重做記錄的形式記錄窟坐、保存用戶對數(shù)據(jù)庫進行的變更操作海渊,是數(shù)據(jù)庫中最重要的物理文件

② 對于"最重要的物理文件"的理解
重做日志文件可以進行事務(wù)的重做(Redo)或回退(Undo)哲鸳,是數(shù)據(jù)庫實例恢復(fù)的基礎(chǔ)臣疑。如果現(xiàn)在有數(shù)據(jù)修改,數(shù)據(jù)文件只能記錄修改之后的數(shù)據(jù)徙菠,而重做日志文件不僅記錄修改之前的數(shù)據(jù)讯沈,還記錄修改之后的新數(shù)據(jù),因此重做日志文件的內(nèi)容更多婿奔,若數(shù)據(jù)庫發(fā)生故障缺狠,重做日志文件就可以發(fā)揮其作用了。

③ 通過數(shù)據(jù)字典視圖v$logfile查看重做日志文件信息
聯(lián)機日志文件和歸檔日志文件
歸檔模式

④ 通過v$log查看日志文件組

4. 歸檔重做日志文件

5. 初始化參數(shù)文件

① 初始化參數(shù)文件是數(shù)據(jù)庫啟動過程所必需的文件萍摊,記錄了數(shù)據(jù)庫顯式參數(shù)的設(shè)置挤茄。
② 數(shù)據(jù)庫啟動的第一步就是根據(jù)初始化參數(shù)文件中的設(shè)置,創(chuàng)建并啟動實例冰木,即分配內(nèi)存空間穷劈、啟動后臺進程笼恰。
③ 參數(shù)文件主要包括了數(shù)據(jù)庫名和控制文件所在路徑。參數(shù)文件分為文本參數(shù)文件和服務(wù)器參數(shù)文件歇终。

6. 跟蹤文件

跟蹤文件是數(shù)據(jù)庫中重要的診斷文件社证。
跟蹤文件中包含數(shù)據(jù)庫系統(tǒng)運行過程中所發(fā)生的重大事件的有關(guān)信息,可以為數(shù)據(jù)庫運行故障的解決提供重要信息评凝。

7. 警告文件

警告文件是特殊的跟蹤文件追葡。
警告文件也是數(shù)據(jù)庫中重要的診斷文件,記錄數(shù)據(jù)庫在啟動奕短、關(guān)閉和運行期間后臺進程的活動情況辽俗。
在數(shù)據(jù)庫出現(xiàn)故障時,應(yīng)首先查看該文件篡诽,但文件中的信息與任何錯誤狀態(tài)沒有必然的聯(lián)系崖飘。

8. 口令文件

二 邏輯存儲結(jié)構(gòu)
Oracle數(shù)據(jù)庫邏輯存儲結(jié)構(gòu)

1. 表空間

① 表空間是Oracle數(shù)據(jù)庫最大的邏輯存儲單元,一個表空間由多個段組成杈女。

② 表空間與數(shù)據(jù)庫文件直接關(guān)聯(lián)朱浴,一個表空間包含一個或多個數(shù)據(jù)文件,一個數(shù)據(jù)文件只能從屬于某一個表空間达椰,數(shù)據(jù)庫對象就是存儲在表空間對應(yīng)的一個或多個數(shù)據(jù)文件中翰蠢。

③ 一個數(shù)據(jù)對象(例如:表、視圖等)也要存儲在一個表空間中啰劲。數(shù)據(jù)庫的大小從邏輯上等于所有表空間大小之和梁沧。表空間的大小等于構(gòu)成表空間的所有數(shù)據(jù)文件之和。

表空間的分類

  • 系統(tǒng)表空間
    1)System表空間
    system表空間主要存儲:
    a. 數(shù)據(jù)庫的數(shù)據(jù)字典蝇裤;
    b. SQL程序源代碼和解釋代碼廷支,包括存儲過程、函數(shù)栓辜、包恋拍、觸發(fā)器等;
    c. 數(shù)據(jù)庫對象的定義藕甩,如表施敢、視圖、序列狭莱、同義詞等僵娃。
    system表空間

    2)SysAUX表空間
    SYSAUX表空間是輔助系統(tǒng)表空間,主要用于存儲數(shù)據(jù)庫組件等信息腋妙,以減小SYSTEM表空間的負(fù)荷默怨。
    sysaux表空間
  • 非系統(tǒng)表空間
    1)撤銷表空間(undotbsl)
    專門進行回滾信息的自動管理,由UNDO_TABLESPACE參數(shù)設(shè)置辉阶。

    撤銷表空間

    2)臨時表空間(temp)
    專門進行臨時數(shù)據(jù)管理的表空間先壕。
    在數(shù)據(jù)庫實例運行過程中,執(zhí)行排序等SQL語句時會產(chǎn)生大量的臨時數(shù)據(jù)谆甜,這些臨時數(shù)據(jù)將保存在數(shù)據(jù)庫臨時表空間中垃僚。 臨時表空間專門用于排序的。

    臨時表空間

    3)用戶表空間(users)
    保存用戶數(shù)據(jù)

    用戶表空間

    4)示例表空間(example)

    示例表空間

  • 大文件表空間與小文件表空間

表空間的查詢

2. 段

① 段是由一個或多個連續(xù)或不連續(xù)的區(qū)組成的邏輯存儲單元规辱,是表空間的組成單位谆棺。使用段的目的是用來保存特定對象。
② 段的種類有四種
(1) 數(shù)據(jù)段(表段)
數(shù)據(jù)段用來存儲表或簇的數(shù)據(jù)罕袋,可以細分為表數(shù)據(jù)段改淑、索引表數(shù)據(jù)段、分區(qū)表數(shù)據(jù)段及簇數(shù)據(jù)段四種浴讯。

數(shù)據(jù)段

(2) 索引段
用來存放索引信息朵夏,主要包括存儲ROWID(行ID)索引鍵

索引段與其相應(yīng)的表段經(jīng)常會被同時訪問榆纽,為了減少硬盤訪問的沖突仰猖,索引段與數(shù)據(jù)段可以放到處于不同物理位置的表空間中。

索引段

(3) 臨時段
當(dāng)用戶進行排序查詢時奈籽,如果在指定的內(nèi)存無法完成排序饥侵,Oracle將自動從用戶默認(rèn)的臨時表空間中指派臨時段進行排序。會話結(jié)束衣屏,數(shù)據(jù)將從臨時段中自動刪除躏升。

臨時段

(4) 回退段
回滾段用于保存數(shù)據(jù)庫的回滾信息,包含當(dāng)前未提交事務(wù)所修改的數(shù)據(jù)的原始版本狼忱。

一個事務(wù)只能使用一個回滾段存放它的回滾信息膨疏,但是一個回滾段可以存放多個事務(wù)的回滾信息。回滾段可以動態(tài)創(chuàng)建和撤銷钻弄。

回滾段的作用:

  • 事務(wù)回滾(Transaction Rollback)
    事務(wù)提交若出現(xiàn)故障成肘,可以通過回滾段將事務(wù)返回Undo(撤銷)隊列或者Redo(重做)隊列中。
  • 讀一致性(Read Consistency)
    出現(xiàn)"污讀"情況時斧蜕,發(fā)生"臟數(shù)據(jù)"双霍。Oracle數(shù)據(jù)庫通過回滾段來防止污讀情況的出現(xiàn),實現(xiàn)讀一致性批销。
  • 事務(wù)恢復(fù)(Transaction Recovery)
  • 閃回查詢(Flashback Query)
    回滾段

3. 區(qū)

① 區(qū)是由一系列連續(xù)的數(shù)據(jù)塊構(gòu)成的邏輯存儲單元洒闸,是存儲空間分配的最小單位
② 當(dāng)創(chuàng)建一個數(shù)據(jù)庫對象時均芽,Oracle為對象分配若干個區(qū)丘逸,以構(gòu)成一個段來為對象提供初始的存儲空間。當(dāng)段中已分配的區(qū)都**寫滿后掀宋,Oracle會為段分配一個新區(qū)深纲,以容納更多的數(shù)據(jù)仲锄。
一個數(shù)據(jù)塊只能屬于一個區(qū)。

區(qū)的分配
可以通過使用UNIFORM選項湃鹊,指定所有段的初始區(qū)和后續(xù)區(qū)具有統(tǒng)一大小儒喊。
可以使用AUTOALLOCATE選項指定由Oracle自動決定后續(xù)區(qū)大小。
用戶不能通過其他參數(shù)來干預(yù)區(qū)的分配币呵。

區(qū)的分配方式

⑤ 通常分配給對象的區(qū)將一直保留怀愧,不論區(qū)中的數(shù)據(jù)塊是否被使用。只有當(dāng)對象被刪除時余赢,區(qū)才會被回收芯义。

4. 數(shù)據(jù)塊

最小的I/O單元,每次讀取都是以數(shù)據(jù)塊為單位的妻柒,讀取時不足一個數(shù)據(jù)塊扛拨,則按一塊為單位。
包括一個或者多個OS BLOCK(操作系統(tǒng)塊)
在數(shù)據(jù)庫創(chuàng)建時設(shè)置举塔,不可更改鬼癣。數(shù)據(jù)塊的大小由DB_BLOCK_SIZE參數(shù)設(shè)置標(biāo)準(zhǔn)塊。
分為標(biāo)準(zhǔn)塊和非標(biāo)準(zhǔn)塊啤贩。具有標(biāo)準(zhǔn)大小的數(shù)據(jù)塊為標(biāo)準(zhǔn)塊待秃。
查看標(biāo)準(zhǔn)塊大小:

標(biāo)準(zhǔn)塊大小

數(shù)據(jù)塊的結(jié)構(gòu)
數(shù)據(jù)塊結(jié)構(gòu)

(1) 塊頭部包括標(biāo)題痹屹、表目錄章郁、行目錄三部分。
標(biāo)題包含塊的一般屬性信息志衍,如塊的物理地址暖庄、塊所屬段的類型等;
表目錄包含數(shù)據(jù)塊中保存的表的信息楼肪;
行目錄包含數(shù)據(jù)塊中的行地址等信息培廓。
頭部信息區(qū)

(2) 行空間
行數(shù)據(jù)區(qū)是已經(jīng)使用的空間,保存數(shù)據(jù)庫的對象數(shù)據(jù)春叫。是真正存放表數(shù)據(jù)和索引數(shù)據(jù)的地方肩钠。

(3) 空閑空間
空閑區(qū)是尚未使用的存儲空間,用于新行的插入或用來更新已存在的行暂殖。

數(shù)據(jù)塊的管理
(1) 行鏈接
當(dāng)向表格中插入數(shù)據(jù)時价匠,如果行的長度大于塊的大小,行的信息無法存放在一個塊中呛每,就需要使用多個塊存放行信息踩窖,將多余的行信息存放于另一個塊中,再用指針鏈接晨横,這稱為行鏈接洋腮。

(2) 行遷移
當(dāng)表格數(shù)據(jù)被更新時箫柳,如果更新后的數(shù)據(jù)長度大于塊長度,Oracle會將整行的數(shù)據(jù)原數(shù)據(jù)塊遷移到新的數(shù)據(jù)塊中啥供,只在原數(shù)據(jù)塊中留下一個指針指向新數(shù)據(jù)塊悯恍,這稱為行遷移。

(3) 對塊的管理主要是對塊中可用存儲空間的管理滤灯,確定保留多少空閑空間坪稽,避免產(chǎn)生行鏈接曼玩、行遷移而影響數(shù)據(jù)的查詢效率鳞骤。
對塊的管理分為自動手動兩種。

  • 自動管理
    如果建立表空間時使用本地管理方式黍判,并且將段的管理方式設(shè)置為AUTO豫尽,則采用自動方式管理塊。
  • 手動管理
    DBA可以采用手動管理方式顷帖,通過為設(shè)置PCTFREE(percent free 空閑率)PCTUSED(percent used使用率)兩個參數(shù)來控制數(shù)據(jù)塊中空閑空間的使用美旧。數(shù)據(jù)塊狀態(tài):空閑Free,使用Used贬墩。
    1)PCTFREE
    空閑率指定塊中必須保留的最小空閑空間比例榴嗅。
    當(dāng)數(shù)據(jù)塊的自由空間百分率低于PCTFREE時,此數(shù)據(jù)塊被標(biāo)志為USED陶舞,此時在數(shù)據(jù)塊中只可以進行更新操作嗽测,而不可以進行插入操作。該參數(shù)默認(rèn)為10肿孵。
    2)PCTUSED
    使用率指定可以向塊中插入數(shù)據(jù)時唠粥,塊已使用的最大空間比列
    當(dāng)數(shù)據(jù)塊使用空間低于PCTUSED時停做,此塊標(biāo)志為FREE晤愧,可以對數(shù)據(jù)塊中數(shù)據(jù)進行插入操作
    反之蛉腌,如果使用空間高于PCTUSED官份,則不可以進行插入操作
    該參數(shù)默認(rèn)為10烙丛。
    舉例
    文字理解
    注意:數(shù)據(jù)塊不能添加數(shù)據(jù)贯吓,但可以更新數(shù)據(jù)。

--------------------------------------------內(nèi)存體系-----------------------------------------
Oracle數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)(體系結(jié)構(gòu))的核心是內(nèi)存體系和存儲結(jié)構(gòu)蜀变。本次課主要學(xué)習(xí)Oracle的內(nèi)存體系悄谐,分為Oracle內(nèi)存結(jié)構(gòu)Oracle進程結(jié)構(gòu)兩部分。
內(nèi)存結(jié)構(gòu)核心是共享的SGA(描述內(nèi)存中各種數(shù)據(jù)存儲結(jié)構(gòu))库北,還包括進程私有的PGA爬舰。
進程結(jié)構(gòu)則以Oracle后臺進程為核心们陆,還包括服務(wù)器進程和用戶進程。

三 內(nèi)存結(jié)構(gòu)

實例:由系統(tǒng)全局區(qū)SGA和后臺進程組成情屹,是內(nèi)存結(jié)構(gòu)的核心坪仇。

內(nèi)存結(jié)構(gòu)
內(nèi)存結(jié)構(gòu)2

1. 系統(tǒng)全局結(jié)構(gòu)(System Global Area,SGA)

SGA是由Oracle分配的共享內(nèi)存結(jié)構(gòu)垃你,包含一個數(shù)據(jù)庫實例的數(shù)據(jù)控制信息椅文。
SGA數(shù)據(jù)供所有的服務(wù)器進程后臺進程共享,所以SGA又稱為共享全局區(qū)(Shared Global Area)

  • ① 數(shù)據(jù)高速緩沖區(qū)
    1)數(shù)據(jù)高速緩沖區(qū)的功能
    a.存儲從數(shù)據(jù)文件中讀取出來的數(shù)據(jù)拷貝惜颇。應(yīng)用程序要訪問的數(shù)據(jù)必須從磁盤的數(shù)據(jù)文件讀到數(shù)據(jù)緩沖區(qū)中處理皆刺。(從數(shù)據(jù)文件讀取的數(shù)據(jù)要放在內(nèi)存中的數(shù)據(jù)高速緩沖區(qū))
    b.在數(shù)據(jù)緩沖區(qū)中被修改后的數(shù)據(jù)DBWR進程寫到硬盤的數(shù)據(jù)文件中永久保存。(緩沖區(qū)相當(dāng)于一個車間凌摄,在緩沖區(qū)中對數(shù)據(jù)進行處理羡蛾,然后才寫入倉庫即數(shù)據(jù)文件)
    c.提高獲取和更新數(shù)據(jù)的性能。(減少了對磁盤的IO操作)
    2)工作過程

3)類型
a.臟緩存塊(Dirty Buffers):臟緩存塊中保存的是已經(jīng)被修改過的數(shù)據(jù)锨亏。
b.空閑緩存塊(Free Buffers):空閑緩存塊中不包含任何數(shù)據(jù)痴怨,它們等待后臺進程或服務(wù)器進程向其中寫入數(shù)據(jù)。
c.命中緩存塊(Pinned Buffers):命中緩存塊是那些正被使用的數(shù)據(jù)塊器予,同時還有很多會話等待修改或訪問的數(shù)據(jù)塊浪藻。
d.干凈緩存塊(Clean Buffers):干凈緩存塊是指那些當(dāng)前沒有被使用,即將被換出內(nèi)存的緩存塊乾翔。
4)大小
數(shù)據(jù)高速緩沖區(qū)越大爱葵,用戶需要的數(shù)據(jù)在內(nèi)存中的可能性就越大,即緩存命中率越高末融,從而減少了Oracle訪問硬盤數(shù)據(jù)的次數(shù)钧惧,提高了數(shù)據(jù)庫系統(tǒng)執(zhí)行的效率。
然而勾习,如果數(shù)據(jù)高速緩沖區(qū)的值太大浓瞪,Oracle就不得不在內(nèi)存中尋找更多的塊來定位所需要的數(shù)據(jù),反而降低了系統(tǒng)性能巧婶。顯然需要確定一個**合理的數(shù)據(jù)高速緩沖區(qū)大小乾颁。 **
DB_CACHE_SIZE(標(biāo)準(zhǔn)塊的緩沖區(qū)大小8k)

  • ② 重做日志緩沖區(qū)
    1)重做日志緩沖區(qū)的功能
    a.用于緩存用戶對數(shù)據(jù)庫進行修改操作時生成的重做記錄
    b.為了提高工作效率艺栈,重做記錄并不是直接寫入重做日志文件中英岭,而是首先被服務(wù)器進程寫入重做日志緩沖區(qū)中,在一定條件下湿右,再由日志寫入進程(LGWR)把重做日志緩沖區(qū)的內(nèi)容寫入重做日志文件中做永久性保存诅妹。
    歸檔模式下,當(dāng)重做日志切換時,由歸檔進程(ARCH)將重做日志文件的內(nèi)容寫入歸檔文件中吭狡,即當(dāng)前日志文件寫滿了尖殃,LGWR將會切換一個文件寫入,即日志切換划煮,然后原來已經(jīng)寫滿的文件就由Oracle保存到指定路徑送丰,即歸檔。
    非歸檔模式下弛秋,假設(shè)有3個日志文件器躏,LGWR寫滿第1個就切換到第2個,寫滿第2個切換到第3個蟹略,當(dāng)?shù)?個寫滿了之后登失,又重新切換到第1個日志文件進行寫入,將覆蓋掉原來第1個文件的內(nèi)容科乎。

    2)工作過程
    工作過程

    3)大小
    LOG_BUFFER參數(shù)
    較大的重做日志緩沖區(qū)壁畸,可以減少對重做日志文件寫的次數(shù)贼急,適合長時間運行的茅茂、產(chǎn)生大量重做記錄的事務(wù)

  • ③ 共享池
    1)共享池的功能
    共享池用于緩存最近執(zhí)行過的SQL語句太抓、PL/SQL程序和數(shù)據(jù)字典信息空闲,是對SQL語句、PL/SQL程序進行語法分析走敌、編譯碴倾、執(zhí)行的區(qū)域。

    2)組成
    a.庫緩存
    庫緩存用于緩存已經(jīng)解釋并執(zhí)行過的SQL語句和PL/SQL程序代碼掉丽,以提高SQL或PL/SQL程序的執(zhí)行效率跌榔。
    包括SQL工作區(qū)PL/SQL工作區(qū)
    舉例:實際上不是保存整條SQL語句,而是保存相似的語句結(jié)構(gòu)捶障。查詢成績select * from 成績表 where 學(xué)號=…; 其中select * from 成績表是每個學(xué)生操作的相似結(jié)構(gòu)僧须,這時將語句結(jié)構(gòu)保存,而學(xué)號則作為一個變量來處理项炼。
    b.數(shù)據(jù)字典緩存區(qū)
    數(shù)據(jù)字典緩存區(qū)保存最常用的數(shù)據(jù)字典信息(如表担平、字段)
    舉例:select empno from emp。首先會在數(shù)據(jù)字典上查詢emp表锭部,查詢到就保存在該數(shù)據(jù)字典緩存區(qū)中暂论,之后查詢都首先在該緩存區(qū)查找。(字段也是)

    3)大小
    SHARED_POOL_SIZE查看共享池大小拌禾。
    合適的共享池大小取胎,可使編譯過的程序代碼長駐內(nèi)存,大大降低重復(fù)執(zhí)行相同的SQL語句(相同結(jié)構(gòu))湃窍、PL/SQL程序的系統(tǒng)開銷闻蛀,從而提高數(shù)據(jù)庫的性能摄杂。

  • ④ 大型池
    1)功能
    大型池是一個可選的內(nèi)存配置項,主要為Oracle多線程服務(wù)器循榆、服務(wù)器I/O進程析恢、數(shù)據(jù)庫備份與恢復(fù)操作、執(zhí)行具有大量排序操作的SQL語句秧饮、執(zhí)行并行化的數(shù)據(jù)庫操作等需要大量緩存的操作提供內(nèi)存空間映挂。(即大量/臨時數(shù)據(jù)可以保存在大型池)
    如果沒有大型池,上述操作所需要的緩存空間將在共享池或PGA中分配盗尸,因而影響共享池或PGA的使用效率柑船。
    2)大小
    LARGE_POOL_SIZE查看

  • ⑤ Java池
    1)功能
    Java提供對Java程序設(shè)計的支持,用于存儲Java代碼泼各、Java語句的語法分析表鞍时、Java語句的執(zhí)行方案和進行Java程序開發(fā)。
    2)大小
    JAVA_POOL_SIZE
    通常不小于20M扣蜻,以便安裝Java虛擬機

  • ⑥ 流池
    1)功能
    流池是一個可選的內(nèi)存配置項逆巍,用于對流的支持。
    2)大小
    STREAMS_POOL_SIZE

2. 程序(私有)全局區(qū)(Program/Private Global Area莽使,PGA)

PGA是一個私有的內(nèi)存區(qū)锐极,不能共享,每個服務(wù)器進程只能訪問自己的PGA芳肌,因此PGA又稱為私有全局區(qū)(Private Global Area)灵再。PGA不在實例中潮针。

系統(tǒng)同時為每個后臺進程分配私有的PGA區(qū)弛车。(不是只有服務(wù)進程有PGA)
所有服務(wù)器進程PGA與所有后臺進程PGA大小的和,即為實例的PGA的大小蕴潦。

PGA隨著服務(wù)器進程與后臺進程的啟動而分配净薛,隨著服務(wù)器進程和后臺進程的終止而被釋放汪榔。

① 排序區(qū)
存放排序操作(如創(chuàng)建索引、分組罕拂、多表連接)所產(chǎn)生的臨時數(shù)據(jù)揍异。(優(yōu)先用大型池保存臨時數(shù)據(jù),沒有才用PGA和共享池)

② 游標(biāo)區(qū)
存放執(zhí)行游標(biāo)操作時所產(chǎn)生的數(shù)據(jù)爆班。

③ 會話區(qū)
保存用戶會話所具有的權(quán)限衷掷、角色、性能統(tǒng)計信息柿菩。

堆棧區(qū)(重要)
用于保存會話過程中的綁定變量戚嗅、會話變量等私有信息。
如上面的select * from 成績表 where 學(xué)號=101,這里的學(xué)號就是所說的綁定變量或會話變量懦胞。

3. 查看內(nèi)存參數(shù)

查看SGA的基本信息

  • 使用V$SGAINFO視圖查看SGA基本信息
  • 使用show parameters 參數(shù)名 查看
    比如
    SQL>show parameters log_buffer

    log_buffer

    查看日志緩沖區(qū)大小
    SQL>show parameters db_cache_size
    查看數(shù)據(jù)高速緩沖區(qū)替久,結(jié)果為0表示本實例采用了內(nèi)存自動管理
    SQL>show parameters size(如果不知道具體名稱可以用size)
    查看所有帶size的參數(shù)

    SQL>show parameters
    查看所有參數(shù)
    為什么用v$sgainfo查詢的高速緩存區(qū)是1275068416,而size里面的卻是0躏尉?
    這是因為Oracle的默認(rèn)模式是內(nèi)存自動管理模式(自動分配管理)蚯根。show里面查詢的是我們原始設(shè)置的參數(shù)大小,v$sgainfo是當(dāng)前的內(nèi)存大小分配胀糜,由系統(tǒng)自動調(diào)整颅拦。

四 進程結(jié)構(gòu)

1. 進程結(jié)構(gòu)的介紹

進程是操作系統(tǒng)中一個獨立的可以調(diào)度的活動,用于完成指定的任務(wù)教藻。進程與程序的區(qū)別在于:
① 進程是動態(tài)的概念距帅,即動態(tài)創(chuàng)建,完成任務(wù)后立即消亡括堤;而程序是一個靜態(tài)實體碌秸。
② 進程強調(diào)執(zhí)行過程,而程序僅僅是指令的有序集合悄窃。

類型:
用戶進程
服務(wù)器進程
后臺進程

2. Oracle服務(wù)進程

① 專用服務(wù)器進程
只能為一個用戶進程提供服務(wù)讥电。

專用服務(wù)進程
(1)用戶進程向一個數(shù)據(jù)庫實例發(fā)出連接請求。
(2)位于數(shù)據(jù)庫服務(wù)器中的Oracle監(jiān)聽程序探測到用戶進程請求后广匙,首先驗證用戶進程提供的用戶名和口令允趟,驗證通過后建立一個專用的服務(wù)器進程為該用戶進程提供服務(wù)恼策。
(3)用戶提交一條SQL語句鸦致。
(4)專用服務(wù)器進程首先判斷在共享池中是否存在類似的SQL語句。如果不存在涣楷,將為這條SQL語句保存到共享池分唾,然后解析該語句。在解析過程中狮斗,服務(wù)器進程將檢查該語句的語法正確性绽乔。同時,該語句的私有數(shù)據(jù)和信息保存到服務(wù)器進程的PGA中碳褒。
(5)解析完成后折砸,服務(wù)器進程開始在數(shù)據(jù)高速緩沖區(qū)中尋找SQL語句所要求的數(shù)據(jù)。如果數(shù)據(jù)不在數(shù)據(jù)高速緩沖區(qū)中沙峻,還需要從數(shù)據(jù)文件中將所需要的數(shù)據(jù)讀取到數(shù)據(jù)高速緩沖區(qū)中睦授,同時返回給用戶
(6)服務(wù)器進程執(zhí)行SQL語句摔寨。如果SQL語句要對數(shù)據(jù)進行更改去枷,僅在數(shù)據(jù)高速緩沖區(qū)中對緩存塊進行更改,并將更改所生成的重做記錄保存在重做日志緩存區(qū)中。將來删顶,由LGWR進程將重做記錄寫入重做日志文件竖螃,再由DBWR進程將臟緩存塊寫入數(shù)據(jù)文件。
(7)執(zhí)行完畢后逗余,服務(wù)器進程將結(jié)果返回給用戶進程特咆。

② 共享服務(wù)器進程
可以為多個用戶進程提供服務(wù)。

共享服務(wù)進程
(1)在客戶端創(chuàng)建一個用戶進程录粱,連接數(shù)據(jù)庫坚弱。
(2)位于服務(wù)器中的Oracle監(jiān)聽程序探測到用戶進程請求后,首先驗證用戶進程提供的用戶名和口令关摇,驗證通過后將該用戶進程分配給一個調(diào)度進程荒叶。
(3)用戶進程直接調(diào)度進程(可能有多個)進行交互。
(4)用戶提交一條SQL語句输虱,調(diào)度進程對SQL語句進行處理些楣,然后將處理結(jié)果放入位于SGA中的一個“請求隊列”(只有一個)中,同時將調(diào)度程序ID也存入請求隊列宪睹。
(5)當(dāng)某個共享服務(wù)器(多個)進程空閑時愁茁,從“請求隊列”中取出一條處理后的SQL語句,并對該語句進行解析和執(zhí)行亭病,得到它所請求的數(shù)據(jù)鹅很。
(6)共享服務(wù)器進程將處理結(jié)果放入SGA中的一個“響應(yīng)隊列”(有多個)中。每個調(diào)度進程都有一個對應(yīng)的“響應(yīng)隊列”罪帖。
(7)調(diào)度進程定期檢查自己的“響應(yīng)隊列”促煮,如果發(fā)現(xiàn)有自己送出請求的處理結(jié)果,則將結(jié)果取出整袁。調(diào)度進程根據(jù)處理結(jié)果中保存的調(diào)度程序ID來標(biāo)識該結(jié)果是否是自己的菠齿。
(8)調(diào)度程序?qū)⑻幚斫Y(jié)果返回給用戶進程。

3. 后臺進程

① DBWR進程(數(shù)據(jù)庫寫入進程)

  • 把數(shù)據(jù)高速緩沖區(qū)中已經(jīng)被修改過的數(shù)據(jù)(臟緩存塊)成批寫入數(shù)據(jù)文件中永久保存坐昙,同時使數(shù)據(jù)高速緩沖區(qū)有更多的空閑緩存塊绳匀,保證服務(wù)器進程將所需要的數(shù)據(jù)從數(shù)據(jù)文件中讀取到數(shù)據(jù)高速緩沖區(qū)中,提高緩存命中率炸客。
  • 啟動DBWR進程
    a.執(zhí)行INSERT疾棵、UPDATE等操作時 ,沒有足夠的空閑塊
    b.當(dāng)檢查點發(fā)生時痹仙,將啟動DBWR進程
    c.當(dāng)數(shù)據(jù)緩存的LRU列表的長度達到初始化 DB_BLOCK_WRITE_BATCH指定值的一半時是尔。
    d.若發(fā)生超時(大約3秒未被啟動)

② LGWR進程(日志寫入進程)

  • 日志寫入進程負(fù)責(zé)把重做日志緩沖區(qū)的重做記錄一次性寫入重做日志文件中永久保存。
  • 啟動LGWR進程
    a.用戶通過COMMIT語句提交當(dāng)前事務(wù):事物對應(yīng)兩種數(shù)據(jù)蝶溶,一種是日志數(shù)據(jù)信息嗜历、一種是臟緩存塊中的用戶數(shù)據(jù)宣渗。提交后,前者直接由LGWR寫入日志文件梨州,而后者則是還存在高速緩存區(qū)中痕囱,當(dāng)條件滿足后,由啟動DBWR進程確定暴匠。
    b.重做日志緩存被寫滿三分之一(假如日志緩存區(qū)90MB鞍恢,第一個事物是29MB,則不會啟動每窖,仍可以寫入緩存區(qū)帮掉,但第二個事物是60MB,超過30MB窒典,馬上啟動全部寫入)
    c.DBWR進程開始將臟緩存塊寫入數(shù)據(jù)文件時
    d.每隔3秒蟆炊,即發(fā)生一次超時,將啟動LGWR

③ CPKT進程(檢查點進程)

  • 檢查點概念
    檢查點是一個事件瀑志,①當(dāng)該事件發(fā)生時(每隔一段時間發(fā)生)涩搓,DBWR進程要把數(shù)據(jù)高速緩沖區(qū)中臟緩存塊寫入數(shù)據(jù)文件中,這時劈猪,會使得LGWR進程啟動昧甘,則會先寫重做日志緩沖區(qū),再臟緩存塊寫入數(shù)據(jù)文件战得。②同時Oracle將對數(shù)據(jù)庫控制文件和數(shù)據(jù)文件的頭部的同步序號進行更新充边,以記錄下當(dāng)前的數(shù)據(jù)庫結(jié)構(gòu)和狀態(tài),保證數(shù)據(jù)的一致性常侦。
  • CKPT進程的作用
    a.更新控制文件與數(shù)據(jù)文件的頭部浇冰,使其同步
    b.觸發(fā)DBWR進程,將臟緩存塊寫入數(shù)據(jù)文件(會先調(diào)用LGWR進程)

④ SMON進程(系統(tǒng)監(jiān)控進程)

  • 功能
    a. 實例恢復(fù)

    • 執(zhí)行前滾(ROLL FORWARD)刮吧,將重做日志信息已經(jīng)寫入到重做日志文件中但還數(shù)據(jù)還沒有寫入到數(shù)據(jù)文件中的已提交的數(shù)據(jù)寫入到數(shù)據(jù)文件湖饱。
    • 在前滾完成后立即打開數(shù)據(jù)庫。此時用戶可以連接數(shù)據(jù)庫杀捻,但此時數(shù)據(jù)文件中可能存在一些沒有提交的數(shù)據(jù)需要回滾
    • 回滾沒有提交的事務(wù)

    b. 回收不再使用的臨時空間蚓庭。
    c. 將各個表空間的空閑碎片(空閑塊)合并(表空間的存儲參數(shù)PCTINCREASE不為0時)
    因為塊必須是連續(xù)的致讥,因此中間的塊若有數(shù)據(jù)刪除,則產(chǎn)生空閑器赞,這時就可以用SMON進程合并這些空閑塊垢袱。

⑤ PMON進程(進程監(jiān)控進程)
負(fù)責(zé)恢復(fù)失敗的用戶進程或服務(wù)器進程,并且釋放進程所占用的資源港柜。

清除非正常中斷的用戶進程留下的孤兒會話请契,回退未提交的事務(wù)咳榜,釋放會話所占用的鎖、SGA爽锥、PGA等資源涌韩。

監(jiān)控調(diào)度進程和服務(wù)器進程的狀態(tài),如果它們失敗氯夷,則嘗試重新啟動它們臣樱,并釋放它們所占用的各種資源。

⑥ ARCH進程(歸檔進程)
歸檔進程負(fù)責(zé)在日志切換后將已經(jīng)寫滿的重做日志文件復(fù)制到歸檔目標(biāo)(一個磁盤路徑)中腮考,防止寫滿的重做日志文件被覆蓋

⑦ RECO進程(恢復(fù)進程)
RECO進程負(fù)責(zé)在分布式數(shù)據(jù)庫環(huán)境中自動解決分布式事務(wù)的故障雇毫。一個節(jié)點的RECO自動解決所有的懸而未決的事務(wù)。當(dāng)一個數(shù)據(jù)庫服務(wù)器的RECO后臺進程試圖建立同一遠程服務(wù)器的通信踩蔚,如果該遠程服務(wù)器不可用或者網(wǎng)絡(luò)連接不能建立時棚放,RECO自動地在一個時間間隔之后再次連接。

⑧ LCKn進程(鎖進程)
LCKn進程用于Oracle并行服務(wù)器環(huán)境中馅闽。在數(shù)據(jù)庫中最多可以啟動10個LCKn進程席吴,主要用于實例間的封鎖(鎖的是實例)

⑨ Dnnn(調(diào)度進程)
Dnnn進程是多線程服務(wù)器(Multithreaded Server捞蛋,MTS)的組成部分孝冒,以后臺進程的形式運行。調(diào)度進程接受用戶進程請求拟杉,將它們放入請求隊列中庄涡,然后為請求隊列中的用戶進程分配一個服務(wù)器進程。最后搬设,從響應(yīng)隊列返回數(shù)據(jù)給用戶進程

-----------------------------------學(xué)習(xí)Oracle的數(shù)據(jù)字典--------------------------------
前面課程已經(jīng)學(xué)習(xí)了Oracle數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)穴店,但是針對一個具體的Oracle數(shù)據(jù)庫,我們應(yīng)該如何獲知該數(shù)據(jù)庫的結(jié)構(gòu)信息呢拿穴?一條記錄是如何在Oracle內(nèi)部被存儲管理的呢泣洞?本次課主要學(xué)習(xí)Oracle的數(shù)據(jù)字典,然后利用Oracle的數(shù)據(jù)字典來查看一條記錄是如何存儲的默色。

五 數(shù)據(jù)字典

數(shù)據(jù)字典是只讀的球凰,只能由Oracle系統(tǒng)才能對字典管理維護
數(shù)據(jù)字典表 和 視圖 都屬于sys用戶存儲于system表空間腿宰。
(注意:系統(tǒng)表空間不止包括system表空間)

Oracle數(shù)據(jù)字典保存數(shù)據(jù)本身的系統(tǒng)信息以及所有數(shù)據(jù)庫對象信息呕诉。

1.保存數(shù)據(jù)庫對象的定義信息。表吃度、視圖甩挫、索引、同義詞椿每、序列伊者、存儲過程英遭、函數(shù)、包亦渗、觸發(fā)器及其他各種對象挖诸。
2.數(shù)據(jù)庫存儲空間分配信息。
記錄數(shù)據(jù)庫對象分配了多少個區(qū)央碟、使用了多少空間(區(qū))
3.數(shù)據(jù)庫安全信息税灌。用戶、權(quán)限亿虽、角色菱涤、完整性
4.數(shù)據(jù)庫運行時的性能(SGA分配合理?與PGA夠大洛勉?)和統(tǒng)計信息粘秆。
5.其他數(shù)據(jù)庫本身的基本信息。


數(shù)據(jù)字典用途

1.Oracle通過訪問數(shù)據(jù)字典判斷
用戶權(quán)限的合法性
模式對象的存在性: 表存在不存在
存儲空間的可用性 配額:給存儲空間分配的額度收毫。
在user表空間中(insert ... into emp ) 假設(shè)用戶HR有權(quán)限添加
僅僅有權(quán)之外攻走,還受制于用戶在user表空間的配額。假如分配的配額是1M此再,那么每次只能最大添加1M昔搂。
另一種含義:支持系統(tǒng)可以性,表空間如果脫機输拇、查詢不了數(shù)據(jù)摘符。

2.使用DDL語句修改數(shù)據(jù)庫對象后,Oracle將在數(shù)據(jù)字典中記錄所做的修改策吠。
3.任何用戶都可以從數(shù)據(jù)字典只讀視圖中獲取各種數(shù)據(jù)庫對象信息逛裤。
4.DBA可從數(shù)據(jù)字典動態(tài)性能視圖中獲取數(shù)據(jù)庫的運行狀態(tài),作為進行性能調(diào)整的依據(jù)猴抹。


數(shù)據(jù)字典的結(jié)構(gòu)

分為:
數(shù)據(jù)字典表數(shù)據(jù)字典視圖

按數(shù)據(jù)字典對象的虛實性不同(數(shù)據(jù)字典的可變性)带族,分為
靜態(tài)數(shù)據(jù)字典(數(shù)據(jù)不變)動態(tài)數(shù)據(jù)字典(實時記錄數(shù)據(jù)變化,數(shù)據(jù)可變)

2*2 = 4 一共得到四種數(shù)據(jù)字典
1.靜態(tài)數(shù)據(jù)字典表
在數(shù)據(jù)庫創(chuàng)建過程由sql.bsq自動創(chuàng)建蟀给。由sys所有蝙砌。
$結(jié)尾,如tab$坤溃。只有Oracle才能讀寫拍霜,用戶不能讀,不直接使用薪介。

2.靜態(tài)數(shù)據(jù)字典視圖
該數(shù)據(jù)字典是用戶該使用的。
為了用戶可讀越驻,可使用靜態(tài)數(shù)據(jù)字典視圖汁政。
catalog.sql腳本創(chuàng)建的靜態(tài)數(shù)據(jù)字典視圖和其別名道偷。
如user_tables,由 _組成记劈。

3.動態(tài)數(shù)據(jù)字典表
動態(tài)數(shù)據(jù)字典表是在數(shù)據(jù)庫實例運行過程中由Oracle動態(tài)創(chuàng)建和維護的一系列“虛表”勺鸦,在實例關(guān)閉時被釋放。
“虛表”目木,系統(tǒng)使用换途、用戶不使用,以X$開頭刽射,由sys用戶所有军拟。

4.動態(tài)數(shù)據(jù)字典視圖
v$開頭,用戶可以使用誓禁,主要是管理員使用懈息。動態(tài)性能視圖又稱為V$視圖,如動態(tài)性能視圖V$DATAFILE摹恰。


數(shù)據(jù)字典的使用

查詢數(shù)據(jù)字典信息
dictionary 獲取表或試圖的名稱和解釋
dict_columns 獲取的是表或視圖中 字段 的名稱和解釋 大寫


1.靜態(tài)數(shù)據(jù)字典表的使用
用戶不能對這些表直接操作辫继。
2.靜態(tài)數(shù)據(jù)字典視圖
通常,用戶通過對靜態(tài)數(shù)據(jù)字典視圖的查詢可以獲取所需要的所有數(shù)據(jù)庫信息俗慈。

user_ 當(dāng)前數(shù)據(jù)庫用戶 所擁有的 所有模式對象 的信息
all_ 當(dāng)前數(shù)據(jù)庫用戶 可以訪問 的所有模式對象的信息
user是all的子集
dba_ 包含了所有數(shù)據(jù)庫對象信息姑宽,只有具有DBA角色的用戶才能夠訪問這些視圖


3.動態(tài)性能表使用
都屬于sys用戶,用戶不能使用闺阱。

4.動態(tài)性能視圖的使用
動態(tài)性能視圖是SYS用戶所擁有的炮车,在默認(rèn)情況下,只有SYS用戶和擁有DBA角色的用戶可以訪問馏颂。
不同模式下示血,執(zhí)行同一數(shù)據(jù)庫的數(shù)據(jù)字典視圖,信息可能不同救拉。
不同狀態(tài)下难审,能使用的數(shù)據(jù)字典視圖不一樣。
nomount下亿絮,打開了初始化參數(shù)文件告喊,可以使用與參數(shù)相關(guān)的視圖。
mount下派昧,打開了控制文件黔姜,記錄了數(shù)據(jù)庫信息,可以訪問與數(shù)據(jù)庫相關(guān)的視圖
open下蒂萎,可以訪問表了秆吵。

-----------------------------------------------------------------------------------------------------------------------------

Oracle體系結(jié)構(gòu)總結(jié)

一個數(shù)據(jù)庫分兩大部分
實例存儲結(jié)構(gòu)

存儲結(jié)構(gòu)主要是物理存儲結(jié)構(gòu)
數(shù)據(jù)文件 控制文件 重做日志文件 歸檔文件

實例
后臺進程:DBWR CKPT LGWR ARCH SMON PMON
實例內(nèi)存結(jié)構(gòu)SGA:數(shù)據(jù)高速緩沖區(qū) 日志緩沖區(qū) 共享池 大型池 Java池 流池 其他

用戶進程發(fā)出請求,讓服務(wù)器進程接收五慈,然后服務(wù)器使用實例纳寂。
查詢操作select
服務(wù)進程 到 數(shù)據(jù)高速緩沖區(qū) 查找 找到了返回給服務(wù)器進程主穗,再給用戶進程。
若找不到毙芜,服務(wù)進程則會通過 數(shù)據(jù)字典 打開數(shù)據(jù)文件忽媒,以塊為單位讀出數(shù)據(jù)塊,把這些塊放入數(shù)據(jù)高速緩沖區(qū)
然后服務(wù)進程同時返回信息給用戶進程腋粥。

修改操作updata
前提:數(shù)據(jù)高速緩沖區(qū)由DL(臟緩存塊列表晦雨,存放臟緩存塊的塊號)LRU(最近最少列表) 管理。
服務(wù)進程先找到數(shù)據(jù)高速緩沖區(qū)隘冲,找到了,在數(shù)據(jù)緩沖區(qū)進行修改对嚼,寫入臟緩存塊,然后將臟緩存塊放入DL漠烧。

若要再修改下一個update已脓,發(fā)現(xiàn)數(shù)據(jù)緩沖區(qū)沒有空閑通殃,
會再修改之前先生成重做日志記錄信息寫入日志緩沖區(qū)
寫完再修改緩存塊画舌,再將緩存塊的地址放入DL堕担,
最后會啟動DBWR,將緩沖區(qū)數(shù)據(jù)寫入數(shù)據(jù)文件曲聂。

CKPT發(fā)生時霹购,會啟動DBWR,要求DBWR將全部臟緩存塊寫入數(shù)據(jù)文件朋腋,
但DBWR啟動之前齐疙,DBWR會要求LGWR啟動先將對應(yīng)的日志緩存信息寫入到重做日志文件
LGWR寫一半時旭咽,發(fā)現(xiàn)重做日志文件寫滿了贞奋,
則在歸檔模式下,ARCH進程會啟動穷绵,將寫滿的重做日志文件在另一個路徑下寫入歸檔文件轿塔,
然后LGWR會繼續(xù)寫入日志緩沖區(qū),寫完后,DBWR將全部臟緩存塊寫入數(shù)據(jù)文件催训,
DBWR寫完之后洽议,CKPT會在數(shù)據(jù)文件宗收、控制文件漫拭、重做日志文件(非必須)的頭部寫入同步序列號
若發(fā)現(xiàn)序列號不同混稽,則用歸檔文件恢復(fù)采驻。

多表查詢下礼旅,會生成大量臨時數(shù)據(jù)。
此時汰翠,若有大型池,先用大型池佛纫,
若無,則用服務(wù)進程的PGA的排序區(qū)甥啄,若不夠用
則共享池中存放,也可以使用臨時表空間迎变。

邏輯存儲結(jié)構(gòu) 與 物理存儲結(jié)構(gòu)


結(jié)合案例更明晰。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末倒源,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子胳螟,更是在濱河造成了極大的恐慌,老刑警劉巖嘉竟,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異妥粟,居然都是意外死亡,警方通過查閱死者的電腦和手機播急,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人烂叔,你說我怎么就攤上這事》攴溃” “怎么了灰署?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我旱捧,道長,這世上最難降的妖魔是什么贫橙? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任才顿,我火速辦了婚禮幅垮,結(jié)果婚禮上忙芒,老公的妹妹穿的比我還像新娘。我一直安慰自己甘桑,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布爹橱。 她就那樣靜靜地躺著,像睡著了一般组砚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盆偿,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音求橄,去河邊找鬼谈撒。 笑死啃匿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的裆悄。 我是一名探鬼主播或南,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蹬癌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起董济,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后狂巢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唧领,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡驯杜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年滚局,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘁圈。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡钞澳,死狀恐怖略贮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情揽祥,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布料按,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏旅急。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一盟迟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧辖众,春花似錦戏阅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翎猛。三九已至,卻和暖如春懊缺,著一層夾襖步出監(jiān)牢的瞬間靶壮,已是汗流浹背拣度。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工奸晴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留代箭,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像驾茴,于是被迫代替她去往敵國和親盼樟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 服務(wù)器結(jié)構(gòu) SQL Server服務(wù)器可以看成是由實例及數(shù)據(jù)庫構(gòu)成沟涨。實例包括SQL Server占用的內(nèi)存及后臺線...
    不知名的蛋撻閱讀 3,577評論 0 13
  • Oracle 基于客戶 - 服務(wù)器結(jié)構(gòu)恤批。Oracle 服務(wù)器由 數(shù)據(jù)庫 (原始數(shù)據(jù)加上日志和控制文件)和 實例(服...
    板藍根plank閱讀 785評論 0 8
  • 數(shù)據(jù)庫設(shè)計基本步驟:①需求分析階段②概念結(jié)構(gòu)設(shè)計階段③邏輯結(jié)構(gòu)設(shè)計階段④物理結(jié)構(gòu)設(shè)計階段⑤實施和維護階段 Orac...
    冒險小A閱讀 530評論 0 0
  • 昨天和媽媽去爬山看日落。 爬上去先入眼的是黃蜀葵裹赴,薄薄的花瓣,黃色很淺射沟,卻充滿力量海蔽,怪不得花語是溫暖暇务。 之后又看到...
    冰十二閱讀 701評論 0 1
  • 故事之所以是故事,那是因為它有那個開始苏携,開始之后的故事走向如何完全不必放在心上,因為故事已經(jīng)開始了肃叶,它是一個故事,...
    蒙語閱讀 339評論 0 0