Skip to main content

Oracle Database Discovery

Tripl-i automatically discovers Oracle Database instances, pluggable databases (PDBs), tablespaces, and active connections on Linux servers during SSH scans.

Overview

When Oracle Database is detected on a scanned Linux server, the scanner automatically gathers instance configuration, database inventory (PDBs for multitenant architecture), tablespace information, active connections, and Data Guard status. This data creates DatabaseInstance and Database CIs with full dependency mapping.

Key Benefits

  • Complete Oracle Inventory - Discover all Oracle instances across your infrastructure, including multitenant CDB/PDB architecture
  • Dependency Mapping - Identify which applications and servers connect to your databases
  • Data Guard Visibility - Detect primary/standby roles and protection modes
  • Tablespace Tracking - Monitor tablespace sizes, autoextend status, and capacity
  • Vulnerability Management - CPE generation enables CVE tracking for Oracle versions
  • Multi-Instance Support - Discover all instances from /etc/oratab and running PMON processes

How It Works

Discovery Flow

StepAction
1Linux server is scanned via SSH
2Oracle detected via ora_pmon_* processes, /etc/oratab, or sqlplus binary
3All instances discovered from /etc/oratab and running PMON processes
4For each instance: configuration, PDBs/databases, tablespaces, connections, and Data Guard status collected
5DatabaseInstance and Database CIs created
6Relationships mapped between instances, databases, and connected servers/workloads

Automatic Triggering

Database discovery is automatically triggered when:

  • A Linux server is scanned via SSH
  • Running ora_pmon_* processes are detected, or /etc/oratab exists, or sqlplus binary is found
  • No additional configuration is required for servers where the SSH account has sudo access to the oracle OS user

Authentication

Default: OS Authentication (No Extra Credentials)

The scanner uses OS authentication via the oracle OS user:

sudo su - oracle -c "sqlplus -S / as sysdba"

This works on most Oracle installations where:

  • The SSH scanning account has sudo access
  • The oracle OS user exists and is configured for SYSDBA authentication
  • $ORACLE_HOME and $ORACLE_SID are set in the oracle user's environment

No separate database credentials are required in this case.

Optional: Password Authentication

If sudo access is not available, you can configure Oracle credentials in the Scanner GUI:

  1. Go to Credentials tab
  2. Select protocol: Oracle
  3. Enter Username and Password
  4. Set Port (default: 1521)
  5. Enter SID / Service Name (e.g., ORCL, PRODDB)
  6. Set IP Range to target the database server(s)

Authentication Priority

PriorityMethodWhen Used
1Provided credentials (sqlplus user/pass@SID)When Oracle credentials are configured
2sudo su - oracle + sqlplus / as sysdbaWhen SSH user has sudo access
3sqlplus / as sysdba (current user)If running as oracle user

Required Oracle Permissions

For full discovery with SYSDBA (default OS auth):

  • All required views are accessible automatically

For non-SYSDBA users:

PermissionPurpose
SELECT on v$instanceInstance information
SELECT on v$databaseDatabase configuration
SELECT on v$sessionActive connections
SELECT on v$pdbsPluggable database inventory (12c+)
SELECT on dba_tablespacesTablespace information
SELECT on dba_data_filesData file sizes
SELECT on v$versionVersion banner
SELECT on nls_database_parametersCharacter set information

Data Collected

Instance Information

Data PointDescription
VersionOracle version (e.g., 19.0.0.0.0)
SIDSystem Identifier
Service NameDatabase service name
DB Unique NameUnique database name (for Data Guard)
Open ModeREAD WRITE, READ ONLY, MOUNTED
Log ModeARCHIVELOG or NOARCHIVELOG
Instance RolePRIMARY_INSTANCE or SECONDARY_INSTANCE
PlatformOperating system platform
Character SetNLS character set
EditionEnterprise, Standard, Express
Is CDBWhether this is a Container Database (multitenant)
Data Guard RolePRIMARY, PHYSICAL STANDBY, LOGICAL STANDBY
Protection ModeMAXIMUM PERFORMANCE, AVAILABILITY, PROTECTION
CPECommon Platform Enumeration for vulnerability matching

