天天看點

最全面的資料庫健康檢查報告模闆

作者:執着的花貓Jp

XXX系統資料庫健康檢查報告

建立日期:2020年7月10日

巡檢摘要

日期 巡檢人 備注
2020-07-10 xxx
巡檢項:
  1. 系統配置檢查
  2. 資料庫配置檢查
  3. 資料庫性能名額檢查
  4. SQL檢查
  5. 備份檢查

目錄

1 概要 4

2 系統配置檢查 4

2.1 作業系統版本及更新檔 4

2.2 網卡資訊 5

2.3 系統IP規劃 5

2.4 硬碟空間及使用率 6

2.5 系統負載狀态 6

2.6 系統日志 6

3 資料庫配置檢查 7

3.1 資料庫概況 7

3.2 資料庫參數 7

3.3 運作日志和跟蹤檔案 9

3.4 資料庫無效對象 10

3.5 SYSTEM系統表空間 10

3.6 控制檔案 10

3.7 日志檔案 11

3.8 資料檔案 11

3.9 資料庫歸檔 12

3.10 表空間 12

3.11 叢集狀态 13

3.12 ASM空間情況 14

3.13 資料庫高可用feature 15

3.14 Dataguard 同步 15

4 資料庫性能(AWR均節選業務高峰時段) 16

4.1 Instance Efficiency Percentages (Target 100%) 16

4.2 資料庫資源使用情況 16

4.3 Top 10 Foreground Events by Total Wait Time 17

5 影響較大的SQL語句: 17

5.1 SQL調整原則 17

5.2 SQL ordered by Elapsed Time 18

5.3 SQL ordered by CPU Time 20

5.4 SQL ordered by Gets 21

5.5 SQL ordered by Reads 23

5.6 SQL ordered by Parse Calls 23

6 資料庫備份 24

7 問題總結與建議 25

7.1 無效對象 25

7.2 SQL建議 25

7.3 資料庫背景日志 26

7.4 資料庫性能 26

7.5 表空間 26

7.6 Dblink通路 26

7.7 資料庫備份 26

7.8 網卡 27

7.9 其他 27

概要

本次巡檢主要對電子病曆系統oracle叢集資料庫的配置,運作狀态,性能進行檢查,同時也進行相關的作業系統配置檢查,包括一定量的資料庫性能評估工作。

系統配置檢查

和資料庫相關的作業系統配置将被檢查,包括以下方面:

  • 作業系統更新檔
  • 存放oracle 檔案的硬碟區可用空間(oracle 檔案包括:資料檔案,控制檔案,線上redo logs,歸檔redo logs,運作情況檔案和跟蹤檔案)
  • 硬碟使用率
  • CPU使用率

(這部分的檢查并不是針對作業系統或硬體的全面深入的檢查,如有上述要求請與作業系統廠商聯系)

作業系統版本及更新檔

伺服器名 伺服器配置 系統版本 更新檔推薦
rac1 cpu/mem: 40cores/512GB CentOS 6.9(64bit)
rac2 cpu/mem: 40cores/512GB CentOS 6.9(64bit)

網卡資訊

最全面的資料庫健康檢查報告模闆

目前叢集私有網卡是千兆網卡,私有網卡主要用于叢集兩個節點間的資料互動,資料流量會比較大,官方推薦萬兆或者光纖交換機

系統IP規劃

#####################Configure for RAC################################

#RAC1

192.168.3.31 rac1 rac1.oracle.com

192.168.3.131 rac1-vip

163.168.3.31 rac1-priv

#RAC2

192.168.3.32 rac2 rac2.oracle.com

192.168.3.132 rac2-vip

163.168.3.32 rac2-priv

#scan-ip

192.168.3.130 dzblrac-cluster dzblrac-cluster-scan

####################Configure for RAC################################

硬碟空間及使用率

硬碟可用情況如下示:

伺服器 檔案系統 總大小(GB) 可用大小(GB) 使用率
rac1 / 201GB 117GB 39%
/tmp 9.8GB 9.2GB 1%
/OracleBak 1008GB 922GB 4%
rac2 / 201GB 164G 15%
/tmp 9.8GB 9.2GB 1%

系統負載狀态

系統配置:cpu=40 mem=512GB

rac1:

rac2:

最全面的資料庫健康檢查報告模闆

目前系統壓力很小

系統日志

Jul 5 20:09:41 rac1 Oracle GoldenGate Capture for Oracle[209807]: 2020-07-05 20:09:41 ERROR OGG-01668 Oracle GoldenGate Capture for Oracle, emrnew.prm: PROCESS ABENDING.

Jul 5 20:13:44 rac1 Oracle GoldenGate Capture for Oracle[212085]: 2020-07-05 20:13:44 ERROR OGG-00664 Oracle GoldenGate Capture for Oracle, emrnew.prm: OCI Error beginning session (status = 1089-ORA-01089: immediate shutdown in progress - no operations are permitted).

除了OGG相關報錯, 未發現作業系統日志報錯

資料庫配置檢查

本次檢查工作主要針對電子病曆EMR資料庫。

資料庫概況

資料庫名 資料庫版本 資料庫字元集 資料庫大小
ORCL ORACLE 11.2.0.4 ZHS16GBK 58.4GB

資料庫參數

參數檔案‘init.ora’包含了資料庫配置參數,在資料庫啟動時被使用,列出了資料庫所有的非預設值的參數。

init.ora Parameters

Parameter Name Begin value End value (if different)
_ash_size 104857600
_serial_direct_read NEVER
audit_file_dest /u01/app/oracle/admin/dzblorcl/adump
audit_trail DB
cluster_database TRUE
compatible 11.2.0.4.0
control_files +DATA/dzblorcl/controlfile/current.260.1042555203
db_block_size 8192
db_create_file_dest +DATA
db_domain
db_files 1000
db_name orcl
deferred_segment_creation FALSE
diagnostic_dest /u01/app/oracle
dispatchers (PROTOCOL=TCP) (SERVICE=dzblorclXDB)
enable_goldengate_replication TRUE
fal_client dzblorcl
fal_server dzblorcldg
instance_number 1
local_listener (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.131)(PORT=1521))
log_archive_config DG_CONFIG=(orcl, orcldg)
log_archive_dest_1 location=+FRA
log_archive_dest_2 SERVICE=orcldg LGWR ASYNC AFFIRM VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE) DB_UNIQUE_NAME=orcldg
open_cursors 1000
parallel_force_local TRUE
pga_aggregate_target 53687091200
plsql_warnings DISABLE:ALL
processes 5000
remote_listener dzblrac-cluster-scan:1521
remote_login_passwordfile EXCLUSIVE
service_names ORCL
session_cached_cursors 300
sga_max_size 161061273600
sga_target 161061273600
spfile +DATA/orcl/spfileorcl.ora
standby_file_management AUTO
thread 1
undo_tablespace UNDOTBS1

初始化建議參數都已經進行過調整

運作日志和跟蹤檔案

注意每天監控運作日志檔案中的出錯資訊,以便于在問題還是隐患的時候及時發現并解決掉。建議每月初将目前的alert.log重新命名以作備份,同時也可以避免alert.log檔案變得太大不易管理。

近3天出現錯誤日志:

TNS-12535: TNS:operation timed out

ns secondary err code: 12606

nt main err code: 0

nt secondary err code: 0

nt OS err code: 0

Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.130.27)(PORT=51145))

WARNING: inbound connection timed out (ORA-3136)

Mon Jul 06 13:58:34 2020

ORA-3136 連接配接逾時問題,表示client端在預設60秒内沒有完成connection 認證報錯,或者負載過高導緻連接配接出現timeout. 一般來說應用沒出現問題或者報錯,可以優先忽略。如報錯頻繁影響應用程式,可以通過設定參數INBOUND_CONNECT_TIMEOUT=0,避免timeout現象。

參考:Note465043.1 Troubleshooting ORA - 3136WARNING Inbound Connection Timed Out

資料庫無效對象

最全面的資料庫健康檢查報告模闆

目前資料庫有193個無效對象

SYSTEM系統表空間

最全面的資料庫健康檢查報告模闆

業務使用者supcon, comm有兩個索引建在系統表空間system

控制檔案

每個資料庫至少有一個控制檔案。控制檔案記錄了資料庫的實體結構及同步資訊。

Controlfile Name Status
+DATA/dzblorcl/controlfile/current.260.1042555203 VALID
+DATA/dzblorcl/controlfile/current.260.1042555203 VALID

日志檔案

最全面的資料庫健康檢查報告模闆

每個節點四組日志,每組1024MB

資料檔案

最全面的資料庫健康檢查報告模闆

資料庫檔案 /tmp/FY_REC_DATA.DAT, /tmp/FY_RST_DATA.DAT 目前被錯誤建在臨時目錄/tmp,資料檔案一般都放在ASM磁盤組+DATA中。經确認目前這兩個資料檔案未被使用,以後也不會被使用。建議暫不進行處理。目前其他資料檔案狀态正常

資料庫歸檔

Oracle允許将寫滿的線上Redo Log檔案存放在一個或多個脫機位置,即歸檔Redo Log。線上日志檔案通過歸檔寫入歸檔日志檔案。背景程序ARCn自動進行歸檔操作。您能通過歸檔日志進行:

  • 線上備份
  • 基于時間的恢複

Archived Redo Log Settings

DB NAME Database log mode Automatic archival Archive Destination
DZBLORCL Archive Mode YES +FRA

表空間

每個資料庫由一個或多個邏輯存儲機關,即表空間,所組成。而表空間則由邏輯存儲機關段所組成。而段将被分為多個片。使用者對象不應該在系統表空間中建立。這将導緻系統表空間的碎片産生,并且阻止表空間增長。

最全面的資料庫健康檢查報告模闆

目前資料庫表空間使用率都不高,表空間使用率超過85%, 就要引起注意,需要添加資料檔案。

叢集狀态

最全面的資料庫健康檢查報告模闆
最全面的資料庫健康檢查報告模闆

目前叢集運作正常

ASM空間情況

最全面的資料庫健康檢查報告模闆

ASM磁盤組空間使用較低

資料庫高可用feature

db_name force_logging flashback_on supplemental_log recyclebin dataguard
dzblorcl yes no yes on yes

Dataguard 同步

Oracle dataguard 是官方推薦的一款資料庫容災産品,通過實時傳輸資料庫redo log日志到standby端,并實時應用日志到standby, 實作資料庫實體級别,資料庫異地的資料同步,達到容災的目的。

DATABASE_ROLE DB_UNIQUE_NAME OPEN_MODE PROTECTION_LEVEL SWITCHOVER_STATUS
PHYSICAL STANDBY dzblorcldg READ ONLY WITH APPLY MAXIMUM PERFORMANCE NOT ALLOWED
最全面的資料庫健康檢查報告模闆

目前dataguard 處于實時資料恢複狀态,執行個體已經Open可提供隻讀操作,已經和Primary實時同步。

資料庫性能(AWR均節選業務高峰時段)

Instance Efficiency Percentages (Target 100%)

Buffer Nowait %: 100.00 Redo NoWait %: 100.00
Buffer Hit %: 100.00 In-memory Sort %: 100.00
Library Hit %: 99.24 Soft Parse %: 99.41
Execute to Parse %: 56.52 Latch Hit %: 99.99
Parse CPU to Parse Elapsd %: 60.18 % Non-Parse CPU: 98.57
最全面的資料庫健康檢查報告模闆

資料庫的各個名額的命中率正常,資料庫壓力不大。

資料庫資源使用情況

最全面的資料庫健康檢查報告模闆

CURRENT_UTILIZATION:目前在用的數目(資源、鎖或程序)

MAX_UTILIZATION :自最後一個執行個體啟動以來這個資源的最大消耗I

LIMIT_VALUE:資源的限制值。

目前資料庫主要會話數(processes),程序數(sessions),鎖(dml_locks, ges_locks)等資源都未達到最大值。

Top 10 Foreground Events by Total Wait Time

