百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

最全面的数据库健康检查报告模板

ccwgpt 2024-12-27 15:51 105 浏览 0 评论

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

0

1.0

System I/O

log file sync

70,429

36.2

1

.3

Commit

gc current block 2-way

81,905

27.2

0

.2

Cluster

gc cr block 2-way

73,638

25.9

0

.2

Cluster

rdbms ipc reply

82,800

17.1

0

.1

Other

gc current grant busy

40,543

12.5

0

.1

Cluster

log file sequential read

38,577

10.2

0

.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

0


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

0


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

0

25v7fu812tf4b

oracle@hisdb2 (TNS V1-V3)

SELECT "PAT_INPATIENTNO", "PAT...

77,112,750

739

104,347.43

4.74

516.47

99.4

0

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

0

asvqf4vfrbaj9

ExecSQLTool.exe

Select b.result_item_code As i...

45,674,399

750

60,899.20

2.81

247.58

98.7

0

dc30xnqmjvmb7

JDBC Thin Client

SELECT id, report_id, request_...

40,289,848

0


2.48

79.77

99.4

0

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

0

5cyxmk7sa9ndb

w3wp.exe

SELECT T.ORDER_CHECK_NO FROM O...

37,142,877

1,662

22,348.30

2.28

175.22

99.2

0

4qnqpz7jb46uh

w3wp.exe

SELECT MAX(ORDER_CHECK_NO) FRO...

37,061,741

1,658

22,353.28

2.28

176.13

99

0

bmt7htt8w9k9z

w3wp.exe

INSERT INTO ORDADM.CPOE_ORDER_...

36,807,682

1,647

22,348.32

2.26

194.20

99.1

0

110axn1tv1ssw

w3wp.exe

SELECT ORDER_CHECK_NO FROM ORD...

31,189,110

44

708,843.41

1.92

43.77

99.7

0

48ynbdm8nck7b

oracle@hisdb2 (TNS V1-V3)

SELECT "PAT_INPATIENTNO", "PAT...

30,899,994

552

55,978.25

1.90

156.91

99.6

0

395qaxvcycb64

w3wp.exe

select * from CPOE_OUTP_ORDERS...

29,299,299

212

138,204.24

1.80

131.25

98.1

0

dvd3fhv94zsrk

w3wp.exe

select * from v_drug_stock a w...

25,271,933

185

136,605.04

1.55

444.69

34.7

0

3c6x3ajfk4cn2

ORACLE.EXE

SELECT /*+ OPAQUE_TRANSFORM */...

19,077,381

825

23,124.10

1.17

792.01

99.6

0

99dd1032rfbpw

w3wp.exe

DELETE FROM CPOE_TEST_RESULT W...

17,575,285

161

109,163.26

1.08

104.83

99.1

0

5wgasuumx8mts

DDTEK ODBC Oracle

select VERSION_NO as VERSION_...

17,385,747

277

62,764.43

1.07

195.95

90.4

0

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


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端,减少对主库的影响。

相关推荐

一个基于.Net Core遵循Clean Architecture原则开源架构

今天给大家推荐一个遵循CleanArchitecture原则开源架构。项目简介这是基于Asp.netCore6开发的,遵循CleanArchitecture原则,可以高效、快速地构建基于Ra...

AI写代码翻车无数次,我发现只要提前做好这3步,bug立减80%

写十万行全是bug之后终于找到方法了开发"提示词管理助手"新版本那会儿,我差点被bug整崩溃。刚开始两周,全靠AI改代码架构,结果十万行程序漏洞百出。本来以为AI说没问题就稳了,结果...

OneCode低代码平台的事件驱动设计:架构解析与实践

引言:低代码平台的事件驱动范式在现代软件开发中,事件驱动架构(EDA)已成为构建灵活、松耦合系统的核心范式。OneCode低代码平台通过创新性的注解驱动设计,将事件驱动理念深度融入平台架构,实现了业务...

国内大厂AI插件评测:根据UI图生成Vue前端代码

在IDEA中安装大厂的AI插件,打开ruoyi增强项目:yudao-ui-admin-vue31.CodeBuddy插件登录腾讯的CodeBuddy后,大模型选择deepseek-v3,输入提示语:...

AI+低代码技术揭秘(二):核心架构

本文档介绍了为VTJ低代码平台提供支持的基本架构组件,包括Engine编排层、Provider服务系统、数据模型和代码生成管道。有关UI组件库和widget系统的信息,请参阅UI...

GitDiagram用AI把代码库变成可视化架构图

这是一个名为gitdiagram的开源工具,可将GitHub仓库实时转换为交互式架构图,帮助开发者快速理解代码结构。核心功能一键可视化:替换GitHubURL中的"hub...

30天自制操作系统:第六天:代码架构整理与中断处理

1.拆开bootpack.c文件。根据设计模式将对应的功能封装成独立的文件。2.初始化pic:pic(可编程中断控制器):在设计上,cpu单独只能处理一个中断。而pic是将8个中断信号集合成一个中断...

AI写代码越帮越忙?2025年研究揭露惊人真相

近年来,AI工具如雨后春笋般涌现,许多人开始幻想程序员的未来就是“对着AI说几句话”,就能轻松写出完美的代码。然而,2025年的一项最新研究却颠覆了这一期待,揭示了一个令人意外的结果。研究邀请了16位...

一键理解开源项目:两个自动生成GitHub代码架构图与说明书工具

一、GitDiagram可以一键生成github代码仓库的架构图如果想要可视化github开源项目:https://github.com/luler/reflex_ai_fast,也可以直接把域名替换...

5分钟掌握 c# 网络通讯架构及代码示例

以下是C#网络通讯架构的核心要点及代码示例,按协议类型分类整理:一、TCP协议(可靠连接)1.同步通信//服务器端usingSystem.Net.Sockets;usingTcpListene...

从复杂到优雅:用建造者和责任链重塑代码架构

引用设计模式是软件开发中的重要工具,它为解决常见问题提供了标准化的解决方案,提高了代码的可维护性和可扩展性,提升了开发效率,促进了团队协作,提高了软件质量,并帮助开发者更好地适应需求变化。通过学习和应...

低代码开发当道,我还需要学习LangChain这些框架吗?| IT杂谈

专注LLM深度应用,关注我不迷路前两天有位兄弟问了个问题:当然我很能理解这位朋友的担忧:期望效率最大化,时间用在刀刃上,“不要重新发明轮子”嘛。铺天盖地的AI信息轰炸与概念炒作,很容易让人浮躁与迷茫。...

框架设计并不是简单粗暴地写代码,而是要先弄清逻辑

3.框架设计3.框架设计本节我们要开发一个UI框架,底层以白鹭引擎为例。框架设计的第一步并不是直接撸代码,而是先想清楚设计思想,抽象。一个一个的UI窗口是独立的吗?不是的,...

大佬用 Avalonia 框架开发的 C# 代码 IDE

AvalonStudioAvalonStudio是一个开源的跨平台的开发编辑器(IDE),AvalonStudio的目标是成为一个功能齐全,并且可以让开发者快速使用的IDE,提高开发的生产力。A...

轻量级框架Lagent 仅需20行代码即可构建自己的智能代理

站长之家(ChinaZ.com)8月30日消息:Lagent是一个专注于基于LLM模型的代理开发的轻量级框架。它的设计旨在简化和提高这种模型下代理的开发效率。LLM模型是一种强大的工具,可以...

取消回复欢迎 发表评论: