当前位置: 首页 > news >正文

Oracle systemstate、gdb、dbx介绍

当数据库出现严重的性能问题或者hang了的时候, 可能最常用的办法就是重启数据库,简单有效解决问题;但是重启后如何追踪问题的根本原因成了难题,很多信息随着重启也消失不见了,让追查问题变的十分棘手,这时就需要oracle systemstate dump来帮忙,可以很短的时间内收集到数据库的各种信息,可以在收集后再重启,既可以及时的解决问题,又相当于快照了数据库的瞬时状态,方便追踪数据库hang死的根本原因,本文将介绍oracle systemsate dump ,gdb,dbx 数据库的dump工具的用法和示例

**

1. oracle systemstate dump

**
这里一般可以分为两类一种是hang分析 一种是系统dump

Hanganalyze 用于分析是否真的卡死还是只是慢,并做一个一致性的快照
Systemstate dump 会记录下当前所有的数据库进程在做什么
理论上systemstate会比hanganalyze记录更多
Hanganalyze levels:

Level 3: In 11g onwards, level 3 also collects a short stack for relevant processes in hang chain --最常用
Level 4: Collects everything from level 3 and dumps leaf nodes (blockers) in wait chains
Level 5: Collects everything from level 4 and dumps all processes involved in wait chains

Systemstate levels:

1. level2:dump(不包括lock element)
2. level10:dump
3. level11:dump+global cache of rac --会产生大量的trc,并耗时较久,不建议使用
4. level256:short stack(函数堆栈)
5. level258:level256+level2 —可以快速dump 但是会丢失部分锁信息
6. level266:level56+level10 —较为常用 速度较快根据系统负载一般20-60s,收集的信息也足够
7. level267:level256+level11 —和level11类似耗时久 trc大

如果sqlplus / as sysdba也卡死无法登陆 可以使用sqlplus -prelim “/as sysdba”

hanganalyze 步骤如下

[oracle@YCSMLTEST01 ~]$ sqlplus  / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Mon Feb 5 10:20:02 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> oradebug hanganalyze 3 ##这里相当于直接分析当前pid
Hang Analysis in /u01/app/oracle/diag/rdbms/ycsmtestdb/ycsmtestdb/trace/ycsmtestdb_ora_30625.trc
SQL> 

也可以不使用当前pid 选择已有的进程如后台进程smon/pmon等

