首页 > 数据库 >Windows调试Oracle数据库问题的一些手段

Windows调试Oracle数据库问题的一些手段

时间:2023-06-19 11:04:36浏览次数:74  
标签:trace Windows sql -- Client SQL Oracle 调试


最近需要在Windows的跳板机上访问远程的Oracle数据库进行调试。Windows中只有个精简版Oracle Client,以及PLSQL Developer客户端。

如果用惯了Linux,再用Windows,确实不知所措。但这就是个从生疏到熟练的事儿,最近看的一本书中描述得很恰当,The most effective way to deal with a worry is by acting on it, after all.

在调试过程中,碰到一些问题,记录下。

1. AWR和ASH的获取

通常我们执行awrrpt.sql脚本得到AWR,无论是PLSQL Developer,还是cmd命令行,其实都是可以的。如果是PLSQL Developer,需要在Command Window中操作,

Windows调试Oracle数据库问题的一些手段_python

但如果在本地只安装了Oracle Client,没有这个脚本,可以从其他Oracler Server下载一个awrrpt.sql脚本,但是awrrpt.sql中还要调用awrrpti.sql,而且awrrpti.sql还需要调用awrinput.sql和awrinpnm.sql,因此都需要下载。

相应地,获取ASH的脚本ashrpt.sql,会调用ashrpti.sql,这两个都得下载。

2. SQL Profile

当碰到SQL执行计划需要调整,但是应用不能改动代码的时候,SQL Profile是种解决方案。

同样地,Oracle Client不包含SQL Profile的脚本coe_xfr_sql_profile.sql,因此可以从其他地方拷贝一个过来。

cmd到脚本存储路径,sqlplus登录执行@coe_xfr_sql_profile.sql,

Windows调试Oracle数据库问题的一些手段_mysql_02

3. dbms_stats的显示

PLSQL Developer中的Command窗口执行statistics_level=all,再使用dbmx_xplan.display_cursor,显示为空,

Windows调试Oracle数据库问题的一些手段_linux_03

如果改为cmd中执行,就可以正常显示。

4. 10053的trace

有时候我们需要通过10053的trace,看这条SQL选择执行计划的过程,如果在当前会话可以执行SQL,alter session的方式最简单,如果SQL是程序执行的而且带着绑定变量,为了尽量得到执行时的实际情况,还可以通过dbms_sqldiag的dump_trace,不用手工执行SQL,得到一个已经执行并且还在游标缓存中的SQL语句的10053跟踪文件。

P.S. 可参考《有关10053事件,你知道这两个知识点么?

11g下,DBMS_SQLDIAG包有个存储过程DUMP_TRACE,原理是系统会自动触发一次语句的硬解析以创建跟踪文件。但是,DUMP_TRACE并未写入DBMS_SQLDIAG包的官方文档中,

The procedure will automatically trigger a hard parse of the statement to generate the trace.

Greg Rahn写过一篇文章,并且在$ORACLE_HOME/rdbms/admin/

dbmsdiag.sql有dump_trace的介绍和定义,

$ORACLE_HOME/rdbms/admin/dbmsdiag.sql


-------------------------------- dump_trace ---------------------------------
-- NAME:
--     dump_trace - Dump Optimizer Trace
--
-- DESCRIPTION:
--     This procedure dumps the optimizer or compiler trace for a give SQL
--     statement identified by a SQL ID and an optional child number.
--
-- PARAMETERS:
--     p_sql_id          (IN)  -  identifier of the statement in the cursor
--                                cache
--     p_child_number    (IN)  -  child number
--     p_component       (IN)  -  component name
--                                Valid values are Optimizer and Compiler
--                                The default is Optimizer
--     p_file_id         (IN)  -  file identifier
------------------------------------------------------------------------------
PROCEDURE dump_trace(
             p_sql_id         IN varchar2,
             p_child_number   IN number   DEFAULT 0,
             p_component      IN varchar2 DEFAULT 'Optimizer',
             p_file_id        IN varchar2 DEFAULT null);

从上面介绍的debug级别以及dump_trace定义可知,p_component可以接收SQL_Compiler或者SQL_Optimizer两个事件,p_file_id则和tracefile_identifier相同,表示trace文件标识符,用于快速定位。

测试如下,可以得到sql_id是1mbz30hdgwaz7的第0个子游标对应的SQL执行时的10053跟踪事件文件,文件标识名称TEST,

begin
  dbms_sqldiag.dump_trace(p_sql_id=>'1mbz30hdgwaz7', p_child_number=>0, p_component=>'Compiler', p_file_id=>'TEST');
end;
/

使用这种方法,生成的10053跟踪文件,是通过Oracle自动做了一次硬解析,注释部分会增加/* SQL Analyze(xxx) */,

******************************************
----- Current SQL Statement for this session (sql_id=8zrq3v8j6hmzf) -----
/* SQL Analyze(423,0) */ SELECT ...

由于每次存储过程的执行,都会触发一次硬解析操作,因此频繁的执行,对于系统的影响程度,就需要执行者来了解和控制了,算是非常规操作。

5. Oracle Clinet下载

Oracle Client软件下载的路径和归档机制,值得做软件设计的人员学习,他是按照“操作系统平台 -> Oracle Client不同版本 - > Oracle Client不同组件”的维度设置的。

这个链接提供了各个操作平台所有可公开下载的Oracle Client,

https://www.oracle.com/database/technologies/instant-client/downloads.html

Windows调试Oracle数据库问题的一些手段_mysql_04