Event Waits Total Wait Time (sec) Wait Avg(ms) % DB time Wait Class
DB CPU 13.5K 94.7
SQL*Net more data to client 236,611 302.5 1 2.1 Network
SQL*Net message from dblink 184,490 287.6 2 2.0 Network
control file sequential read 586,524 144.6 1.0 System I/O
log file sync 70,429 36.2 1 .3 Commit
gc current block 2-way 81,905 27.2 .2 Cluster
gc cr block 2-way 73,638 25.9 .2 Cluster
rdbms ipc reply 82,800 17.1 .1 Other
gc current grant busy 40,543 12.5 .1 Cluster
log file sequential read 38,577 10.2 .1 System I/O

等待DB CPU, 可以忽略,是資料庫正常等待

Wait class裡Network相關的等待比較嚴重, 如SQL*Net message from dblink 等待比較嚴重,和資料庫大量使用dblink有關。

其他等待在目前時間段,不嚴重,對資料庫影響很小,可以忽略。

影響較大的SQL語句:

SQL調整原則

SQL語句性能調整的目标是:

去掉不必要的大表全表掃描 不必要的大表全表掃描會造成不必要的輸入輸出,而且還會拖垮整個資料庫;

檢查優化索引的使用 這對于提高查詢速度來說非常重要;

檢查子查詢 考慮SQL子查詢是否可以用簡單連接配接的方式進行重寫;

調整PCTFREE和PCTUSED等存儲參數優化插入、更新或者删除等操作;

考慮資料表的全表掃描和在多個CPU的情況下考慮并行查詢;

SQL ordered by Elapsed Time

Elapsed Time (s) Executions Elapsed Time per Exec (s) %Total %CPU %IO SQL Id SQL Module SQL Text
2,496.56 17.57 99.61 0.00 95g2k0gx77y09 iawork@rac1 (TNS V1-V3) SELECT a.INST_ID, a.Sid, c.Ser...
792.01 825 0.96 5.57 99.56 0.00 99dd1032rfbpw w3wp.exe DELETE FROM CPOE_TEST_RESULT W...
654.05 626 1.04 4.60 99.65 0.00 a2z578h5vqtr3 Unicorn.exe SELECT PATIENT_ID, PATIENT_NAM...
516.47 739 0.70 3.63 99.37 0.00 8xn7jp79ywh1g JDBC Thin Client SELECT a.*, e.id as e_id, e.ex...
489.24 437 1.12 3.44 99.59 0.00 asvqf4vfrbaj9 ExecSQLTool.exe Select b.result_item_code As i...
444.69 185 2.40 3.13 34.71 0.00 3c6x3ajfk4cn2 ORACLE.EXE SELECT /*+ OPAQUE_TRANSFORM */...
372.67 360 1.04 2.62 99.68 0.00 25v7fu812tf4b oracle@hisdb2 (TNS V1-V3) SELECT "PAT_INPATIENTNO", "PAT...
247.58 750 0.33 1.74 98.73 0.00 dc30xnqmjvmb7 JDBC Thin Client SELECT id, report_id, request_...
195.95 277 0.71 1.38 90.39 0.00 9vthrjwcr06wq w3wp.exe SELECT M.CLINIC_ITEM_NAME, M.ÄÚ...
194.20 1,647 0.12 1.37 99.10 0.00 110axn1tv1ssw w3wp.exe SELECT ORDER_CHECK_NO FROM ORD...
191.62 1,696 0.11 1.35 99.07 0.00 5cyxmk7sa9ndb w3wp.exe SELECT T.ORDER_CHECK_NO FROM O...
176.13 1,658 0.11 1.24 99.03 0.00 bmt7htt8w9k9z w3wp.exe INSERT INTO ORDADM.CPOE_ORDER_...
175.22 1,662 0.11 1.23 99.24 0.00 4qnqpz7jb46uh w3wp.exe SELECT MAX(ORDER_CHECK_NO) FRO...
156.91 552 0.28 1.10 99.56 0.00 395qaxvcycb64 w3wp.exe select * from CPOE_OUTP_ORDERS...

SQL ordered by elapsed Time:記錄了執行總和時間的TOP SQL(請注意是監控範圍内該SQL的執行時間總和,而不是單次SQL執行時間 Elapsed Time = CPU Time + Wait Time)。

  • TOP 1 SQL: 95g2k0gx77y09,消耗時間比較長, 資料庫使用者iawork, SQL内容:
SELECT a.INST_ID, a.Sid, c.Serial#, v.Spid, Decode(a.TYPE, 'TM', B1.NAME, '') obj, v.PROGRAM process_program, c.MACHINE, c.MODULE, c.PROGRAM session_program, c.Status, c.Username, c.Command, c.ACTION, c.Logon_Time, a.CTIME, a.TYPE, decode(a.lmode, 0, 'None', 1, 'Null', 2, 'Row share', 3, 'Row Exclusive', 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive') lock_mode, decode(a.request, 0, 'None', 1, 'Null', 2, 'Row share', 3, 'Row Exclusive', 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive') request_mode, a.BLOCK FROM Gv$lock a, Sys.Obj$ B1, Sys.User$ B2, Gv$session c, Gv$process v WHERE a.Id1 = B1.Obj#(+) AND B1.Owner# = B2.User#(+) AND a.Sid = c.Sid AND c.TYPE = 'USER' AND v.Addr = c.Paddr AND c.Inst_Id = v.Inst_Id AND A.INST_ID=C.INST_ID AND a.TYPE = 'TM' order by c.LOGON_TIME

從SQL的内容來看,在查詢當期會話資訊

  • 執行時間超過2秒的SQL: 3c6x3ajfk4cn2
SELECT /*+ OPAQUE_TRANSFORM */ "PACS_NO", "PATIENT_ID", "EVENT_NO", "PATIENT_TYPE", "PACS_TYPE", "PATIENT_NAME", "PATIENT_SEX", "PATIENT_AGE", "IN_DEPT", "BED", "WARD", "ADDRESS", "TELEPHONE", "MARRIAGE", "PROFESSION", "CHECKNO", "BARCODE_ID", "INSPECT_TYPE", "INSPECT_SUB_TYPE", "INSPECT_NAME", "INSTRUMENT_NAME", "APPLICANT", "OPERATER", "INSPECTOR", "OPERATER_TIME", "REPORT_TIME", "LAST_MODIFY_TIME", "MODIFY_FLAG", "REMARK1", "REMARK2", "STATUS", "CONCLUSION", "IMAGING" FROM "ZEMR_PACS_REPORT" "T" WHERE ("IMAGING" IS NOT NULL OR "CONCLUSION" IS NOT NULL) AND "REPORT_TIME">TRUNC(:1-10)

以下是執行計劃:

最全面的資料庫健康檢查報告模闆

ZEMR_PACS_REPORT 是一個比較複雜的視圖,從執行計劃來看,掃描成本較高的表有: CPOE_OUTP_ORDERS和CPOE_EXAM_DETAIL,同時走了全表掃描,掃描了1236k行和368k行資料,導緻SQL超過2秒以上,具有了解具體的業務進一步優化。

其他SQL消耗時間都整體不長。

SQL ordered by CPU Time

CPU Time (s) Executions CPU per Exec (s) %Total Elapsed Time (s) %CPU %IO SQL Id SQL Module SQL Text
2,486.87 18.47 2,496.56 99.61 0.00 95g2k0gx77y09 iawork@rac1 (TNS V1-V3) SELECT a.INST_ID, a.Sid, c.Ser...
788.51 825 0.96 5.86 792.01 99.56 0.00 99dd1032rfbpw w3wp.exe DELETE FROM CPOE_TEST_RESULT W...
651.77 626 1.04 4.84 654.05 99.65 0.00 a2z578h5vqtr3 Unicorn.exe SELECT PATIENT_ID, PATIENT_NAM...
513.23 739 0.69 3.81 516.47 99.37 0.00 8xn7jp79ywh1g JDBC Thin Client SELECT a.*, e.id as e_id, e.ex...
487.23 437 1.11 3.62 489.24 99.59 0.00 asvqf4vfrbaj9 ExecSQLTool.exe Select b.result_item_code As i...
371.48 360 1.03 2.76 372.67 99.68 0.00 25v7fu812tf4b oracle@hisdb2 (TNS V1-V3) SELECT "PAT_INPATIENTNO", "PAT...
244.44 750 0.33 1.82 247.58 98.73 0.00 dc30xnqmjvmb7 JDBC Thin Client SELECT id, report_id, request_...
192.46 1,647 0.12 1.43 194.20 99.10 0.00 110axn1tv1ssw w3wp.exe SELECT ORDER_CHECK_NO FROM ORD...
189.85 1,696 0.11 1.41 191.62 99.07 0.00 5cyxmk7sa9ndb w3wp.exe SELECT T.ORDER_CHECK_NO FROM O...
177.12 277 0.64 1.32 195.95 90.39 0.00 9vthrjwcr06wq w3wp.exe SELECT M.CLINIC_ITEM_NAME, M.ÄÚ...
174.43 1,658 0.11 1.30 176.13 99.03 0.00 bmt7htt8w9k9z w3wp.exe INSERT INTO ORDADM.CPOE_ORDER_...
173.88 1,662 0.10 1.29 175.22 99.24 0.00 4qnqpz7jb46uh w3wp.exe SELECT MAX(ORDER_CHECK_NO) FRO...
156.23 552 0.28 1.16 156.91 99.56 0.00 395qaxvcycb64 w3wp.exe select * from CPOE_OUTP_ORDERS...
154.35 185 0.83 1.15 444.69 34.71 0.00 3c6x3ajfk4cn2 ORACLE.EXE SELECT /*+ OPAQUE_TRANSFORM */...

SQL ordered by CPU time: 記錄了執行占CPU時間總和時間最長的TOP SQL(請注意是監控範圍内該SQL的執行占CPU時間總和,而不是單次SQL執行時間)

CPU的資源消耗上,還是同樣的SQL : 95g2k0gx77y09,

SQL ordered by Gets

Buffer Gets Executions Gets per Exec %Total Elapsed Time (s) %CPU %IO SQL Id SQL Module SQL Text
254,805,414 360 707,792.82 15.66 372.67 99.7 25v7fu812tf4b oracle@hisdb2 (TNS V1-V3) SELECT "PAT_INPATIENTNO", "PAT...
77,112,750 739 104,347.43 4.74 516.47 99.4 8xn7jp79ywh1g JDBC Thin Client SELECT a.*, e.id as e_id, e.ex...
47,829,036 437 109,448.59 2.94 489.24 99.6 asvqf4vfrbaj9 ExecSQLTool.exe Select b.result_item_code As i...
45,674,399 750 60,899.20 2.81 247.58 98.7 dc30xnqmjvmb7 JDBC Thin Client SELECT id, report_id, request_...
40,289,848 2.48 79.77 99.4 c8dx985h4zwca oracle@ods-server (TNS V1-V3) SELECT "A1"."PATIENTCHARGE_ID"...
37,902,751 1,696 22,348.32 2.33 191.62 99.1 5cyxmk7sa9ndb w3wp.exe SELECT T.ORDER_CHECK_NO FROM O...
37,142,877 1,662 22,348.30 2.28 175.22 99.2 4qnqpz7jb46uh w3wp.exe SELECT MAX(ORDER_CHECK_NO) FRO...
37,061,741 1,658 22,353.28 2.28 176.13 99 bmt7htt8w9k9z w3wp.exe INSERT INTO ORDADM.CPOE_ORDER_...
36,807,682 1,647 22,348.32 2.26 194.20 99.1 110axn1tv1ssw w3wp.exe SELECT ORDER_CHECK_NO FROM ORD...
31,189,110 44 708,843.41 1.92 43.77 99.7 48ynbdm8nck7b oracle@hisdb2 (TNS V1-V3) SELECT "PAT_INPATIENTNO", "PAT...
30,899,994 552 55,978.25 1.90 156.91 99.6 395qaxvcycb64 w3wp.exe select * from CPOE_OUTP_ORDERS...
29,299,299 212 138,204.24 1.80 131.25 98.1 dvd3fhv94zsrk w3wp.exe select * from v_drug_stock a w...
25,271,933 185 136,605.04 1.55 444.69 34.7 3c6x3ajfk4cn2 ORACLE.EXE SELECT /*+ OPAQUE_TRANSFORM */...
19,077,381 825 23,124.10 1.17 792.01 99.6 99dd1032rfbpw w3wp.exe DELETE FROM CPOE_TEST_RESULT W...
17,575,285 161 109,163.26 1.08 104.83 99.1 5wgasuumx8mts DDTEK ODBC Oracle select VERSION_NO as VERSION_...
17,385,747 277 62,764.43 1.07 195.95 90.4 9vthrjwcr06wq w3wp.exe SELECT M.CLINIC_ITEM_NAME, M.ÄÚ...

SQL ordered by Gets:記錄了執行占總buffer gets(邏輯IO)的TOP SQL(請注意是監控範圍内該SQL的執行占Gets總和,而不是單次SQL執行所占的Gets)

目前這項名額正常

SQL ordered by Reads

Physical Reads Executions Reads per Exec %Total Elapsed Time (s) %CPU %IO SQL Id SQL Module SQL Text
121 9,004 0.01 0.58 1.99 41.25 1.02 9397yzqdrz2gv oracle@hisdb2 (TNS V1-V3) UPDATE "T_YIHUI_RESI_FEE" "A1"...
33 0.16 79.77 99.43 0.02 c8dx985h4zwca oracle@ods-server (TNS V1-V3) SELECT "A1"."PATIENTCHARGE_ID"...
16 33 0.48 0.08 0.06 62.49 4.35 508zw0x4na640 Unicorn.exe INSERT ALL INTO DOC_CLINIC_DAT...
9 14,453 0.00 0.04 3.20 29.25 0.10 7jvcnbkgppx7b w3wp.exe INSERT INTO CPOE_TEST_RESULT (...
5 191 0.03 0.02 27.63 98.11 0.03 4vpuqx31nvaru w3wp.exe select distinct t2.patient_con...
5 358 0.01 0.02 64.22 96.80 0.00 g7hc815q7vnuu w3wp.exe insert into CPOE_ORDER_SEND (O...
3 825 0.00 0.01 792.01 99.56 0.00 99dd1032rfbpw w3wp.exe DELETE FROM CPOE_TEST_RESULT W...
2 277 0.01 0.01 195.95 90.39 0.00 9vthrjwcr06wq w3wp.exe SELECT M.CLINIC_ITEM_NAME, M.ÄÚ...
2 16 0.13 0.01 0.06 69.27 1.38 fhqs73k033qzd Unicorn.exe INSERT ALL INTO DOC_CLINIC_ITE...
1 268 0.00 0.00 36.57 98.46 0.01 33hkfuds8puuu w3wp.exe select * from (SELECT A.PATIEN...

SQL ordered by Reads: 記錄了執行占總磁盤實體讀(實體IO)的TOP SQL(請注意是監控範圍内該SQL的執行占磁盤實體讀總和,而不是單次SQL執行所占的磁盤實體讀),可以反映具體某些SQL執行效率,一般都推薦從記憶體讀取,實體讀一般都指從硬碟讀取資料,效率較低, delete,update, insert都會帶來實體讀,這是不可避免的。

目前資料庫 除了top 1的update sql,其他的實體讀都不高。

SQL ordered by Parse Calls

Parse Calls Executions % Total Parses SQL Id SQL Module SQL Text
497,125 497,119 20.19 ggwdfnuqjg9xy w3wp.exe SELECT COUNT(1) FROM PATS_IN_H...
289,729 289,730 11.77 3bcxa2bxgu6a2 w3wp.exe SELECT M.PATIENT_ID, M.VISIT_I...
289,334 289,333 11.75 1b6f97pwy7az2 w3wp.exe SELECT PATIENT_ID, VISIT_ID, A...
113,276 113,276 4.60 7h35uxf5uhmm1 w3wp.exe select sysdate from dual
106,042 106,042 4.31 djnrjdzdb65rd w3wp.exe SELECT ORDER_NO, PAT_ID, VISIT...
76,202 76,202 3.10 fuphg1dmwa2js w3wp.exe SELECT COUNT(1) FROM cpoe_orde...
71,169 71,169 2.89 caba6r6j8mthj w3wp.exe SELECT a.order_no, a.ord_statu...
53,517 53,517 2.17 9q9yhgc0u15gk w3wp.exe insert into CPOE_ORDER_EXE_REC...
33,385 33,385 1.36 gcf937cx27gsy w3wp.exe SELECT ORDER_NO, PAT_ID, VISIT...
25,378 25,378 1.03 6ynn15u2kycjw w3wp.exe SELECT VERSION, PACKAGE_PATH F...

SQL ordered by Parse Calls: 即記錄了SQL的軟解析次數的TOP SQL, 軟解析一般SQL通過綁定變量的形式執行。在Oracle的SQL優化引擎中推薦通過綁定變量的形式執行SQL,執行效率高。

目前這項名額正常

資料庫備份

備份政策:每天晚上22:50進行資料庫RMAN全備。

50 22 * * * sh /opt/scripts/rmanfull.sh

每天全量壓縮備份,容量15GB左右,檢視備份情況如下:(備份正常)

最全面的資料庫健康檢查報告模闆

備份狀态正常,目前歸檔沒有進行備份,建議把歸檔放到每天的備份任務中。

問題總結與建議

無效對象

目前資料庫存在大量無效對象,存儲過程,視圖等,建議開發仔細确認哪些對象是否需要,不需要的對象進行删除,生産環境嚴格禁止有測試對象存在。

SQL建議

  • 以下iawork 使用者下SQL占用CPU較高,目前整體對性能影響不算大,其他SQL整體運作速度良好,後期需要進行觀察
SELECT a.INST_ID, a.Sid, c.Serial#, v.Spid, Decode(a.TYPE, 'TM', B1.NAME, '') obj, v.PROGRAM process_program, c.MACHINE, c.MODULE, c.PROGRAM session_program, c.Status, c.Username, c.Command, c.ACTION, c.Logon_Time, a.CTIME, a.TYPE, decode(a.lmode, 0, 'None', 1, 'Null', 2, 'Row share', 3, 'Row Exclusive', 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive') lock_mode, decode(a.request, 0, 'None', 1, 'Null', 2, 'Row share', 3, 'Row Exclusive', 4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive') request_mode, a.BLOCK FROM Gv$lock a, Sys.Obj$ B1, Sys.User$ B2, Gv$session c, Gv$process v WHERE a.Id1 = B1.Obj#(+) AND B1.Owner# = B2.User#(+) AND a.Sid = c.Sid AND c.TYPE = 'USER' AND v.Addr = c.Paddr AND c.Inst_Id = v.Inst_Id AND A.INST_ID=C.INST_ID AND a.TYPE = 'TM' order by c.LOGON_TIME
  • 視圖ZEMR_PACS_REPORT查詢耗時超過2秒,視圖裡大表走了全表掃描,需要進一步優化SQL或者添加索引,進行相關優化。 參考 5.2

資料庫背景日志

背景出現ORA-3136 連接配接逾時報錯,,表示client端在預設60秒内沒有完成connection 認證報錯,或者負載過高導緻連接配接出現timeout. 一般來說應用沒出現問題或者報錯,可以優先忽略。如報錯頻繁影響應用程式,可以通過設定參數INBOUND_CONNECT_TIMEOUT=0,避免timeout現象。

資料庫性能

目前資料庫各項性能名額正常,配置參數都做過優化,資料庫的資源都未達到最大值。随着業務量,資料量增加,資料庫需要持續進行巡檢,優化。

表空間

發現業務表的索引建在了系統system表空間,建議統一移到各自使用者表空間下。參考 3.10

Dblink通路

資料庫使用大量dblink, 目前發現有些通路是跨網段通路,硬體交換機沒有進行多層轉換,確定網絡層網絡延遲低,速度快。參考 4.3 資料庫等待事件。

資料庫備份

  • 目前備份隻有RMAN基于時間點恢複的備份,建議加上邏輯備份datapump,可以進行容災快速恢複。
  • 目前備份政策是兩天進行一次全備,後續資料庫體量大了以後,耗時較長,影響業務,建議進行增量備份。

網卡

目前叢集私有網卡是千兆網卡,建議采用萬兆活光纖網網絡,可以有效提供叢集節點間的資料通信,提高資料庫叢集性能。

其他

目前中間件Oracle Goldengate 部署在節點1, 資料庫已經部署了Oracle Dataguard,建議Goldengate遷移到Dataguard端,減少對主庫的影響。

繼續閱讀