Skip to main content
Version: NG-3.1

SAP ASE

Introduction

SAP ASE (Adaptive Server Enterprise) offers rich, real-time monitoring data that can be leveraged for observability to ensure database health, performance, and reliability. By collecting metrics on query execution, CPU and I/O usage, locks, deadlocks, wait events, and cache efficiency, teams can proactively detect anomalies, troubleshoot slowdowns, optimize resource utilization, and gain insights into transactional patterns. This observability data is essential for maintaining SLAs, enabling faster root cause analysis, and ensuring seamless operation of business-critical applications.

Getting Started

Compatibility

The SAP ASE O11ySource supports SAP ASE Database versions 16.0 and later.

Data Collection Method

vuSmartMaps collects SAP ASE metrics through a data collector deployed within the vuSmartMaps platform, which uses JDBC to retrieve performance and health metrics.

Prerequisites

Dependent Configuration

To configure this O11ySource, create a 'credential' of type 'user' under the 'Definition' tab.

Inputs for Configuring Data Source

  • Instance Name: Please enter the name of the SAP ASE instance. This should be a unique identifier for the specific SAP ASE deployment you want to monitor.
  • DB Details: Provide the database connection details.
  • IP Address: IP address needs to be a valid IP Address.
  • Port: Enter a valid port
  • Credential: This field is required
  • Metrics Collection Queries: These queries are used to collect SAP ASE server metrics.
  • Query: Select one or more predefined query packs for SAP ASE metrics collection.
  • Polling Interval [seconds]: The interval must be between 180 and 86,400 seconds.
nan

Firewall Requirement

To collect data from this O11ySource, ensure the following ports are opened:

Source IPDestination IPDestination PortProtocolDirection
vuSmartMaps Collection/Ingress node IPIP address of the SAP ASE server5000TCPOutbound

*Before providing the firewall requirements, please update the port based on the customer environment.

Configuring the Target

Configure metrics collection from SAP ASE Metrics from SAP ASE are collected by querying system monitoring tables using a read-only monitor_user user via VuNet’s remote collection probe.

Note: The following steps must be executed by a user with system administrator privileges (for example, sa or a user granted sa_role). Step 1: Enable Monitoring and Statistics Collection

sp_configure 'enable monitoring', 1
go
sp_configure 'sql text pipe active', 1
go
sp_configure 'statement pipe active', 1
go
sp_configure 'statement statistics active', 1
go
sp_configure 'statement cache size', 1000
go
sp_configure 'wait event timing', 1
go
sp_configure 'per object statistics active', 1
go
sp_configure 'object lockwait timing', 1
go
reconfigure with override
go

Step 2: Create a Read-Only User and Grant Role

sp_addlogin monitor_user, <password>
go
sp_adduser monitor_user
go
grant role mon_role to monitor_user
go

Step 3: Grant Read-Only Access to Required System Tables

grant select on sysusages to monitor_user
go
grant select on sysdatabases to monitor_user
go
grant select on sysprocesses to monitor_user
go
grant select on sysconfigures to monitor_user
go
grant select on syscurconfigs to monitor_user
go

Step 4: Optional — Grant Access to Replication Monitoring

grant select on rs_lastcommit to monitor_user
go

Step 5: Optional — Verify Monitoring Tables Are Accessible Log in as monitor_user and run:

select name from sysobjects where name like 'mon%' and type = 'U'
go

Configuration Steps

Metrics Collected

