Oracle12c 性能優化攻略:攻略1-1:創建具有最優性能的數據庫


一:章節前言

本章着眼於影響表中數據存儲性能的數據庫特性

表的性能部分取決於在創建之前所應用的數據庫特性。例如:在最初創建數據庫時采用的物理存儲特性以及相關的表空間都會在后來影響表的性能。類似地,表性能還受到最開始選擇的物理特性的影響。例如:表類型和數據類型。

因此應用實踐中使用的數據庫、表空間、和表的創建標准(並將性能問題放在心上),就形成了優化數據可能性和可擴展性的基礎。

組成Oacle數據庫的物理結構用來存儲、管理、保護以及讀取數據。

在創建數據庫的時候,可以選擇應用一些與性能相關的特性。例如文件的初始布局以及表空間的管理類型,都是在創建數據庫時制定。這時所實現的架構上的決策,通常都會產生很長遠的影響。

提示: oralce實例的定義是其內存結構及其后台進程。而Oracle數據庫則由物理文件(即:數據文件、控制文件、在線重做日志文件)組成。

  如圖1-1所描述的那樣,表空間是支持管理一組數據文件的邏輯結構。數據文件就是磁盤的物理文件。配置表空間時,要注意一些對性能會產生深遠影響的特性,也就是本地管理表空間以及自動段存儲管理的表空間。如果合理地設計這些特性,將來也就能最大限度得可接受到表性能

                                                    image

                                                                                      圖1-1 邏輯存儲於物理存儲之間的關系圖


 

表是數據庫中存儲數據的對象。數據庫性能衡量的是應用能夠以什么樣的速度插入、更新、刪除、和查詢數據。因此,此書就從優化表性能的攻略講起。

本章首先介紹創建數據庫和表空間時,可能會影響表性能的各方面因素,然后,討論另外一些主題,比如根據於性能相關的業務需求,選擇表類型和數據類型。稍后介紹的主題包括管理表空間使用情況的物理實現方式。本章還會詳細介紹其他問題。例如探測表碎片、處理位於高水位線下方的空閑空間、行鏈接以及數據壓縮。除此之外還會描述Oracle段顧問(Oracle Segment Advisor).這個工具很好用,能夠幫助你自動探測並解決碎片和未使用的空間問題。

 

 

攻略1-1:創建具有最優性能的數據庫

 

問題描述

最初創建數據庫時,有一些屬性(如果啟用了的話)將會對數據庫中的表的性能和可用性產生長遠的影響。具體來說,創建數據庫時,需要做下面這些事情。

1:強制數據庫中創建的每一個表空間都必須是本地管理的。本地管理表空間能比已經被棄用的字典管理技術提供更好性能。

2:確保數據庫為每個用戶自動分配一個默認的永久表空間。這可以保證在創建用戶時,自動分配一個默認的表空間,而不是system系統表空間。由於有延遲段(Deferred Segment Feature),如果一個用戶具有 create table 的權限,即使其在system 表空間中沒有空間配額,也能在其中創建對象。這並不可取。當然,用戶不會向沒有空間愛你配額的表中插入數據,但他們可以創建對象,從而可能在不經意間使system表空間變得很雜亂。

3:確保數據庫會為每個用戶自動分配一個默認的臨時表空間。。這可以保證在創建用戶時,如果沒有顯示指定,自動分配一個臨時表空間。


解決方案:

可以使用兩種不同的工具來創建Oracle數據庫:

1:在SQL*Plus中使用Create Database 語句。

2:dbca(Databae Configuration Assistant,數據庫配置助手)

 

SQL*Plus

使用類似下面這樣的腳本創建遵循合理標准的數據庫,這就為數據庫的高性能打下良好的基礎:

CREATE DATABASE O12C
MAXLOGFILES 16
MAXLOGMEMBERS 4
MAXDATAFILES 1024
MAXINSTANCES 1
MAXLOGHISTORY 680
CHARACTER SET AL32UTF8
DATAFILE
'/u01/dbfile/O12C/system01.dbf'
SIZE 500M REUSE
EXTENT MANAGEMENT LOCAL
UNDO TABLESPACE undotbs1 DATAFILE
'/u02/dbfile/O12C/undotbs01.dbf'
SIZE 800M
SYSAUX DATAFILE
'/u01/dbfile/O12C/sysaux01.dbf'
SIZE 500M
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE
'/u02/dbfile/O12C/temp01.dbf'
SIZE 500M
DEFAULT TABLESPACE USERS DATAFILE
'/u01/dbfile/O12C/users01.dbf'
SIZE 50M
LOGFILE GROUP 1
('/u01/oraredo/O12C/redo01a.rdo',
'/u02/oraredo/O12C/redo01b.rdo') SIZE 200M,
GROUP 2
('/u01/oraredo/O12C/redo02a.rdo',
'/u02/oraredo/O12C/redo02b.rdo') SIZE 200M,
GROUP 3
('/u01/oraredo/O12C/redo03a.rdo',
'/u02/oraredo/O12C/redo03b.rdo') SIZE 200M
USER sys IDENTIFIED BY f0obar
USER system IDENTIFIED BY f0obar;


上面這段Create database 腳本通過實現下列功能,為數據庫的性能打下良好的基礎

1:通過 extent management local 子句,將system表空間定義為本地管理表空間。這確保了數據庫中創建的所有表空間都是本地管理的。從oracle 12c版本開始,system表空間總是創建為本地管理表空間。為創建時沒有顯示定義默認表空間的用戶,定義為一個默認的表空間USER。這就可以防止用戶分配sysem系統表空間為默認表空間。

2;為所有用戶定義一個默認臨時表空間,名為temp。這可以防止為用戶分配system 表空間作為默認的臨時表空間。創建system作為默認臨時表空間的用戶,對性能有負面影響,因為這會造成system表空間中的資源爭奪。

良好的性能始於正確的數據庫配置。以上推薦的這些為配置有助於為表數據創建一個可靠的基礎結構。

dbca

Oracle 的dbca 工具具有圖形界面和命令行模式。可以用來創建和配置數據庫。圖形工具使用非常簡單,具有很直觀的界面。在linux、unix 環境下通過圖形界面模式使用dbca,需要正確的安裝X軟件。然后提交XHOST + 命令,並且確保設置了DISPLAY變量。例如:

  1 $ xhost +
  2 $echo $DISPLAY
  3 :0.0
  4 $ xhost +
  5 $ echo $DISPLAY
  6 :0.0

像下面這樣來從操作系統中調用dbca; $dbca

這樣會給一系列讓用戶可以選擇配置項的頁面。可以選擇“高級模式”選項,以便更好地控制文件位置和多個在線重做日志等方面。

默認地,dbca 將會創建一個具有以下特點的數據庫:

  • SYSTEM表空間定義為本地管理表空間
  • 對沒有顯示定義默認的表空間的用戶,定義一個名為USERS的默認表空間;
  • 為所有用戶創建一個名為tmp的臨時表空間

與SQL*plus方法類似。這都是一些好的特性。為在其上創建應用打下良好基礎。

dbca 工具還允許不使用圖形組件,直接通過靜默模式來創建數據庫。在靜默模式下,通過響應文件來使用DBCA;是一種以一致的、可重復的方式來創建數據庫的高效方法。當在網絡連接較慢或者沒有安裝相應的X軟件的遠程服務器上進行安裝時,這也是一種很好的方法。

以下是通過靜默模式下使用dbca來創建數據庫:

  • 找到dbca.rsp 文件
  • 將dbca.rsp文件復制一份
  • 根據實際環境修改dbca.rsp文件
  • 在靜默模式下運行dbca工具。

 首先,打開Oracle 數據庫安裝文件所在的文件夾,使用find命令來查找dbca.rsp文件所在的位置;

  1 $find . -name  dbca.rsp
  2 
  3 ./12.1.0.1/database/response/dbca.rsp

使用cd命令進入 dbca.rsp文件目錄中進行復制該文件,以避免修改原始文件

  1 
  2 cd    ./12.1.0.1/databse/response/
  3 $cp  dbca.rsp    mydb.rsp

