@@ -41,13 +41,50 @@ func (b *CommonBuilder) getOracleDatabaseFeature(host model.Host, hostCoreFactor
4141
4242 uniqueOratabEntries := b .RemoveDuplicatedOratabEntries (oratabEntries )
4343
44- oracleDatabaseFeature .UnlistedRunningDatabases = b .getUnlistedRunningOracleDBs (uniqueOratabEntries )
44+ runningDBs , err := b .fetcher .GetOracleDatabaseRunningDatabases ()
45+ if err != nil {
46+ b .log .Errorf ("Can't get running Oracle databases" )
47+ return nil , err
48+ }
49+
50+ // UnlistedRunningDatabases is not needed at the moment accoridng to the team
51+ _ = b .getUnlistedRunningOracleDBs (uniqueOratabEntries )
52+
53+ uniqueOratabEntries = b .getMatchedOratabEntriesToRunningDbs (uniqueOratabEntries , runningDBs )
4554
4655 oracleDatabaseFeature .Databases , oracleDatabaseFeature .UnretrievedDatabases , err = b .getOracleDBs (uniqueOratabEntries , host , hostCoreFactor )
4756
57+ missingRunningDbs := b .missingRunningDbs (uniqueOratabEntries , runningDBs )
58+
59+ oracleDatabaseFeature .UnretrievedDatabases = append (oracleDatabaseFeature .UnretrievedDatabases , missingRunningDbs ... )
60+
4861 return oracleDatabaseFeature , err
4962}
5063
64+ func (b * CommonBuilder ) getMatchedOratabEntriesToRunningDbs (oratabEntries []agentmodel.OratabEntry , runningDbs []string ) []agentmodel.OratabEntry {
65+ res := make ([]agentmodel.OratabEntry , 0 , len (oratabEntries ))
66+
67+ for _ , entry := range oratabEntries {
68+ if ercutils .Contains (runningDbs , entry .DBName ) {
69+ res = append (res , entry )
70+ }
71+ }
72+
73+ return res
74+ }
75+
76+ func (b * CommonBuilder ) missingRunningDbs (oratabEntries []agentmodel.OratabEntry , runningDbs []string ) []string {
77+ res := make ([]string , 0 , len (runningDbs )- len (oratabEntries ))
78+
79+ for _ , rdb := range runningDbs {
80+ if ! containsDbName (oratabEntries , rdb ) {
81+ res = append (res , rdb )
82+ }
83+ }
84+
85+ return res
86+ }
87+
5188func (b * CommonBuilder ) getUnlistedRunningOracleDBs (oratabEntries []agentmodel.OratabEntry ) []string {
5289 runningDBs , err := b .fetcher .GetOracleDatabaseRunningDatabases ()
5390 if err != nil {
@@ -610,3 +647,13 @@ func checkVersion(dbName, dbVersion string) string {
610647
611648 return "Express Edition"
612649}
650+
651+ func containsDbName (oratabEntries []agentmodel.OratabEntry , s string ) bool {
652+ for _ , entry := range oratabEntries {
653+ if entry .DBName == s {
654+ return true
655+ }
656+ }
657+
658+ return false
659+ }
0 commit comments