XXX系統資料庫健康檢查報告
建立日期:2020年7月10日
巡檢摘要
日期 | 巡檢人 | 備注 |
2020-07-10 | xxx | |
巡檢項:
|
目錄
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端,減少對主庫的影響。