現在,編輯mydb.rsp 文件。修改內容(事例)如下:

  1 [CREATEDATABSE]
  2 GDBNAME='O12C'
  3 SID ='O12C'
  4 TEMPLATENAME ='General_Purpose.dbc'
  5 SYSPASSWORD='foobar'
  6 SYSTEMPASSWORD ='foobar'
  7 SYSMANPASSWORD='foobar'
  8 DBSNMPASSWORD='foobar'
  9 DATAFILEDESTINATION='/u01/dbfile'
 10 STORAGETYPE='FS'
 11 CHARACTERSET='AL32UTF8'
 12 NATIONALCHARACTERSET='UTF8'
 13 

使用一個響應文件在靜默模式下運行dbca工具:

  1  $ dbca   -silent  -responseFile  /home/oracle/orainst/mydb.rsp


應該是可以看到類是下面的執行輸出:

Copying database files

1% complete

62% complete

Completing Database Creation

100% complete

Loke at the log file … for further details.


如果查看日志文件,注意dbca工具使用rman工具來存儲數據庫所使用的數據文件。然后,將會創建實例,並進行安裝后的步驟。在linux系統中,還會為新數據庫在/etc/oratab文件中創建一條新幾率。

許多數據庫管理員在圖形模式下調用dbca工具和配置數據庫,但是很少人會選擇使用響應文件。有效使用響應文件,可以是數據庫創建過程保持自動化。可以修改響應文件,以在ASM上創建數據庫,甚至創建RAC環境下的數據庫。此外,幾乎能夠控制響應文件的所有方面,就像在圖形模式中調用dbca 一樣。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------工作原理-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

        合理地配置並創建數據庫有助於保證數據庫的優良性能。盡管確實可以在創建數據庫之后再來修改其功能;但是,通常的情況下是,寫得很差的create databases 腳本將會對數據庫性能產生永久的影響。生產環境中,數據庫有時很難有機會停機,對配置不恰當的地方進行重新配置。如果可能的話,最好在創建數據庫開始,在創建環境的每一步都仔細考慮性能問題。

        創建數據庫時,還需要考慮影響可維護性的功能。容易維護的數據庫能正常運行更長的時間,而這也正式總體性能的一個重要的部分,“解決方案”部分的create datebase  語句同時還考慮了下面這些可維護方面的特性。

  •   創建一個自動的UNDO表空間(自動撤銷管理通過設置UNDO_MANAGEMENT 和UNDO_TABLESPACE初始化參數來啟用。)這使Oracle可以自動管理回滾段,你也就不必定期進行監控和微調了。
  • 按照環境中的一定標准,將數據文件放到響應文件夾中。這有助於維護和管理。從而使數據庫具備更好的長期可用性,從而獲得更好的性能。
  • 將數據庫管理員(DBA)相關用戶密碼設置為非默認值。這可以進一步確保數據庫的安全性,從長遠來看也會影響到性能(如果有人攻擊入侵數據庫並刪除數據,那么性能也將會受到損害)。
  • 創建三組聯機重做日志文件,每組兩個組員,大小適合事務加載。重做日志文件的大小直接影響切換頻率。如果重做日志文件太過頻繁,就會導致性能下降。要記住的是,在初始化建新數據庫時,可能並不知道這些文件的確切大小,只能以后再進行調整。

作為數據庫維護人員的你,應該花點時間確認每個數據庫都是按照廣泛認可的標准創建的,這有助於保證數據庫具有堅實的性能基礎。


  1 select  *
  2 from  database_properties
  3 where property_name ='DEFAUL_PERMANENT_TABLESPACE';
  4 ---如果需要修改默認的永久表空間,按照下面這樣來做:
  5 alter database default tablespace users;
  6 ----要檢驗默認臨時表空間的設置,使用查詢:
  7 select  * from database_properties where property_name ='DEFAULT_TEMP_TABLESPACE';
  8 
  9 ----要修改臨時表空間的設置,可以像下面這樣來做:
 10 alter database default teportary tablespace temp;
 11 ---- 可以通過下面的查詢來檢驗UNDO表空間的設置;
 12 select name ,value from v$parameter where name in ('undo_management','undo_tablespace');
 13 ----如果需要重做(undo)表空間,首先創建1個新的重做表空間,然后使用 
 14 alter system  set undo_tablespace 語句。
 15 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM