如何讓Oracle資料庫保持優良性能的方法

来源:http://www.cnblogs.com/zyjj/archive/2017/07/07/7132616.html
-Advertisement-
Play Games

OracleDatabase,又名OracleRDBMS,或簡稱Oracle。是甲骨文公司的一款關係資料庫管理系統。它是在資料庫領域一直處於領先地位的產品。可以說Oracle資料庫系統是目前世界上流行的關係資料庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效 ...


OracleDatabase,又名OracleRDBMS,或簡稱Oracle。是甲骨文公司的一款關係資料庫管理系統。它是在資料庫領域一直處於領先地位的產品。可以說Oracle資料庫系統是目前世界上流行的關係資料庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、微機環境。它是一種高效率、可靠性好的適應高吞吐量的資料庫解決方案。

     Oracle資料庫以其高可靠性、安全性、可相容性,得到越來越多的企業的青睞。如何使Oracle資料庫保持優良性能,這是許多資料庫管理員關心的問題,根據筆者經驗建議不妨針對以下幾個方面加以考慮。

    一、分區

  根據實際經驗,在一個大資料庫中,數據空間的絕大多數是被少量的表所占有。為了簡化大型資料庫的管理,改善應用的查詢性能,一般可以使用分區這種手段。所謂分區就是動態表中的記錄分離到若幹不同的表空間上,使數據在物理上被分割開來,便於維護、備份、恢復、事務及查詢性能。當使用的時候可建立一個連接所有分區的視圖,使其在邏輯上仍以一個整體出現。

  1.建立分區表

如何讓Oracle資料庫保持優良性能的方法_Oracle_安全_大數據_課課家教育

  表Employee依據DeptNo列進行分區。

  2.分區索引

當分區中出現許多事務並且要保證所有分區中的數據記錄的惟一性時採用全局索引,在建立全局索引時,Global子句允許指定索引的範圍值,這個範圍值可以不同於表分區的範圍值。

  當分區中出現許多事務並且要保證所有分區中的數據記錄的惟一性時採用全局索引,在建立全局索引時,Global子句允許指定索引的範圍值,這個範圍值可以不同於表分區的範圍值。只有建立局部索引才會使索引分區與表分區間建立起一一對應關係。因此,在大多數情況下,應該使用局部索引分區。若使用了此索引,分區就能夠很容易地將索引分區與表分區建立關聯,局部索引比全局索引更易於管理。

  3.分區管理

  根據實際需要,還可以使用Altertable命令來增加、刪除、交換、移動、修改、重命名、劃分、截短一個已存在分區的結構。

  二、重建索引

如果表中記錄頻繁地被刪除或插入,儘管表中的記錄總量保持不變,索引空間的使用量會不斷增加。雖然記錄從索引中被刪除,但是該記錄索引項的使用空間不能被重新使用。因此,如果表變化不定,索引空間量會不斷增加,不論表中記錄數量是否增加,只是因為索引中無效空間會增加。

  如果表中記錄頻繁地被刪除或插入,儘管表中的記錄總量保持不變,索引空間的使用量會不斷增加。雖然記錄從索引中被刪除,但是該記錄索引項的使用空間不能被重新使用。因此,如果表變化不定,索引空間量會不斷增加,不論表中記錄數量是否增加,只是因為索引中無效空間會增加。

  要回收那些曾被刪除記錄使用的空間,需要使用Alterindexrebuild命令。可以做一個定期運行的批處理程式,來重建最活動表的索引。這個批處理程式可以在空閑時運行,以避免該程式與其他應用程式衝突。若能堅持索引的這一程式規劃,便可以及時回收那些未使用空間,提高空間利用率。

  三、段的碎片整理

  當生成一個資料庫對象時(一個表或一個索引),通過用戶預設值或指定值來為它指定表空間。一個在表空間中生成的段,用於存儲對象的相關數據。在段被關閉、收縮、截斷之前,段所分配的空間將不被釋放。

  一個段是由範圍組成,而範圍是由相鄰的Oracle塊組成。一旦存在的範圍不能再存儲新的數據,這個段就會去獲得新的範圍,但並不要求這些範圍是彼此相鄰的。這樣的擴展會一直繼續下去,直到表空間中的數據文件不能提供更多的自由空間,或者範圍數量已達到極限。

  因此,一個碎片太多的數據段,不僅會影響運行,也會引發表空間中的空間管理問題。所以,每個數據段只含有一個範圍是十分有益的。藉助監控系統,可以通過檢查DBA_SEGMENTS數據字典視圖來瞭解哪些資料庫對象含有10個或更多範圍的段,確定其數據段碎片。

  若一個段的碎片過多,可用兩種方法解決:

  1.用正確的存儲參數建立一個新表,將舊表的數據插入到新表中,在刪除舊表;

  2.利用Export/Import工具。

  如:expsystem/managerfile=exp.dmpcompress=Ygrants=Yindexes=Ytables=(T1,T2)

  若輸出成功,進入Oracle,刪除上述表。

  註:compress=Y表示將在輸出過程中修改它們的存儲參數。

  impsystem/managerfile=exp.dmpcommit=Ybuffer=64000full=Y

  Oracle資料庫特點

  1、完整的數據管理功能:[2]

  1)數據的大量性

  2)數據的保存的持久性

  3)數據的共用性

  4)數據的可靠性

  2、完備關係的產品:

  1)信息準則---關係型DBMS的所有信息都應在邏輯上用一種方法,即表中的值顯式地表示;

  2)保證訪問的準則

  3)視圖更新準則---只要形成視圖的表中的數據變化了,相應的視圖中的數據同時變化

  4)數據物理性和邏輯性獨立準則

  3、分散式處理功能:

  ORACLE資料庫自第5版起就提供了分散式處理能力,到第7版就有比較完善的分散式資料庫功能了,一個ORACLE分散式資料庫由oraclerdbms、sql*Net、SQL*CONNECT和其他非ORACLE的關係型產品構成。

  4、用ORACLE能輕鬆的實現數據倉庫的操作。

  這是一個技術發展的趨勢,不在這裡討論。

  優點

  ■可用性強

  ■可擴展性強

  ■數據安全性強

  ■穩定性強

  四、自由範圍的碎片整理

  表空間中的一個自由範圍是表空間中相連的自由(空間)塊的集合。當一個段關閉時,它的範圍將被釋放,並被標記為自由範圍。然而,這些自由範圍再也不能與相鄰的自由範圍合併,它們之間的界線始終存在。但是當表空間的預設值pctincrease設置不是0時,SMON後臺進程會定期將這些相鄰的自由範圍合作。若pctincrease設置為0,那麼相鄰自由範圍不會被資料庫自動合併。但可以使用Altertable命令"coalesce"選項,來強迫進行相鄰自由範圍的合併。

  不進行自由範圍合併,在日後的空間請求中,會影響到表空間中的空間分配。當需要一個足夠大的範圍時,資料庫並不會合併相鄰的自由範圍,除非沒有其他選擇。這樣,當表空間中前面較小的自由範圍已被使用時,將使用表空間中後面部分最大的一個自由範圍。結果,會因為沒有足夠多的使用空間,從而導致表空間需求的矛盾。由於這樣的情況出現,使資料庫的空間分配距理想越來越遠。自由空間碎片常會出現在那些經常關閉又重新生成的資料庫表和索引中。

  在理想的Oracle表空間中,每一個資料庫對象存儲在一個單獨的範圍中,並且所有有效自由空間集中在一個巨大而連續的範圍中。這樣,在一個對象需要附加存儲空間時,可以在增加獲取足夠大自由空間的可能性的同時,最小化空間中的迴圈調用,提高自由空間使用率。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 為了協助開發還原生產環境中的某些bug,需要將將生產環境的某些特定表數據導入到測試環境做測試,之前一直都是暴力地truncate測試環境的表,然後用SSIS將生產環境對應的整張表數據導入測試環境,簡便快捷後來開發提出來,保留測試環境已有的數據,只同步差異的數據(根據主鍵),於是就嘗試使用SSIS中的 ...
  • 實驗環境:OS X EI Captian + MySQL 5.7一、配置MySQL自動記錄慢查詢日誌查看變數,也就是配置信息show (global) variables like '%slow_query%'修改變數:set global 變數名 = 值與慢查詢日誌有關的變數:是否開啟慢查詢日誌s... ...
  • 以下內容適用於oracle 10.2.0.5及其以上版本 一個查詢很慢,原始SQL如下: 表都不大,執行計劃如下: 這個執行計劃,看起來無比正常,應該要left join的都有。 但問題的關鍵在於10 步驟-- MERGE JOIN CARTESIAN。笛卡爾乘積的排序合併連接,這個需要耗費很長時間 ...
  • 首先介紹用到的兩個函數 charindex(要查找的表達式1,表達式2),返回值為表達式1在表達式2中的下標,未找到則返回0。(sql的下標是從1開始的),例如 select charindex('sql','sql server 2012') 返回1 另一個是stuff(要替換的表達式1, 起始位 ...
  • OpenWAF是第一個全方位開源的Web應用防護系統; ELK 是比較火的開源日誌分析系統; 本節主要介紹,ELK 的 docker 部署及與 OpenWAF 的結合 ...
  • 在linux下向oracle資料庫導入資料庫文件 執行語句:imp C##root/123456 file=/home/oracle/dbf/crm.dmp ignore=y full=y; 報錯:IMP-00003: 遇到 ORACLE 錯誤 6550 ORA-06550: 第 1 行, 第 19 ...
  • redis兩種持久化的方式 RDB持久化可以在指定的時間間隔內生成數據集的時間點快照 AOF持久化記錄伺服器執行的所有寫操作命令,併在伺服器啟動時,通過重新執行這些命令來還原數據集,AOF文件中全部以redis協議的格式來保存,新命令會被追加到文件的末尾,redis還可以在後臺對AOF文件進行重寫, ...
  • MySQL是一個關係型資料庫管理系統,由瑞典MySQLAB公司開發,目前屬於Oracle旗下產品。MySQL是最流行的關係型資料庫管理系統之一,在web應用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,關係資料庫管理系統)應用軟體。 mys ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...