Database/PDB Information

For multitenant (CDB) instances, each Pluggable Database is discovered:

Data PointDescription
PDB NamePluggable database name
Open ModeREAD WRITE, READ ONLY, MOUNTED
Container IDPDB container ID
SizeTotal PDB size in MB

For non-CDB instances, the database itself is tracked as a single entry.

Tablespace Information

Data PointDescription
Tablespace NameName of the tablespace
StatusONLINE, OFFLINE, READ ONLY
SizeCurrent allocated size in MB
Max SizeMaximum autoextend size in MB
ContentsPERMANENT, TEMPORARY, UNDO

Connection Information

Data PointDescription
MachineClient machine name
ProgramConnecting application (e.g., JDBC Thin Client, sqlplus)
UsernameOracle database user
Connection CountNumber of sessions from this client

CI Types Created

DatabaseInstance

Represents an Oracle Database instance (SID) running on a server.

  • Naming Convention: ServerName/SID (e.g., oradb-01/PRODDB)
  • Database Engine: oracle

Database

For CDB instances, each PDB becomes a Database CI. For non-CDB, the database itself is a single CI.

  • Naming Convention: ServerName/SID/PDBName (e.g., oradb-01/PRODDB/HRPDB)

Relationships Created

RelationshipSourceTargetDescription
Runs OnDatabaseInstanceServerInstance runs on server
Part OfDatabase (PDB)DatabaseInstancePDB belongs to CDB
Uses DatabaseServer/WorkloadDatabaseInstanceClient connects to database
Linked ToDatabaseInstanceDatabaseInstanceData Guard partner

Cross-Boundary Dependencies

Connections from Kubernetes workloads to Oracle databases are automatically resolved:

K8s Workload (epys/api-service) ──Uses Database──> DatabaseInstance (oradb-01/PRODDB)
program: "JDBC Thin Client"
username: "EPYS_APP"

Multi-Instance Support

The scanner discovers all Oracle instances on a server:

  1. Parses /etc/oratab for configured instances and their ORACLE_HOME paths
  2. Scans running ora_pmon_* processes for active instances not in oratab
  3. Scans each instance independently with the correct ORACLE_HOME and ORACLE_SID

Excluded: ASM instances (+ASM, +APX) are skipped as they are storage infrastructure, not application databases.

Vulnerability Management

CPE Generation

Format: cpe:2.3:a:oracle:database_server:{version}:*:*:*:{edition}:*:*:*

Examples:

  • Oracle 19c Enterprise: cpe:2.3:a:oracle:database_server:19.0.0.0.0:*:*:*:enterprise:*:*:*
  • Oracle 21c Standard: cpe:2.3:a:oracle:database_server:21.0.0.0.0:*:*:*:standard:*:*:*

Best Practices

Security

  • Use OS authentication (SYSDBA) when possible (no password storage needed)
  • Monitor instances with NOARCHIVELOG mode (no point-in-time recovery possible)
  • Review Data Guard protection mode for critical databases
  • Check for non-CDB instances on 12c+ (may indicate legacy configurations)

Monitoring Indicators

  • NOARCHIVELOG mode - No point-in-time recovery, data loss risk
  • Data Guard MAXIMUM PERFORMANCE - May have data loss window during failover
  • Tablespace autoextend OFF - Risk of space exhaustion
  • PDBs in MOUNTED state - Not accessible to applications
  • High session counts from single machine - Connection pool issues

Troubleshooting

IssueCauseSolution
Oracle not discoveredNo PMON process and no /etc/oratabVerify Oracle is running: ps -ef | grep pmon
Cannot connect to instanceORACLE_HOME not set correctlyCheck /etc/oratab has correct paths
Permission deniedSSH user cannot sudo to oracleConfigure Oracle credentials in Scanner GUI
No PDB dataInstance is non-CDB or Oracle < 12cExpected behavior; database appears as single entry
No tablespace dataMissing DBA privilegesConnect as SYSDBA or grant SELECT on dba_tablespaces
Missing connectionsv$session access deniedGrant SELECT on v$session