以Windows x64为例,这个链接,提供了该平台所有可公开下载的Oracle Client,最新的是21.3.0.0.0,最早的是10.2.0.5,

https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html

在12.2.0.1.0以前,Oracle Client组件拆得很细,无依赖,

Windows调试Oracle数据库问题的一些手段_linux_05

12.2.0.1.0开始,就拆成了基础版和扩展版,其中基础版一般包括这两个选择,必须选择其一,

Windows调试Oracle数据库问题的一些手段_mysql_06

在这个基础上,可以选择扩展,有Tools的,

Windows调试Oracle数据库问题的一些手段_数据库_07

有Development and Runtime的,

Windows调试Oracle数据库问题的一些手段_数据库_08

页面还提供了当前最常用的客户端链接快捷方式,目前是19的版本,

Oracle Client-to-Oracle Database version interoperability is detailed in Doc ID 207303.1. For example, applications using Oracle Call Interface 19 can connect to Oracle Database 11.2 or later. Some tools may have other restrictions.

Permanent links to the latest packages are: Basic, Basic Light, SQL*Plus, Tools, SDK, JDBC Supplement , ODBC

这是点击SQL*Plus下载的instantclient-sqlplus-windows.zip,确实相当精简,只能执行sqlplus,但是有时候,这就够用了,

Windows调试Oracle数据库问题的一些手段_数据库_09


标签:trace,Windows,sql,--,Client,SQL,Oracle,调试
From: https://blog.51cto.com/u_13950417/6511665

相关文章

  • VCL界面控件DevExpress VCL v23.1.3全新首发 - 支持Windows 11新主题
    DevExpressVCL Controls是Devexpress公司旗下最老牌的用户界面套包,所包含的控件有:数据录入、图表、数据分析、导航、布局等。该控件能帮助您创建优异的用户体验,提供高影响力的业务解决方案,并利用您现有的VCL技能为未来构建下一代应用程序。DevExpressVCLv23.1官方正式版下载......
  • 《Oracle Concept》第三章 - 4
    背景:按照《OracleConecpt》的结构一起了解Oracle数据库,这是学习Oracle从入门到精通的基础。本文主题:第三章《IndexesandIndex-OrganizedTables》-OverviewofIndexes。B树索引B树索引,是平衡树的缩写,他是数据库索引中最常用的一种类型。一个B树索引是一种将数值有序划分到不......
  • 关于使用vsmonodebuger对mono中运行的c#程序远程调试
    介绍:Mono是基于.NETFramework的开源开发平台,允许开发人员构建跨平台应用程序,从而提高开发人员的工作效率。Mono的.NET实现基于C#和公共语言基础结构的ECMA标准。简而言之就是可以运行.netframework程序跨平台执行vsmonodebuger:是mono的一个vs调试器插件,我们可以通过这个插件在......
  • Jenkins windows节点拉取代码报错: Host key verification failed
    说明:新增一个windows节点之后,在该节点上拉取gitlab上的代码发现报错,代码无法正常拉取下来。解决办法:需要在节点上将公钥发送给gitlab服务器。因为是windwos的节点,所以下面所有的操作都是在git-bash中进行的。1、生成公钥ssh-keygen-trsa2、发送给gitlab主机ssh-copy-i......
  • 要禁用 Windows Server 2022 2025时自动打开服务器管理器,可以通过以下批处理命令实现
    要禁用WindowsServer20222025时自动打开服务器管理器,可以通过以下批处理命令实现:首先打开记事本,输入以下命令:@echooffregadd"HKLM\Software\Microsoft\ServerManager"/vDoNotOpenServerManagerAtLogon/tREG_DWORD/d1/f保存文件,将文件名后缀改为.bat。......
  • kali windows 壁纸收藏 & 虚拟机下载
               链接:https://pan.baidu.com/s/1n9qf6h0wDGhcOt5dj-DdTg提取码:ny2s该虚拟机是用官方iso镜像文件创建的Vm虚拟机文件,解压导入Vmware即可,win登录密码abdal。本人做了一点优化和汉化。......
  • linux & windows手机 (长期更新)
    原生非虚拟化 purismlibremPinephone ubuntutouchpostmarketOSwoa 旨在在Lumia安装完整Windows10arm,也可用在linuxarm的移植,仍然处于实验性阶段https://github.com/WOA-Projecthttps://woa-project.github.io/LumiaWOA/https://www.ithome.com/0/407/902.htm......
  • 浅谈生活中常见的三大应用程序架构(PE、ELF、Mach-O)、五大操作系统(windows、linux、mac
    ·今天不聊复杂的技术,就是想做一下科普。我们生活中常见的操作系统,大致有5种分别是 电脑: Windows linux    macos手机 androidiosWindows手机操作系统没有发展起来,不同的操作系统间软件不能......
  • DataX在Windows上实现Mysql到Mysql同步数据以及配置多个job/多个表同步定时执行bat
    场景DataX-阿里开源离线同步工具在Windows上实现Sqlserver到Mysql全量同步和增量同步:DataX-阿里开源离线同步工具在Windows上实现Sqlserver到Mysql全量同步和增量同步_sqlserver数据同步工具_霸道流DataX-在Windows上实现postgresql同步数据到mysql:DataX-在Windows上实现postgres......
  • 在Mac上编译可运行在Linux, Windows上的GO程序
     编译运行在amd64位linux系统CGO_ENABLED=0GOOS=linuxGOARCH=amd64gobuild 编译运行在amd64位windows系统CGO_ENABLED=0GOOS=windowsgobuild ......