sqle icon indicating copy to clipboard operation
sqle copied to clipboard

Oracle使用sys用户执行 TOP SQL扫描任务失败

Open LordofAvernus opened this issue 1 year ago • 0 comments

版本信息(Version)

3.2408.0

问题描述(Describe)

创建Oracle TOP SQL任务,无法从页面获取采集信息。日志中发现连接Oracle失败。

截图或日志(Log)

35612b78-7c97-4466-9bde-cda819da10f7

如何复现(To Reproduce)

添加Oracle数据源,用户为sys, 创建Oracle TOP SQL扫描任务

问题原因

  • sys用户只能用SYSDBA或者SYSOPER两种身份登陆,当前使用的sql.Open()默认为normal登陆。

解决方案

sys用户需要添加 as sysdba的连接字符

var DBAPrivilege string

if strings.ToUpper(dsn.User) == "SYS" {
	DBAPrivilege = "AS SYSDBA"
}
sqlDB, err := sql.Open("oracle", fmt.Sprintf("oracle://%s:%s@%s:%s/%s%s", dsn.User, dsn.Password, dsn.Host, dsn.Port, dsn.ServiceName, DBAPrivilege))
if err != nil {
	return nil, errors.Wrapf(err, "failed to connect to %s", dsn.String())
}
err = sqlDB.Ping()
if err != nil {
	return nil, errors.Wrapf(err, "failed to ping %s", dsn.String())
}

变更影响面

受影响的模块或功能

外部引用的潜在问题或风险

版本兼容性

测试建议

LordofAvernus avatar Sep 19 '24 06:09 LordofAvernus