NameDescriptionData Type
@timestampThe event timestamp in string format, likely ISO-8601.String
timestampPrecise timestamp of the event, with milliseconds precision.DateTime64
database_nameDatabase Instance name of Sybase ASE Server.String
data_typeType of data being collected.String
hostHostname of the Sybase ASE Server.String
targetHostname of the Sybase ASE Server.String
SPIDSession Process ID identifying a user process.UInt32
LoginUserUsername of the database user executing the query.String
ApplicationName of the client application connecting to the database.String
SourceHostNameHostname of the machine from which the session originated.String
TableAccessesTotal number of table accesses by the session.UInt64
TotalCPUTimeCumulative CPU time used by the process or engine.UInt64
LogicalReadsNumber of logical page reads (from cache).Float64
PhysicalReadsNumber of physical page reads (from disk).Float64
DBNameName of the database associated with the query or session.String
SQLTextSQL query text being executed.String
ExecutionTimeMsElapsed execution time in milliseconds.UInt64
CpuTimeMsAlias of CPUTimeMs (backward compatibility).UInt64
QueryStateCurrent state of the query (Running or Completed).String
statusStatus of the server process (e.g., sleeping, running).String
CPUTimeMsTotal CPU time in milliseconds.UInt64
physical_ioNumber of physical I/O operations performed.UInt64
memusageAmount of memory used by the process.UInt64
MaxConnectionsMaximum configured concurrent user connections.UInt64
TxnTypeType of transaction (commit or rollback).String
countTotal count of occurrences for the specified transaction type.Float64
SegmentTypeType of database segment (data, log, or mixed).String
TotalBytesTotal allocated space in bytes for the segment.UInt64
UsedBytesUsed space in bytes within the segment.UInt64
FreeBytesFree space in bytes within the segment.UInt64
UsedPctPercentage of space used within the segment.Float64
UptimeInSecondsUptime of the Sybase ASE server in seconds.UInt64
DeadlockIDUnique identifier for the deadlock occurrence.String
HeldSPIDSPID holding the lock in a deadlock situation.String
HeldSQLSQL statement held by the blocking process.String
WaitSPIDSPID that is waiting for the resource.String
WaitSQLSQL statement waiting for the lock to be released.String
ObjectDBNameName of the database where the locked object resides.String
HeldUserNameUsername of the process holding the lock.String
WaitUserNameUsername of the process waiting on the lock.String
WaiterSPIDSPID of the waiting session in a lock wait scenario.String
HolderSPIDSPID of the session holding the requested lock.String
LockTypeType of lock acquired or requested (e.g., page, row).String
WaitTimeTime duration the lock has been waited for.UInt64
WaiterHostHostname of the client waiting for the lock.String
WaiterCommandCommand being executed by the waiting process.String
CacheNameName of the memory cache pool.String
CacheHitRatioPctPercentage of cache hits over total cache accesses.Float64
InstanceIDID of the ASE instance (engine) reporting metrics.String
ProcedureCacheHitRatioHit ratio of the procedure cache.Float64
EngineNumberEngine number of the ASE engine thread.String
UserCPUTimeCPU time consumed by user operations.UInt64
SystemCPUTimeCPU time spent on system/kernel operations.UInt64
IOCPUTimeCPU time spent on io operations.UInt64
IOPctPercentage of CPU time spent on I/O operations.Float64
IdlePctPercentage of CPU time the engine was idle.Float64
SpinlockNameName of the spinlock structure.String
TotalGrabsNumber of successful grabs of the spinlock.UInt64
TotalSpinsNumber of times the engine spun while waiting for the spinlock.UInt64
TotalWaitsNumber of times the engine waited for the spinlock.UInt64
AvgContentionRatioAverage contention ratio of the spinlock.Float64
TotalSearchesTotal number of searches performed in the statement cache.UInt64
TotalHitsTotal number of successful statement cache hits.UInt64
HitRatioPctHit ratio percentage for statement cache usage.Float64
WaitEventIDIdentifier of the wait event.String
DescriptionText description of the wait event.String
TotalWaitTimeInMsTotal time spent waiting for the event in milliseconds.UInt64
TotalWaitCountTotal number of wait events of the specified type.Float64
DBIDInternal identifier of the database.UInt32
PagesReadTotal number of pages read from disk.UInt64
PagesWrittenTotal number of pages written to disk.UInt64
LockRequestsTotal number of lock requests.UInt64
LockWaitsTotal number of times a lock request resulted in a wait.UInt64
TruncTimeStampTimestamp of the last replicated transaction truncation.UInt64
CurrentTimeStampCurrent timestamp at the time of metric collection.UInt64
QueueSizeCurrent size of the replication queue.Float64
ServerUserIDInternal user ID executing the query.String
StartTimeTimestamp when the SQL statement began execution.UInt64
EndTimeTimestamp when the SQL statement finished execution.UInt64
suidServer user ID used for mapping to login name.String
segmapSegment map indicating the purpose of database segment (data/log).String
unreservedpgsNumber of unreserved pages in a segment.UInt64
crdateCreation time of the database used to calculate uptime.String
ResolveTimeTime at which a deadlock was resolved.DateTime64
BlockedBySPID that is blocking the current process.String
WaitsNumber of times a wait event occurred.String
PreparedStmtCountNumber of statements prepared.UInt64
SessionDuraionMsDuration of the session in milliseconds.UInt64
LoggedInDateTimeLogged in time for the user.String
HostProcessHost process through which the connection is established.String
TransactionNameName of the transaction.String
BlockedDurationInTicksDuration for which the current process is blocked measured in ticks.UInt64
CommandCommand being executed.String
IPAddressIP Address.String
ClientNameName of the client program which is using the connection.String
HeldApplNameApplication name of the session holding the lock.String
WaitApplNameApplication name of the session waiting on the lock.String
HeldTranNameTransaction name of the lock holder.String
WaitTranNameTransaction name of the waiter for the lock.String
HeldLockTypeType of the lock held.String
WaitLockTypeType of the lock waited upon.String
HeldCommandCommand being executed by the lock holder.String
WaitCommandCommand being executed by the lock waiter.String
HeldHostNameHostname of the lock holder.String
WaitHostNameHostname of the lock waiter.String
ObjectNameObject Name.String
InstanceNameInstance Name.String