如何讓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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...