ps -ef|grep pmon
oracle   16979     1  0 Jan30 ?        00:00:29 ora_pmon_ycsmtestdb   
oracle   30890 30624  0 10:24 pts/1    00:00:00 /bin/bash -c ps -ef|grep pmon
oracle   30892 30890  0 10:24 pts/1    00:00:00 grep pmon[oracle@YCSMLTEST01 ~]$ sqlplus -prelim "/as sysdba"SQL*Plus: Release 19.0.0.0.0 - Production on Mon Feb 5 10:24:50 2024
Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle.  All rights reserved.SQL> oradebug setospid 16979
Oracle pid: 2, Unix process pid: 16979, image: oracle@YCSMLTEST01 (PMON)
SQL> oradebug hanganalyze 3
Statement processed.
SQL> oradebug tracefile_name 
/u01/app/oracle/diag/rdbms/ycsmtestdb/ycsmtestdb/trace/ycsmtestdb_pmon_16979.trc
SQL> exit
Disconnected from ORACLE
[oracle@YCSMLTEST01 ~]$ [oracle@YCSMLTEST01 ~]$ more /u01/app/oracle/diag/rdbms/ycsmtestdb/ycsmtestdb/trace/ycsmtestdb_pmon_16979.trc
Trace file /u01/app/oracle/diag/rdbms/ycsmtestdb/ycsmtestdb/trace/ycsmtestdb_pmon_16979.trc
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
Build label:    RDBMS_19.3.0.0.0DBRU_LINUX.X64_190417
ORACLE_HOME:    /u01/app/oracle/product/19.3.0/db
System name:    Linux
Node name:      YCSMLTEST01
Release:        3.10.0-1160.el7.x86_64
Version:        #1 SMP Mon Oct 19 16:18:59 UTC 2020
Machine:        x86_64
Instance name: ycsmtestdb
Redo thread mounted by this instance: 1
Oracle process number: 2
Unix process pid: 16979, image: oracle@YCSMLTEST01 (PMON)*** 2024-02-04T15:26:28.090081+08:00 (CDB$ROOT(1))
*** SESSION ID:(383.7949) 2024-02-04T15:26:28.090122+08:00
*** CLIENT ID:() 2024-02-04T15:26:28.090127+08:00
*** SERVICE NAME:(SYS$BACKGROUND) 2024-02-04T15:26:28.090131+08:00
*** MODULE NAME:() 2024-02-04T15:26:28.090135+08:00
*** ACTION NAME:() 2024-02-04T15:26:28.090137+08:00
*** CLIENT DRIVER:() 2024-02-04T15:26:28.090140+08:00
*** CONTAINER ID:(1) 2024-02-04T15:26:28.090144+08:00Marked process 0xc43dd008 pid=115 serial=9 ospid=29301 newly dead
User session information :sid: 589 ser: 19719client details:O/S info: user: v_hang.kong, term: unknown, ospid: 1234machine: YCSMWTEST01 program: DBeaver 23?2?2 ? SQLEditor ?Script?32?sql?application name: DBeaver 23?2?2 ? SQLEditor ?Script?32?sql?, hash value=3172444350*** 2024-02-04T15:51:23.552873+08:00 (CDB$ROOT(1))
Marked process 0xc24b7588 pid=114 serial=12 ospid=29299 newly dead
User session information :sid: 395 ser: 41776client details:O/S info: user: v_hang.kong, term: unknown, ospid: 1234machine: YCSMWTEST01 program: DBeaver 23?2?2 ? SQLEditor ?Script?30?sql?application name: DBeaver 23?2?2 ? SQLEditor ?Script?30?sql?, hash value=1023625068*** 2024-02-05T10:26:03.304253+08:00 (CDB$ROOT(1))
Received ORADEBUG command (#5) 'tracefile_name' from process '30920'*** 2024-02-05T10:26:03.304393+08:00 (CDB$ROOT(1))
Finished processing ORADEBUG command (#5) 'tracefile_name'
[oracle@YCSMLTEST01 ~]$ 

##因为当前我这个测试实例没有hang 所以trc信息较少,即使是hang住的系统,相比较systemstate的信息也是会少很多

例如这次实验的两个trc,hanganalyze的trc 2k,systemstate的dump 6M

在这里插入图片描述

systemstate dump步骤如下

[oracle@xxxx01 ~]$ sqlplus -prelim "/as sysdba"  
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Feb 4 15:08:19 2024
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle.  All rights reserved.
SQL> oradebug setmypid
Statement processed.
SQL> oradebug dump systemstate 266  --收集266级别的dump
Statement processed.
SQL>  oradebug dump systemstate 266
Statement processed.
SQL> oradebug tracefile_name  --显示出trace文件的路径
/u01/app/oracle/diag/rdbms/xxxxdb/xxxxdb/trace/xxxxdb_ora_20397.trc
SQL>

**

2. gdb 介绍(Linux,Solaris)

**
gdb(GNU Debugger)是Linux系统中一个强大的调试工具,它用于分析程序的运行过程,帮助开发者识别和修复程序中的错误。

当数据库已经非常慢或者数据库hang到sqlplus -prelim "/as sysdba"也无法连接时,就可以使用gdb来收集系统的dump信息

1. Find the Oracle OS process to be tracedps -ef | grep  orcl (LOCAL=NO)2 . Using the OS process id, run the gdb utilityExample: process id 3846$ gdb $ORACLE_HOME/bin/oracle 3846
(output of this command will return to the screen)3.  Print the output to a trace file(gdb) print ksudss(258)4. Review the trace file which is found in the user_dump_dest directory.  It should be named trace <SID>_ora_<process id> .trc   e.g. orcl_ora_3846.trc

范例

[oracle@YCSMLTEST01 ~]$ ps -ef|grep LOCAL=NO  ##选择需要dump的pid,不要选择oracle后台进程oracle 29295 1 0 Jan31 ? 00:00:00 oracleycsmtestdb (LOCAL=NO)oracle 29297 1 0 Jan31 ? 00:00:00 oracleycsmtestdb (LOCAL=NO)oracle 29299 1 0 Jan31 ? 00:00:00 oracleycsmtestdb (LOCAL=NO)[oracle@YCSMLTEST01 ~]$ gdb $ORALE_HOME/bin/oracle 29299  GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7Copyright (C) 2013 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law. Type "show copying"and "show warranty" for details.This GDB was configured as "x86_64-redhat-linux-gnu".For bug reporting instructions, please see:<http://www.gnu.org/software/gdb/bugs/>.../bin/oracle: No such file or directory.Attaching to process 29299Reading symbols from /u01/app/oracle/product/19.3.0/db/bin/oracle...(no debugging symbols found)...done.Reading symbols from /u01/app/oracle/product/19.3.0/db/lib/libodm19.so...(no debugging symbols found)...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libodm19.soReading symbols from /u01/app/oracle/product/19.3.0/db/lib/libofs.so...(no debugging symbols found)...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libofs.soReading symbols from /u01/app/oracle/product/19.3.0/db/lib/libcell19.so...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libcell19.soReading symbols from /u01/app/oracle/product/19.3.0/db/lib/libskgxp19.so...(no debugging symbols found)...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libskgxp19.soReading symbols from /u01/app/oracle/product/19.3.0/db/lib/libskjcx19.so...(no debugging symbols found)...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libskjcx19.soReading symbols from /lib64/librt.so.1...(no debugging symbols found)...done.Loaded symbols for /lib64/librt.so.1Reading symbols from /u01/app/oracle/product/19.3.0/db/lib/libclsra19.so...(no debugging symbols found)...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libclsra19.soReading symbols from /u01/app/oracle/product/19.3.0/db/lib/libdbcfg19.so...(no debugging symbols found)...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libdbcfg19.soReading symbols from /u01/app/oracle/product/19.3.0/db/lib/libhasgen19.so...(no debugging symbols found)...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libhasgen19.soReading symbols from /u01/app/oracle/product/19.3.0/db/lib/libskgxn2.so...(no debugging symbols found)...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libskgxn2.soReading symbols from /u01/app/oracle/product/19.3.0/db/lib/libocr19.so...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libocr19.soReading symbols from /u01/app/oracle/product/19.3.0/db/lib/libocrb19.so...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libocrb19.soReading symbols from /u01/app/oracle/product/19.3.0/db/lib/libocrutl19.so...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libocrutl19.soReading symbols from /lib64/libaio.so.1...Reading symbols from /lib64/libaio.so.1...(no debugging symbols found)...done.(no debugging symbols found)...done.Loaded symbols for /lib64/libaio.so.1Reading symbols from /u01/app/oracle/product/19.3.0/db/lib/libons.so...(no debugging symbols found)...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libons.soReading symbols from /u01/app/oracle/product/19.3.0/db/lib/libmql1.so...(no debugging symbols found)...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libmql1.soReading symbols from /u01/app/oracle/product/19.3.0/db/lib/libipc1.so...(no debugging symbols found)...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libipc1.soReading symbols from /lib64/libdl.so.2...(no debugging symbols found)...done.Loaded symbols for /lib64/libdl.so.2Reading symbols from /lib64/libm.so.6...(no debugging symbols found)...done.Loaded symbols for /lib64/libm.so.6Reading symbols from /lib64/libpthread.so.0...(no debugging symbols found)...done.[Thread debugging using libthread_db enabled]Using host libthread_db library "/lib64/libthread_db.so.1".Loaded symbols for /lib64/libpthread.so.0Reading symbols from /lib64/libnsl.so.1...(no debugging symbols found)...done.Loaded symbols for /lib64/libnsl.so.1Reading symbols from /lib64/libresolv.so.2...(no debugging symbols found)...done.Loaded symbols for /lib64/libresolv.so.2Reading symbols from /lib64/libc.so.6...(no debugging symbols found)...done.Loaded symbols for /lib64/libc.so.6Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.Loaded symbols for /lib64/ld-linux-x86-64.so.2Reading symbols from /usr/lib64/libnuma.so.1...Reading symbols from /usr/lib64/libnuma.so.1...(no debugging symbols found)...done.(no debugging symbols found)...done.Loaded symbols for /usr/lib64/libnuma.so.1Reading symbols from /lib64/libgcc_s.so.1...(no debugging symbols found)...done.Loaded symbols for /lib64/libgcc_s.so.1Reading symbols from /lib64/libnss_files.so.2...(no debugging symbols found)...done.Loaded symbols for /lib64/libnss_files.so.2Reading symbols from /u01/app/oracle/product/19.3.0/db/lib/libshpkavx51219.so...(no debugging symbols found)...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libshpkavx51219.soReading symbols from /u01/app/oracle/product/19.3.0/db/lib/libnque19.so...(no debugging symbols found)...done.Loaded symbols for /u01/app/oracle/product/19.3.0/db/lib/libnque19.so0x00007f1b0dd67740 in __read_nocancel () from /lib64/libpthread.so.0Missing separate debuginfos, use: debuginfo-install glibc-2.17-326.el7_9.x86_64 libaio-0.3.109-13.el7.x86_64 libgcc-4.8.5-44.el7.x86_64 numactl-libs-2.0.12-5.el7.x86_64(gdb) print ksudss(258)  ##258为dump的levelProgram received signal SIGSEGV, Segmentation fault.0x0000000012838ff5 in slaac_int ()The program being debugged was signaled while in a function called from GDB.GDB remains in the frame where the signal was received.To change this behavior use "set unwindonsignal on".Evaluation of the expression containing the function(ksudss) will be abandoned.When the function is done executing, GDB will silently stop.(gdb) detach   ##脱离进程Detaching from program: /u01/app/oracle/product/19.3.0/db/bin/oracle, process 29299[Inferior 1 (process 29299) detached](gdb) exitUndefined command: "exit". Try "help".(gdb) quit[oracle@YCSMLTEST01 ~]$ cd $ORACLE_BASE/diag/rdbms/ycsmtestdb/ycsmtestdb/trace   ##参数的trace文件路径 也就是alertlog的路径[oracle@YCSMLTEST01 trace]$ ll|grep 29299-rw-r----- 1 oracle oinstall 6723482 Feb 4 15:51 ycsmtestdb_ora_29299.trc   ##文件名为  oraclesid_ora_pid.trc-rw-r----- 1 oracle oinstall 1168250 Feb 4 15:51 ycsmtestdb_ora_29299.trm[oracle@YCSMLTEST01 trace]$ more ycsmtestdb_ora_29299.trcTrace file /u01/app/oracle/diag/rdbms/ycsmtestdb/ycsmtestdb/trace/ycsmtestdb_ora_29299.trcOracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.3.0.0.0Build label: RDBMS_19.3.0.0.0DBRU_LINUX.X64_190417ORACLE_HOME: /u01/app/oracle/product/19.3.0/dbSystem name: LinuxNode name: YCSMLTEST01Release: 3.10.0-1160.el7.x86_64Version: #1 SMP Mon Oct 19 16:18:59 UTC 2020Machine: x86_64Instance name: ycsmtestdbRedo thread mounted by this instance: 1Oracle process number: 114Unix process pid: 29299, image: oracle@YCSMLTEST01*** 2024-02-04T15:50:20.534003+08:00 (CDB$ROOT(1))*** SESSION ID:(395.41776) 2024-02-04T15:50:20.534034+08:00*** CLIENT ID:() 2024-02-04T15:50:20.534039+08:00*** SERVICE NAME:(ycsmtestdb) 2024-02-04T15:50:20.534043+08:00*** MODULE NAME:(DBeaver 23?2?2 ? SQLEditor ?Script?30?sql?) 2024-02-04T15:50:20.534046+08:00*** ACTION NAME:() 2024-02-04T15:50:20.534050+08:00*** CLIENT DRIVER:(jdbcthin : 12.2.0.1.0) 2024-02-04T15:50:20.534052+08:00*** CONTAINER ID:(1) 2024-02-04T15:50:20.534056+08:00===================================================SYSTEM STATE (level=2, with short stacks)------------Dumping the Process Summary1: PSEUDO process2: PMON ospid 16979 sid 383 ser 7949, waiting for 'pmon timer' ##详细记录的oracle每个进程的状态 已经在等待什么3: CLMN ospid 16981 sid 574 ser 6565, waiting for 'pmon timer'4: PSP0 ospid 16983 sid 765 ser 10072, waiting for 'rdbms ipc message'5: VKTM ospid 16986 sid 956 ser 39766, waiting for 'VKTM Logical Idle Wait'6: GEN0 ospid 16990 sid 1147 ser 45884, waiting for 'rdbms ipc message'7: MMAN ospid 16992 sid 1339 ser 2353, waiting for 'rdbms ipc message'8: USER ospid 21317 sid 1 ser 65427, waiting for 'SQL*Net message from client'9: GEN1 ospid 16996_16997 sid 192 ser 35369, waiting for 'rdbms ipc message'10: SCMN ospid 16996_16996 sid 384 ser 39404, waiting for 'watchdog main loop'11: DIAG ospid 16999 sid 575 ser 43616, waiting for 'DIAG idle wait'12: OFSD ospid 17001_17002 sid 766 ser 57462, waiting for 'OFS idle'13: SCMN ospid 17001_17001 sid 957 ser 43257, waiting for 'watchdog main loop'14: DBRM ospid 17004 sid 1148 ser 51844, waiting for 'rdbms ipc message'15: VKRM ospid 17006 sid 1340 ser 4774, waiting for 'VKRM Idle'16: SVCB ospid 17008 sid 2 ser 61373, waiting for 'wait for unread message on broadcast channel'17: PMAN ospid 17010 sid 193 ser 3214, waiting for 'pman timer'18: DIA0 ospid 17012 sid 385 ser 20085, waiting for 'DIAG idle wait'19: DBW0 ospid 17014 sid 576 ser 30939, waiting for 'rdbms ipc message'20: LGWR ospid 17016 sid 767 ser 51608, waiting for 'rdbms ipc message'21: CKPT ospid 17018 sid 958 ser 45038, waiting for 'rdbms ipc message'22: LG00 ospid 17020 sid 1149 ser 59696, waiting for 'LGWR worker group idle'23: SMON ospid 17022 sid 1341 ser 54712, waiting for 'smon timer'24: LG01 ospid 17024 sid 3 ser 54873, waiting for 'LGWR worker group idle'25: SMCO ospid 17026 sid 194 ser 57138, waiting for 'rdbms ipc message'26: RECO ospid 17028 sid 386 ser 36148, waiting for 'rdbms ipc message'27: W000 ospid 17030 sid 577 ser 31068, waiting for 'Space Manager: slave idle wait'28: LREG ospid 17032 sid 768 ser 49983, waiting for 'lreg timer'29: W001 ospid 17034 sid 959 ser 34328, waiting for 'Space Manager: slave idle wait'30: PXMN ospid 17036 sid 1150 ser 50619, waiting for 'rdbms ipc message'31: MMNL ospid 17042 sid 1342 ser 6493, waiting for 'rdbms ipc message'32: MMON ospid 17040 sid 4 ser 46671, waiting for 'rdbms ipc message'33: D000 ospid 17044 sid 0 ser 0,

尽量不要去使用gdb去dump oracle数据库后台进程,有可能导致进程被kill(遇到过几次),如果系统没有hang死,也尽量不要在生产系统使用gdb做dump和调优

**

3. DBX介绍(AIX,Solaris)

**
AIX和Solaris系统中类似的命令为dbx 使用方法也类似,请参考如下

步骤:1.dbx -a PID
2.dbx() print ksudss(258)
3.dbx() detachIdentify a shadow process to useFirst, you will need to find a suitable shadow process. A good candidate would be a shadow from a sqlplus session, so we start by searching for a sqlplus session:% ps -ef |grep sqlplus
osupport 78526 154096 0 12:11:05 pts/1 0:00 sqlplus <User_Name>/<Password>
osupport 94130 84332 1 12:11:20 pts/3 0:00 grep sqlplusThen we search based upon the process id (PID) of the sqlplus session to identify the associated shadow process:% ps -ef |grep 78526osupport 28348 78526 0 12:11:05 - 0:00 oracles734 (DESCRIPTION=(LOCALosupport 78526 154096 0 12:11:05 pts/1 0:00 sqlplus <User_Name>/<Password>osupport 94132 84332 1 12:11:38 pts/3 0:00 grep 78526In this case we select shadow PID 28348,Use the debugger to attach to the shadow process
% dbx -a 28348
Waiting to attach to process 28348 ...
Successfully attached to oracle.
warning: Directory containing oracle could not be determined.
Apply 'use' command to initialize source path.
Type 'help' for help.
reading symbolic information ...
stopped in read at 0xd016fdf0
0xd016fdf0 (read+0x114) 80410014 lwz r2,0x14(r1)
(dbx)Enter the "print ksudss (XXX)" command to dump a systemstate (repeat as necessary). For a level 258 systemstate use
(dbx) print ksudss(258)If levels other than "258" are required, replace the "258" with the desired number.Detach & exit from the debugger
(dbx) q
The program is running.  Quit anyway (and detach it)? (y or n) yThe systemstate trace file can be found in the Oracle trace directory and will be named with the PID of the shadow PID that you used. For example:% ls -lrt *28348*

另外gdb、dbx还可以有其他参数可选

print ksdhng(3,1,0) 相当于oradebug hanganalyze 3print ksudps(10) 相当于oradebug dump processstate 10print curdmp() 相当于oradebug call curdmp(也就是oradebug dump cursordump)print ksdtrc(4) 相当于oradebug dump events 4(这里参数表示level,1–session,2–process,4–system)print ksdsel(10046,12) –相当于为attach的进程设置10046事件level 12print skdxipc() –相当于oradebug ipcprint skdxprst() –相当于oradebug procsta

oracle systemstate dump相关的bug相当多,如果不是遇到数据库完全卡死等状况 不太建议直接使用systemstate dump或者gdb来对系统做诊断,oracle 数据库本身的AWR,ASH,ADDM等报表和EMCC平台等 完全可以应对绝大多数情况

附图部分systemstate dump相关bug list
在这里插入图片描述

参考资料

How to Capture a Systemstate Dump Using GDB Utility on Linux (Doc ID 374569.1)

How to Collect Systemstate Dumps When you Cannot Connect to Oracle (Doc ID 121779.1)

How to Collect Diagnostics for Database Hanging Issues (Doc ID 452358.1)

[https://www.modb.pro/db/63770
https://www.laoxiong.net/how_debugger_dump_oracle_state.html](https://www.modb.pro/db/63770

https://www.laoxiong.net/how_debugger_dump_oracle_state.html)


墨天伦,CSDN:潇湘秦 转载请注明出处


相关文章:

Oracle systemstate、gdb、dbx介绍

当数据库出现严重的性能问题或者hang了的时候&#xff0c; 可能最常用的办法就是重启数据库&#xff0c;简单有效解决问题&#xff1b;但是重启后如何追踪问题的根本原因成了难题&#xff0c;很多信息随着重启也消失不见了&#xff0c;让追查问题变的十分棘手&#xff0c;这时就…...

Stable Diffusion 模型下载:RealCartoon-Anime - V10

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十下载地址模型介绍 这个检查点是从 RealCartoon3D 检查点分支出来的。它的目标是产生更多的“动漫”风格,因为我喜欢动漫。:)我知道有很多人做得很好(...

课时22:内置变量_字符串相关

2.4.2 字符串相关 学习目标 这一节&#xff0c;我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 字符串相关的变量解析 字符串计数${#file} 获取字符串的长度字符串截取 - 语法为${var:pos:length} 表示对变量var从pos开始截取length个字符&#xff0c;pos为…...

软件应用实例分享,电玩计时计费怎么算,佳易王PS5游戏计时器系统程序教程

软件应用实例分享&#xff0c;电玩计时计费怎么算&#xff0c;佳易王PS5游戏计时器系统程序教程 一、前言 以下软件教程以 佳易王电玩计时计费管理系统软件V17.9为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 点击开始计时后&#xff0c;图片…...

架设游戏服务器租用价格?腾讯云和阿里云价格对比

游戏服务器租用多少钱一年&#xff1f;1个月游戏服务器费用多少&#xff1f;阿里云游戏服务器26元1个月、腾讯云游戏服务器32元&#xff0c;游戏服务器配置从4核16G、4核32G、8核32G、16核64G等配置可选&#xff0c;可以选择轻量应用服务器和云服务器&#xff0c;阿腾云atengyu…...

ag-Grid:对数据变化的单元格进行高亮显示

对单元格高亮 问:ag-grid 当 rowData 数据变化,如何对数据变化的党员个进行高亮? 解析: 在ag-Grid中,想要对数据变化的单元格进行高亮显示,你可以使用以下步骤来实现: 监听数据变化:首先,你需要监听rowData的变化。这可以通过在你的组件中观察rowData属性的变化来实…...

Oracle 几种行转列的方式 sum+decode sum+case when pivot

目录 原始数据&#xff1a; 方式一&#xff1a; 方式二&#xff1a; 方式三&#xff1a; unpivot的使用&#xff1a; 原始数据&#xff1a; 方式一&#xff1a; select t_name,sum(decode(t_item, item1, t_num, 0)) item1,sum(decode(t_item, item2, t_num, 0)) item2,s…...

[AIGC] Tomcat:一个简单 and 高效的 Java Web 服务器

Tomcat&#xff08;Tomcat Server&#xff09;是 Apache 基金会下的一个开源项目&#xff0c;它是一个简单 and 高效的 Java Web 服务器&#xff0c;支持 Servlet 2.5、JSP 2.2 和 EL 2.2 规范。Tomcat 是当今最受欢迎的 Java Web 服务器之一&#xff0c;它在 Java 世界中被广泛…...

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Toggle组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Toggle组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Toggle组件 组件提供勾选框样式、状态按钮样式及开关样式。 子组件 仅当Toggl…...

使用耳机壳UV树脂制作私模定制耳塞有哪些选择呢?

私模定制耳塞人士的选择可以从以下几个方面考虑&#xff1a; 专业经验&#xff1a;选择有丰富经验的私模定制耳塞人士&#xff0c;能够更好地理解用户需求&#xff0c;提供更专业的建议和服务。可以通过查看其作品和客户评价来了解其经验和口碑。材料质量&#xff1a;选择使用…...

什么是集群服务器

近一段时间来&#xff0c;集群服务器被广大站长热议&#xff0c;所谓集群服务器就是指很多台服务器把它们集中在一起来进行同一种服务。集群服务器也可以由很多个的计算机并行去计算&#xff0c;这样可以获得非常高的计算速度&#xff0c;提升服务器整体的工作效. 其实我们都知…...

HCIA-HarmonyOS设备开发认证V2.0-3.轻量系统内核基础

目录 一、前言二、LiteOS-M系统概述三、内核框架3.1、CMSIS 和 POSIX 整体架构3.2、LiteOS-M内核启动流程 四、内核基础4.1、任务管理4.2、时间管理(待续)4.3、中断管理(待续)4.4、软件定时器(待续) 五、内存管理5.1、静态内存(待续)5.2、动态内存(待续) 六、内核通信机制6.1、…...

【JavaWeb】头条新闻项目实现 基本增删改查 分页查询 登录注册校验 业务功能实现 第二期

文章目录 一、为什么使用token口令二、登录注册功能2.1 登录表单提交后端代码&#xff1a; 2.2 根据token获取完整用户信息代码实现&#xff1a; 2.3 注册时用户名占用校验代码实现&#xff1a; 2.4 注册表单提交代码实现&#xff1a; 三、头条首页功能3.1 查询所有头条分类3.2…...

HiveQL——不借助任何外表,产生连续数值

注&#xff1a;参考文章&#xff1a; HiveSql一天一个小技巧&#xff1a;如何不借助其他任何外表&#xff0c;产生连续数值_hive生成连续数字-CSDN博客文章浏览阅读1.3k次。0 需求描述输出结果如下所示&#xff1a;12345...1001 问题分析方法一&#xff1a;起始值&#xff08;…...

Docker容器监控-CIG

目录 一、CIG说明 1. CAdvisor 2. InfluxDB 3. Grafana 二、环境搭建 1. 创建目录 2. 编写 docker-compose.yml 3. 检查并运行容器 三、进行测试 1. 查看 influxdb 存储服务 是否能正常访问 2. 查看 cAdvisor 收集服务能否正常访问 3. 查看 grafana 展现服务&#…...

python调用golang中函数方法

一、原因说明&#xff1a;由于simhash方法有多种实现方式&#xff0c;现python中simhash方法与golang中的不一样&#xff0c;需要两者代码生成结果保持一致&#xff0c;故采用python中的代码调用golang编译的so文件来实现。 环境配置&#xff1a;①Windows10系统要有gcc环境&a…...

Ps:颜色取样器工具

颜色取样器工具 Color Sampler Tool允许用户从图像中设置特定的颜色取样点&#xff0c;然后利用“信息”面板查看该点在不同颜色模式下&#xff08;包括&#xff1a;RGB、CMYK、Lab、灰度等&#xff09;的颜色值&#xff0c;因此可为色彩分析、颜色校正、色彩匹配等提供精确的数…...

Rust引用、借用和所有权详解

在Rust中&#xff0c;引用、借用和所有权是语言的核心概念&#xff0c;它们共同构成了内存管理的基石。本篇博客将介绍Rust中的这些概念&#xff0c;并通过具体的例子深入探讨它们的用法和优势。 所有权 Rust中的所有权是一种独特的内存管理机制&#xff0c;它规定了在特定作…...

C# 字体大小的相关问题

设置字体大小无法这么写&#xff0c; button1.Font.Size 20&#xff1b; 这个是只读属性&#xff1b; 把字体大小改为16&#xff0c; button2.Font new Font(button2.Font.Name, 16); 程序运行的时候先看一下窗体和控件的默认字体尺寸&#xff0c;都是9&#xff1b;然后点b…...

使用 Express.js 和 MySQL 构建 Web 应用程序

Express.js 是一个流行的 Node.js Web 框架&#xff0c;而 MySQL 是一种广泛使用的关系型数据库。本文将介绍如何结合使用 Express.js 和 MySQL 构建功能强大的 Web 应用程序。 一、安装和设置 首先&#xff0c;确保您已经安装了 Node.js 和 MySQL。然后&#xff0c;通过以下…...

1306. 跳跃游戏 III

经过测试&#xff0c;两种写法耗时差距10倍&#xff0c;我也不知道原因是啥 用访问次数的是更快的 class Solution { public:int n;bool dfs(vector<int>& arr, int start, vector<int>& visited){if(start<0||start>n || visited[start]1) return …...

List与数组相互转换

文章目录 将 List 转 数组List.toArra()Stream().toArray() 将 数组 转 ListLists.newArrayList()Stream.of() 将 List 转 数组 List.toArra() List<Integer> list Lists.newArrayList(1, 2, 3);// 无需转换类型 --> [1,2,3]Integer[] intArray list.toArray(new I…...

Linux openKylin(开放麒麟)系统SSH服务安装配置与公网远程连接

文章目录 前言1. 安装SSH服务2. 本地SSH连接测试3. openKylin安装Cpolar4. 配置 SSH公网地址5. 公网远程SSH连接6. 固定SSH公网地址7. SSH固定地址连接8. 结语 前言 openKylin是中国首个基于Linux 的桌面操作系统开发者平台&#xff0c;通过开放操作系统源代码的方式&#xff…...

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之AlphabetIndexer组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之AlphabetIndexer组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、AlphabetIndexer组件 可以与容器组件联动用于按逻辑结构快速定位容器显…...

java学习07---综合练习

飞机票 1.需求: 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。 按照如下规则计算机票价格&#xff1a;旺季&#xff08;5-10月&#xff09;头等舱9折&#xff0c;经济舱8.5折&#xff0c;淡季&#xff08;11月到来年4月&#xff09;头等舱7…...

【RL】Bellman Equation (贝尔曼等式)

Lecture2: Bellman Equation State value 考虑grid-world的单步过程&#xff1a; S t → A t R t 1 , S t 1 S_t \xrightarrow[]{A_t} R_{t 1}, S_{t 1} St​At​ ​Rt1​,St1​ t t t, t 1 t 1 t1&#xff1a;时间戳 S t S_t St​&#xff1a;时间 t t t时所处的sta…...

PyTorch 2.2大更新!集成FlashAttention-2,性能提升2倍

【新智元导读】新的一年&#xff0c;PyTorch也迎来了重大更新&#xff0c;PyTorch 2.2集成了FlashAttention-2和AOTInductor等新特性&#xff0c;计算性能翻倍。 新的一年&#xff0c;PyTorch也迎来了重大更新&#xff01; 继去年十月份的PyTorch大会发布了2.1版本之后&#…...

2.9日学习打卡----初学RabbitMQ(四)

2.9日学习打卡 一.RabbitMQ 死信队列 在MQ中&#xff0c;当消息成为死信&#xff08;Dead message&#xff09;后&#xff0c;消息中间件可以将其从当前队列发送到另一个队列中&#xff0c;这个队列就是死信队列。而在RabbitMQ中&#xff0c;由于有交换机的概念&#xff0c;实…...

大数据Flume--入门

文章目录 FlumeFlume 定义Flume 基础架构AgentSourceSinkChannelEvent Flume 安装部署安装地址安装部署 Flume 入门案例监控端口数据官方案例实时监控单个追加文件实时监控目录下多个新文件实时监控目录下的多个追加文件 Flume Flume 定义 Flume 是 Cloudera 提供的一个高可用…...

【SQL高频基础题】550.游戏玩法分析IⅣ

这个SQL花了很久。但是有挺多启发的。 如果我们做不出来&#xff0c;就去看答案。 但是看完答案之后&#xff0c;不要着急就去看下一道题&#xff0c;先把这道题吃透&#xff0c;后面的题目就会更有思路。 题目&#xff1a; Table: Activity ----------------------- | Co…...

sheng的学习笔记-部署-目录

标题传送门 sheng的学习笔记-docker部署&#xff0c;原理图&#xff0c;命令&#xff0c;用idea设置docker sheng的学习笔记-docker部署&#xff0c;原理图&#xff0c;命令&#xff0c;用idea设置docker sheng的学习笔记-docker部署springboot sheng的学习笔记-docker部署spri…...

【Java】悲观锁和乐观锁有什么区别?

Java中的悲观锁和乐观锁的主要区别体现在以下几个方面&#xff1a; 加锁策略&#xff1a;悲观锁在操作数据时&#xff0c;总是假设最坏的情况&#xff0c;即认为其他线程会修改数据&#xff0c;因此在读取或操作数据时&#xff0c;会先对数据进行加锁&#xff0c;以保证数据的…...

Elasticsearch:使用查询规则(query rules)进行搜索

在之前的文章 “Elasticsearch 8.10 中引入查询规则 - query rules”&#xff0c;我们详述了如何使用 query rules 来进行搜索。这个交互式笔记本将向你介绍如何使用官方 Elasticsearch Python 客户端来使用查询规则。 你将使用 query rules API 将查询规则存储在 Elasticsearc…...

Java核心设计模式:代理设计模式

一、生活中常见的代理案例 房地产中介&#xff1a;客户手里没有房源信息&#xff0c;找一个中介帮忙商品代购&#xff1a;代理者一般有好的资源渠道&#xff0c;降低购物成本&#xff08;如海外代购&#xff0c;自己不用为了买东西出国&#xff09; 二、为什么要使用代理 对…...

JSP编程

JSP编程 您需要理解在JSP API的类和接口中定义的用于创建JSP应用程序的各种方法的用法。此外,还要了解各种JSP组件,如在前一部分中学习的JSP动作、JSP指令及JSP脚本。JSP API中定义的类提供了可借助隐式对象通过JSP页面访问的方法。 1. JSP API的类 JSP API是一个可用于创建…...

【Flink入门修炼】1-1 为什么要学习 Flink?

流处理和批处理是什么&#xff1f; 什么是 Flink&#xff1f; 为什么要学习 Flink&#xff1f; Flink 有什么特点&#xff0c;能做什么&#xff1f; 本文将为你解答以上问题。 一、批处理和流处理 早些年&#xff0c;大数据处理还主要为批处理&#xff0c;一般按天或小时定时处…...

刘谦龙年春晚魔术模拟

守岁共此时 代码 直接贴代码了&#xff0c;异常处理有点问题&#xff0c;正常流程能跑通 package com.yuhan.snginx.util.chunwan;import java.util.*;/*** author yuhan* since 2024/02/10*/ public class CWMS {static String[] num {"A", "2", &quo…...

re:从0开始的CSS学习之路 9. 盒子水平布局

0. 写在前面 过年也不能停止学习&#xff0c;一停下就难以为继&#xff0c;实属不应 1. 盒子的水平宽度 当一个盒子出现在另一个盒子的内容区时&#xff0c;该盒子的水平宽度“必须”等于父元素内容区的宽度 盒子水平宽度&#xff1a; margin-left border-left padding-lef…...

【MySQL基础】:深入探索DQL数据库查询语言的精髓(上)

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; MySQL从入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. DQL1.1 基本语法1.2 基础查询1.3 条件查询1.3 聚合函数 &#x1f324;️ 全篇…...

JavaScript实现轮播图方法

效果图 先来看下效果图&#xff0c;嫌麻烦就不用具体图片来实现了&#xff0c;主要是理清思路。&#xff08;自动轮播&#xff0c;左右按钮切换图片&#xff0c;小圆点切换图片&#xff0c;鼠标移入暂停轮播&#xff0c;鼠标移出继续轮播&#xff09; HTML 首先是html内容&am…...

Web课程学习笔记--jsonp的原理与简单实现

jsonp的原理与简单实现 原理 由于同源策略的限制&#xff0c;XmlHttpRequest只允许请求当前源&#xff08;域名、协议、端口&#xff09;的资源&#xff0c;为了实现跨域请求&#xff0c;可以通过script标签实现跨域请求&#xff0c;然后在服务端输出JSON数据并执行回调函数&…...

第78讲 修改密码

系统管理实现 修改密码实现 前端 modifyPassword.vue&#xff1a; <template><el-card><el-formref"formRef":model"form":rules"rules"label-width"150px"><el-form-item label"用户名&#xff1a;&quo…...

Docker 容器网络:C++ 客户端 — 服务器应用程序。

一、说明 在下面的文章中&#xff0c; 将向您概述 docker 容器之间的通信。docker 通信的验证将通过运行 C 客户端-服务器应用程序和标准“ping”命令来执行。将构建并运行两个单独的 Docker 映像。 由于我会关注 docker 网络方面&#xff0c;因此不会提供 C 详细信息。…...

Android 识别车牌信息

打开我们心爱的Android Studio 导入需要的资源 gradle //开源车牌识别安卓SDK库implementation("com.github.HyperInspire:hyperlpr3-android-sdk:1.0.3")button.setOnClickListener(v -> {Log.d("Test", "");try (InputStream file getAs…...

C#在窗体正中输出文字以及输出文字的画刷使用

为了在窗体正中输出文字&#xff0c;需要获得输出文字区域的宽和高&#xff0c;这使用MeasureString方法&#xff0c;方法返回值为Size类型&#xff1b; 然后计算输出的起点的x和y坐标&#xff0c;就可以输出了&#xff1b; using System; using System.Collections.Generic; …...

二十、K8S-1-权限管理RBAC详解

目录 k8s RBAC 权限管理详解 一、简介 二、用户分类 1、普通用户 2、ServiceAccount 三、k8s角色&角色绑定 1、授权介绍&#xff1a; 1.1 定义角色&#xff1a; 1.2 绑定角色&#xff1a; 1.3主体&#xff08;subject&#xff09; 2、角色&#xff08;Role和Cluster…...

【PTA|期末复习|编程题】数组相关编程题(一)

目录 7-1 乘法口诀数列 (20分) 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 样例解释&#xff1a; 代码 7-2 矩阵列平移(20分) 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; …...

[office] 怎么在Excel2003菜单栏自定义一个选项卡 #其他#微信#知识分享

怎么在Excel2003菜单栏自定义一个选项卡 怎么在Excel2003菜单栏自定义一个选项卡 ①启动Excel2003&#xff0c;单击菜单栏--工具--自定义。 ②在自定义界面&#xff0c;我们单击命令标签&#xff0c;在类别中选择新菜单&#xff0c;鼠标左键按住新菜单&#xff0c;拖放到菜单栏…...

面试 JavaScript 框架八股文十问十答第六期

面试 JavaScript 框架八股文十问十答第六期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;use strict是什么…...

【Web】小白友好的Java内存马基础学习笔记

目录 简介 文件马与内存马的比较 文件马原理 内存马原理 内存马使用场景 内存马分类 内存马注入方式 这篇文章主要是概念性的&#xff0c;具体技术细节不做探究&#xff0c;重点在祛魅。 简介 内存马&#xff08;Memory Shellcode&#xff09;是一种恶意攻击技术&…...