• Loading...

Oracle Database

Discover with BMC ADDM
download

This product can be discovered by any edition of BMC Atrium Discovery and Dependency Mapping. Download our free Community Edition to try it out, or see what else it can discover!

What is this?
This is a product information page, containing details of the information that BMC Atrium Discovery gathers about a product and how it is obtained.
Product Name
Database
Publisher Page

Oracle

Category

Relational Database Management Systems

Release
TKU 2011-Nov-1
Change History

Oracle Database - Change History

Reports & Attributes

Oracle Database - Reports & Attributes

Publisher Link
Oracle

Product Description

Oracle RDBMS (a product of Oracle Corporation) is an enterprise-class relational database management system product. Oracle RDBMS is available on multiple platforms such as: Unix (Solaris, HP-UX, AIX, Mac OS X Server, Tru64), Linux, Microsoft Windows, z/OS, OpenVMS.

Known Versions

Version numbering of Oracle products has been fairly inconsistent and seems to vary from product to product with marketing and actual product versions often used interchangeably.

Known versions of this product are:

  • 7.0
  • Oracle7 (7.0.16 - 7.3.4; includes 7.1, 7.2, 7.3 and 7.3.4)
  • 8.0
  • Oracle8 Database (8.0.3 - 8.0.6)
  • Oracle8i Database Release 1 (8.1.5.x; includes 8.1.5.0 and 8.1.5.1)
  • Oracle8i Database Release 2 (8.1.6.x; includes 8.1.6.0 and 8.1.6.3)
  • Oracle8i Database Release 3 (8.1.7.x; includes 8.1.7.0 and 8.1.7.4)
  • Oracle9i Database Release 1 (9.0.1.x; includes 9.0.1.0 and 9.0.1.5)
  • Oracle9i Database Release 2 (9.2.0.1 - 9.2.0.8; includes 9.2.0.7 and 9.2.0.8)
  • Oracle Database 10g Release 1 (10.1.0.x)
  • Oracle Database 10g Release 2 (10.2.0.x; includes 10.1.0.2, 10.1.0.5, 10.2.0.1, 10.2.0.2 and 10.2.0.3)
  • Oracle Database 11g Release 1 11.1.0.6.0
  • Oracle Database 11g Release 2

Editions

Oracle RDBMS is available in a number of different editions all of which are built on the same common code base. The editions are likely provided for marketing and license-tracking reasons.

Known editions of the current version of the product (11g) are:

  • Enterprise Edition - offers largest scale performance, scalability and reliability in either single-server or clustered configurations. No limits applied to the maximum number of CPUs, RAM usage or Database Size. Licensed on the basis of users or CPUs and typically used on servers running more than 4 CPUs.
  • Standard Edition - contains base database functionality. Licensed on the basis of users or CPUs with the limitation of running on server with a maximum of 4 CPUs. An Enterprise-edition license is required for servers running more than 4 CPUs.
  • Standard Edition One - contains some more restrictions than Standard Edition. Marketed and sold for use on systems with one or two CPUs.
  • Express Edition - a version that is free to distribute on Windows and Linux platform, with a small footprint and restricted to the use of a single CPU and a maximum of 4GB of user data (database size) and 1GB of RAM.

Software Pattern Summary

Product Component OS Type Versioning Pattern Depth
DatabaseServer Unix Command (Active), Path Instance-based or Grouped by version (data dependent)
Windows Registry, Path
DatabaseServerExpressUnix Unix Command (Active), File, PackageInstance-based
TNSListener Unix Path Instance-based or Grouped by version (data dependent)
Windows

Platforms Supported by the Pattern

The patterns have been created in a manner that allows them to support Windows, Linux and Unix platforms from the same module.

Identification

Software Instance Triggers

Component Trigger Node Attribute Condition Argument
DatabaseServer DiscoveredProcess cmd matches regex'ora_smon_.+$'
or
regex'(?i)\boracle\.exe$'
or
regex'(?i)\boracle\d\d\.exe$'
DatabaseServerExpressUnix DiscoveredProcess cmd matches regex '\bxe_smon_.+$'
TNSListener DiscoveredProcess cmd matches regex'\btnslsnr$'
or
regex'(?i)\btnslsnr\.exe$'

Simple Identification Mappings

The following components/processes are identified using the combination of pattern definitions and simple identity mappings which map other known (but deemed less important in terms of application modeling) processes.

  • Simple identifiers for DatabaseServer
Name Command
Oracle Advanced Queuing \bora_qmn[0-9]_.*$
Oracle Archiver \bora_arc[0-9]_.*$
Oracle Checkpoint \bora_ckpt_.*$
Oracle Database Automatic Workload Repository Statistics Gatherer Process \bora_mmon_\w+$
Oracle Database Diagnosability Process \bora_dia\d_\w+$
Oracle Database Flashback Data Archive \bora_fbda_\w+$
Oracle Database Lightweight Manageability Tasks Process\bora_mmnl_\w+$
Oracle Database Job Queue Slave\bora_q\d{3}_\w+$
Oracle Database Queue Monitor Process\bora_qmnc_\w+$
Oracle Database PL/SQL Server Process\bora_psp\d_\w+$
Oracle Database Space Manager\bora_smco_\w+$
Oracle Database Space Manager Worker Process\bora_w\d{3}_\w+$
Oracle Database Virtual Time Keeper Process\bora_vktm_\w+$
Oracle Database Writer \bora_dbw[0-9]_.*$
Oracle Resource Manager \bora_dbrm_\w+$
Oracle External Job Scheduler \bora[Oracle Database^ ]*\bextjob$
Oracle Job \bora_j[0-9][0-9][0-9]_.*$
Oracle Job Queue Coordinator \bora_cjq[0-9]_.*$
Oracle Log Writer \bora_lgwr_.*$
Oracle MTS Dispatcher \bora_d[0-9][0-9][0-9]_.*$
Oracle MTS Server \bora_s[0-9][0-9][0-9]_.*$
Oracle Parallel Execution \bora_p[0-9][0-9][0-9]_.*$
Oracle Process Monitor \bora_pmon_.*$
Oracle Recovery Process \bora_reco_.*$
Oracle Intelligent Agent \bdbsnmp$
Oracle Shadow Process \boracle[a-zA-Z0-9_]+$
Oracle System Monitor \bora_smon_.*$
Oracle Net Services (TNS) Listener \btnslsnr$
Oracle DataPump Export \bora[Oracle Database^ ]*\bbin/expdp$
(?i)\bora[Oracle Database^ ]*\bexpdp\.exe$
Oracle DataPump Import \bora[Oracle Database^ ]*\bimpdp$
(?i)\bora[Oracle Database^ ]*\bimpdp\.exe$
Oracle Database Export Utility (?i)\bora[Oracle Database^ ]*\bexp\.exe$
\bora[Oracle Database^ ]*\bbin/exp$
Oracle External Procedure Agent (?i)\bextproc\.exe$
\bextproc\w+$
Oracle Database Import Utility (?i)\bora[Oracle Database^ ]*\bimp\.exe$
\bora[Oracle Database^ ]*\bbin/imp$
Oracle MTS Recovery Service (?i)\bomtsreco\.exe$
Oracle Recovery Manager (?i)\bora[Oracle Database^ ]*\brman\.exe$
Oracle Enterprise Manager Website Service (?i)\bnmentsrvc\.exe$
Oracle Client Cache (?i)\bora[Oracle Database^ ]*\bonrsd\.exe$
(?i)\bora[Oracle Database^ ]*\bonrsd\d\d\.exe$
Oracle Connection Manager Administration Service (?i)\bora[Oracle Database^ ]*\bcmadmin\.exe$
Oracle Connection Manager Gateway (?i)\bcmgw\.exe$
Oracle DB Console (?i)\bnmesrvc\.exe$
Oracle Database Server (?i)\boracle\d\d\.exe$
(?i)\boracle\.exe$
Oracle External Job Scheduler (?i)\bora[Oracle Database^ ]*\bextjob\.exe$
Oracle Net Services (TNS) Listener (?i)\btnslsnr\.exe$
Oracle Web Publishing Assistant (?i)\bowastsvr\.exe$
Interactive Database client - SQL shell \bsqlplus$
(?i)sqlplus.exe$
Graphical Oracle Database client (Windows) (?i)\bsqlplusw\.exe$
  • Simple identifiers for DatabaseServer Express
NameCommand
Oracle Database Express System Monitor\bxe_smon_.*$
Oracle Database Express Process Monitor\bxe_pmon_.*$
Oracle Database Express Process-spawner\bxe_psp[0-9]_.*$
Oracle Database Express Memory-manager Process\bxe_mman_.*$
Oracle Database Express Database Writer\bxe_dbw[0-9]_.*$
Oracle Database Express Log Writer\bxe_lgwr_.*$
Oracle Database Express Checkpoint\bxe_ckpt_.*$
Oracle Database Express Recovery Process\bxe_reco_.*$
Oracle Database Express Job Queue Coordinator\bxe_cjq[0-9]_.*$
Oracle Database Express Memory-monitor Process\bxe_mmon_.*$
Oracle Database Express Memory-monitor Light Process\bxe_mmnl_.*$
Oracle Database Express Queue-monitor Processes\bxe_qmnc_.*$
Oracle Database Express MTS Server\bxe_s[0-9][0-9][0-9]_.*$
Oracle Database Express MTS Dispatcher\bxe_d[0-9][0-9][0-9]_.*$
Oracle Database Express MTS Process\bxe_q[0-9][0-9][0-9]_.*$

Versioning

Oracle Database Server and Oracle Database Server Express (UNIX)

In case of Oracle Database Server, version information is currently collected using one of three possible methods (active, registry, path) while in case of Oracle Database Server Express (UNIX) version information is collected using one of 2 possible methods (active, package).

The methods are tried in an order of precedence based on likely success and/or accuracy of the information that can be gathered. Once a result is obtained, the method lower in precedence is not attempted. In order of precedence the methods are:

Active Versioning (Unix only)

As the method most likely to give a highly accurate result, active versioning is attempted first provided that the pattern can extract the Oracle installation path (ora_home).

Directly Extracting ora_home (installation path)

This method is employed for both the DatabaseServer and DatabaseServerExpressUnix patterns, though only in Unix environments. It uses two possible approaches. Only the first approach is enabled by default.

The database SID (instance name) is initially extracted from the trigger process command line Arguments by using a Regular Expression, which varies depending on Operating System.

Regular Expression employed in Windows environments: (.+)

Regular Expression employed in Unix environments: (?i)ora_smon_(.+)

First Approach - oratab file parsing method

The pattern tries to open a file called 'oratab' by searching through a list of potential (user configurable) locations for it:

  1. /var/opt/oracle/oratab
  2. /etc/oratab
  3. /var/opt/unix/oratab
  4. /etc/oracle/oratab
  5. /etc/opt/oracle/oratab
  6. /shared/opt/oracle/oratab
Note: These files are typically viewed using an unprivileged account (Atrium Discovery login account). It is possible to view them as a privileged user on Atrium Discovery 8.2 and later. To do this you must alter the PRIV_CAT variable is the platform scripts

If the 'oratab' file is located, the file is parsed for the database with the SID in the process command-line via the following regular expression:

  • "(?m)^\s*%norm_ora_sid%:([^:]+):(?:[YNW])?"

If a matching entry is found the above regular expression extracts the installation path (ora_home) for this database instance.

The Oracle DB 'oratab' file has the following format:

a. A colon, ':', is used as the field terminator. A new line terminates the entry. Lines beginning with a pound sign, '#', are comments.
b. Entries are of the form: $ORACLE_SID:$ORACLE_HOME:<N|Y>:
c. The first and second fields are the system identifier and home directory of the database respectively.
d. Multiple entries with the same $ORACLE_SID are not allowed.

Examples:

  • PRMP01:/local/ORAPRMSDG/sw/oracle/product/9.2.0:Y

o Here, $ORACLE_SID is PRMP01,

      $ORACLE_HOME is /local/ORAPRMSDG/sw/oracle/product/9.2.0
  • OPSP01:/local/ORAOPSDG/sw/oracle/product/9.2.0:N

o Here, $ORACLE_SID is OPSP01

      $ORACLE_HOME is /local/ORAOPSDG/sw/oracle/product/9.2.0

If ora_home isn't found through this method, ordinarily the TNS Listener method is executed to obtain it indirectly

Second Approach - use of pmap command (Solaris and Linux)

On certain Unix platforms (Solaris and Linux), the pmap command is used against the process id (pid) of the 'oracle' process and the output is parsed for the full path to the oracle binary.

Oracle installation path is then extracted using one of the following regular expressions:

For Database Server other than Express Edition

  • \W(/[^ ]*/)bin/oracle\W

For Database Express

  • \(/\S*)/bin/oracle\W
  • This approach works only in cases where the appliance has credentials that give the logged-in user elevated privileges via privilege escalation mechanism (e.g. 'sudo')
  • The approach is disabled by default due to the above requirement (majority of installations do not provide these level of privileges to the account used by Atrium Discovery appliance).
    • To enable this approach, both the priv_execution and pmap_enabled options in the configuration section should be set to 'true'.
    • The priv_function option in the configuration section may be modified to point to an alternative path (the default being PRIV_RUNCMD) for an instance of 'sudo' or 'suexec' on the hosts being scanned.
    • The pmap_path option in the configuration section may be modified to point to an alternative path (the default being /usr/bin/pmap) for an instance of 'pmap' on the hosts being scanned.

Indirectly obtaining ora_home (installation) path - TNS Listener method

This approach is used only in the Oracle Database Server pattern if the pattern has failed to obtain the Oracle DB Server installation path via the direct method described above.

Within the TNS Listener pattern ora_home is extracted from the TNS Listener Command Path, by employing a Regular Expression.

Regular Expression Employed to extract ora_home: (?i)^((?:/|\w:).+)[/\\]bin[/\\]tnslsnr

It is subsequently stored in the TNS Listener SI.

The Database pattern searches for all the TNS Listener SoftwareInstances on the Host, where the instance or instances attributes are set. If the instance from a TNS Listener matches ora_sid, then ora_home is extracted from the TNS Listener SI, when present.
In case where the TNS Listener has the instances attribute set (i.e. it is acting as a listener for multiple database servers), the pattern will loop through the list and compare each instance to ora_sid. If a match is found, then ora_home is extracted from the TNS Listener SI, when present.

Performing Versioning

If the installation path (ora_home) has been determined, an SQLPlus command, "echo exit | ORACLE_HOME=%ora_home% %ora_home%/bin/sqlplus /NOLOG", is executed; The /NOLOG option is used to ensure that no login is attempted so that there is no interaction required.

The output from this command is then parsed via the regex, "Release\s+(\d+(?:\.\d+)*)", to extract the version string.

The output is further processed using the following regular expression "^(\d+)" and the short version obtained this way evaluated for validity as version returned by the SQLPlus command in early Oracle releases (prior to Oracle 8) are not directly linked to the version of the Oracle Database Server. If such version is detected, a code mapping is used to attempt to map the version obtained to the actual Oracle version. If this does not succeed, then this approach will not set a version for the product.

Versioning achieved using this method is either to depth x.x.x , x.x.x.x or x.x.x.x.x unless a version mapping has to be used in which case only the major version is set.

Note: The disadvantage of this method is that the user permissions for the account Atrium Discovery uses need to allow execution of the SQLPlus binary, and the fact that an assumption is made that the 'oratab' file is being actively maintained with $ORACLE_HOME path being accurate. If installation path is not obtained, versioning will using this method will not be attempted.

Registry Versioning (Windows only)

The Oracle Service Key is searched for by querying the following registry key:

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleService<ora_sid>\ImagePath

Once the Oracle Service Key is known, the Windows Registry is queried for the full image path.

From the full image path, the location of the binary files is extracted via the regex:

  • (?i)(.+\\bin\\).

The contents of the file, %install_path%oracle.key, are then extracted to give the Oracle Install Key ('HKEY_LOCAL_MACHINE\\' + oracle_keyfile.content + '\\').

Once the Oracle Install Key is known, version_key is obtained from the Windows Registry by searching for "%oracle_install_key%VERSION".

Note: The oracle.key file is viewed using an unprivileged account. It is possible to view them as a privileged user on Atrium Discovery 8.2 and later. To do this you must alter the PRIV_CAT variable is the platform scripts

Package Versioning (Express Edition, Linux platform only)

Oracle Database Server Express Edition (available on Unix and Windows) can be installed from the .rpm package only. The host is being queried for the 'oracle-xe-univ' package, and its version parameter provides the full version of product.

Regular expression used to match the package name is:

  • oracle-xe-univ$

Path Versioning

The Path Regex functionality allows a regular expression to be applied against the process command line to derive a version number from the command path or arguments.

For Database Server (other than Express Edition) running on a UNIX host the regular expression used is as follows:

  • (?:(?:ora|orcl)[Oracle Database^/]*|(?:ora|orcl)[Oracle Database^ ]*product[Oracle Database^ ]*|/product[s]?|/prod|/oracle)/(1?\d)\.?(\d?)\.?(\d?)\.?(\d?)

For Database Server Express Edition (UNIX) the regular expression used is as follows::

  • /oracle\S+/(\d+(?:\.\d+)*)

This path may come from a file or the results of an active command.

Windows Path Regular Expression:

  • (?i)(?:Oracle|ora|or|product)(?:\\|)(1?\d)\.?(\d?)\.?(\d?)\.?(\d?)

Versioning is achieved in this case upto depth x.x.x depending on the deployment pattern.

Examples of paths that would be matched and versions extracted are:

  • d:\ora81\bin\ORACLE.EXE - 8.1
  • d:\oracle\product\10.2.0\db_1\bin\ORACLE.EXE - 10.2.0
  • d:\apps\oracle\7.3.3\bin\oracle73.exe - 7.3.3
  • d:\orant\bin\oracle80.exe - 8.0

TNS Listener

Versioning is performed using the path versioning approach. The Path Regex functionality allows a regular expression to be applied against the process command line to derive a version number from the command path or arguments.

The regular expressions used are as follows:

Unix Path Regex: (?:(?:ora|orcl)[^/]*|(?:ora|orcl)[^ ]*product[^ ]*|/[Pp][Rr][Oo][Dd][Uu][Cc][Tt][s]?|/prod|/oracle|/app)/(1?\d)\.?(\d?)\.?(\d?)\.?(\d?)

Windows Path Regex: (?i)(?:Oracle|ora|or|product)(?:\\|)(1?\d)\.?(\d?)\.?(\d?)\.?(\d?)

When these Regular Expressions fail, another multi-platform Regular Expression is employed.

Multi-platform Regular Expression: (?i)[/\\](\d+(?:\.\d+)+)[/\\]bin[/
]tnslsnr

Versioning is achieved in this case to depth x.x , x.x.x or x.x.x.x - depending on the deployment pattern.

Examples of paths that would be matched and versions extracted are:

  • /dboracle/orabase/product/9.2.0.7/bin/tnslsnr - 9.2.0.7
  • /u01/app/oracle/product/10.1.0/db_1/bin/tnslsnr - 10.1.0
  • /dboracle/product/8.1.7.4v/bin/tnslsnr - 8.1.7.4
  • /u01/app/oracle/product/9.2/bin/tnslsnr - 9.2
Note: These files are viewed using an unprivileged account. It is possible to view them as a privileged user on Atrium Discovery 8.2 and later. To do this you must alter the PRIV_CAT variable is the platform scripts

Alternative Versioning Approach

Unix/Linux

Detailed analysis of methods to obtain Oracle RDBMS product version was then undertaken by Engineering and Oracle RDBMS SMEs (internal and customer - JPMC) and it was concluded that due to the complexity of the product in terms of deployment and configuration, there is no single way to reliably obtain Oracle RDBMS version in all instances.

Application Model Produced by Software Pattern

Product Architecture

An Oracle database server instance comprises a set of operating system processes and memory structures that interact with the storage. Additional to this are client connectivity components which enable database clients to communicate with the database server.

  • Related Processes

Depending on how Oracle was installed (including licensing restrictions) the processes listed in the table of related processes above may not all be observed on a single host running Oracle RDBMS. Client processes in particular are likely to be running on multiple hosts.

Software Pattern Model

DatabaseServer

The DatabaseServer pattern triggers on either the Oracle System Monitor (ora_smon_<SID>) or Oracle Database Server (oracle.exe, oracle73.exe or oracle80.exe) processes to identify an instance of Oracle Database Server.

The DatabaseServerExpressUnix pattern triggers on the Oracle System Monitor (xe_smon_<SID>) process to also identify an instance of Oracle Database Server Express edition (on Windows, the trigger is oracle.exe).

TNSListener

The TNSListener pattern triggers on the Oracle Net Services (TNS) Listener (tnslsnr or tnslsnr.exe) process to identify an instance of TNS Listener.

SI Depth

Oracle Database Server

On Unix the main process present for each instance of an Oracle database is Oracle System Monitor (SMON).

An instance is also denoted by a SID which is observed on a command-line as the ending of the process name. e.g. ora_smon_SXQ1

The DatabaseServer and DatabaseServerExpressUnix pattern definitions use the Oracle System Monitor process (ora_smon_<SID> or xe_smon_<SID>) as the trigger process.

The instance name is extracted from the command using the following regular expression '(?i)ora_smon_(.)' (or 'xe_smon_(.)' for the Express edition). This name is used to create a unique Software Instance (SI).

The prime process is then collected into a set of all other processes that also have the same SID in their command or command-line arguments (in case of Oracle Net Services (TNS) Listener process).

On Windows, one or more Oracle Database Server processes are observed on hosts running Oracle RDBMS. Oracle Database instances can in certain cases be inferred from the command-line arguments but this pattern is not always observed and may be linked to the number of database instances being managed. It seems that if only one database instance is being managed, an SID is not required. More research is however required to be certain that this behaviour is correct.

If a SID is not obtained by the pattern a grouped (on version) SI is created in case of Oracle Database Server, while in case of Oracle Database Server Express (UNIX) and SI with a key based on type and host key is created (since only one instance of Express Edition can run on a host).

TNS Listener

The TNS Listener pattern will attempt to extract the Oracle database SID from the command-line arguments of the trigger process and use that to create a unique Software Instance (SI).

If a SID is not obtained by the pattern a grouped (on oracle installation path extracted from the trigger process) SI is created.

Relationship Creation

A communication relationship is then created with the Oracle Net Services (TNS) Listener (with exception of Oracle Database Express Edition on either Windows or Unix platform).

This relationship is modeled both from the DatabaseServer and the TNSListener patterns.

The DatabaseServer pattern then tries to associate all other related Oracle processes, running on the same host, to the SI.

Oracle E-Business Suite

The Oracle Database Server pattern raises a flag when acting in an Oracle E-Business Suite environment. This flag is stored in the Oracle Database Server SI as the ebs_suite attribute.
The way the pattern determines whether it has discovered and instance of Oracle Database Server running as part of E-Business is to search for any TNS Listener process where its command-line args match a regular expression APPS_<ora SID> where <ora SID> is this Database Server SID.
The flag is then checked for later in the pattern in order to determine the correct path to listener.ora file, as this path is different for Database Servers running as a component of Oracle E-Business.

Future Considerations

We cannot determine appropriate (TNS) Listener for the Express Edition of Oracle Database Server, as the command line doesn't contain any attributes.

Determining Oracle RDBMS Edition

  • Unix

Oracle RDBMS Database Server pattern will, when triggered on a scan of a Unix host, attempt to determine which Oracle RDBMS edition this Database Server is provided that the installation ($ORACLE_HOME) path has been found.

File 'context.xml' is parsed to obtain the value for edition which is then mapped to the actual edition name using a mapping table (EditionsTable).

The 'context.xml' file is parsed using the following code:

grep -w s_serverInstallType
<installation_path>/inventory/Components21/oracle.server/*/context.xml<br>
| tr ' ' '\n'<br>
| grep VAL

The edition value is extracted using the following regular expression:

VAL="(\w\w)"

In certain cases, this file may not be readable except by the root user or users belonging to the same group as the user that has installed Oracle.
The pattern will therefore, if it fails to access the context.xml file, and execution of commands under elevated privileges has been enabled, attempt to access the file under elevated privileges.
This is then performed in 2 steps:

  1. An 'ls' command is executed against the directory <installation_path>/inventory/Components21/oracle.server in order to get the full path of context.xml file
  2. If the directory name where context.xml is has been obtained, the file is parsed as above

In all cases, edition information is only recorded if it can be fully determined. Quite often, the edition information is set to 'Custom' in the context.xml file and this is done by the Oracle installation script if the defaults of creating a database are not followed but a custom installation is performed. In those cases, edition information is not stored in the Software Instance.

The method detailed above cannot however be used to identify Oracle RDBMS Express Edition. A separate pattern has been created to identify this edition as the trigger process is different (and distinct) - it is xe_smon_<SID>.

In addition to this, Express Edition has 'XE' as its SID, the only one available for the installation; therefore, 'Express' edition can always be positively determined and the 'edition' attribute set.

  • Windows

On Windows-based systems, a specific registry key is parsed within the main Oracle RDBMS pattern in order to obtain the edition. The key accessed is:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\<Oracle service key>\ORACLE_BUNDLE_NAME

Retrieving Port, Global Name and Service Name

The pattern employs 2 different methods for retrieving Port, and 1 method each for retrieving Global Name and Service Name, all of which apply to Windows and Unix platforms alike.

Parsing listener.ora file:

This method captures the content of the listener.ora file, which resides under Oracle Home, in the network/admin dirtree. Upon a successful retrieval of the file, it then tries to extract Port and Global Name from that file.

The regex used for extracting relevant information for getting the port information is :
((?i)(?:\n|^)\s*%<listener_name>%\s*=)

Note: If the Pattern detected that we are in an E-Business Suite environment, it will try to retrieve listener.ora from a subdirectory nested within the network/admin path. This subdirectory can be named either SID_Hostname, or simply SID
Note: The listener.ora file is viewed using an unprivileged account. It is possible to view them as a privileged user on Atrium Discovery 8.2 and later. To do this you must alter the PRIV_CAT variable is the platform scripts

Port

The pattern uses an algorithm to parse the listener.ora file. It iterates through its sections, which can describe more than one listener, and identifies the section relevant to the right SID. In this section, it retrieves the Port after checking that it belongs to the correct Host.

Global Name

The pattern identifies the section relevant to the right SID, and subsequently extracts the Global Name, by applying the following Regular Expressions:

Regular Expression employed to identify relevant Section: (?i)\(\s*SID_DESC\s*=\s*((?:\(\s*(?:GLOBAL_DBNAME|ORACLE_HOME)\s*=\s*[Oracle Database^ \)]*?\s*\)\s*){0,2}\(\s*SID_NAME\s*=\s*%ora_sid%\s*\)\s*(?:\(\s*(?:GLOBAL_DBNAME|ORACLE_HOME)\s*=\s*[Oracle Database^ \)]*?\s*\)\s*){0,2})\s*\)

Regular Expression employed to extract Global Name: \(\s*(?:GLOBAL_DBNAME)\s*=\s*([Oracle Database^ \)]*?)\s*\)

Parsing tnsnames.ora file

The pattern checks the content of the ora_home/network/admin/tsnames.ora file

Note that:

  • The tnsnames.ora file is viewed using an unprivileged account. It is possible to view them as a privileged user on Atrium Discovery 8.2 and later. To do this you must alter the PRIV_CAT variable is the platform scripts
  • As the tnsnames.ora file is normally employed to set up configuration for the Oracle Client – as opposed to the Database Server – it is possible that this file is wrongly configured, or not configured at all, while the Oracle Database Server continues to function normally. This is the reason why the tnsnames.ora method is tried only in case of failure of the listener.ora method.

Port and Service Name

Port and service name are obtained from the file using the following regular expressions:

  • Port: (?is)\s*%ora_sid%\s*=\s*\(\s*DESCRIPTION.*?PORT\s*=\s*(\d+\s*)\)
  • Service Name: (?is)\s*%ora_sid%\s*=\s*\(\s*DESCRIPTION.*?SERVICE_NAME\s*=\s*([Oracle Database^ \)]+)\s*\)

In cases where Global Name has been obtained but the Service name has not, the 'service_name' attribute is populated by the value of 'global_db_name'

Address names

The pattern parses the tnsnames.ora file for all "paragraphs" that might contain an address name using the following regular expression:

  • (?is)(?:\)\s*){3}\w.+?SERVICE_NAME\s*=\s*%service_name%

Each "paragraph" is then parsed with the following regular expression:

  • (?:\)\s*){3}(\w+(?:\.world))

All valid results are reported in the address_names attribute of the Software Instance

Listing Oracle Database Installed Options

A separate pattern is used to identify and model a selection of Installed Options in the Oracle Database. For more information on this approach, please refer to the relevant page.

Listing Oracle Management Packs

A separate pattern is used to identify and model a selection of Management Packs in the Oracle Database. For more information on this approach, please refer to the relevant page.

Identification of Oracle Pro*C installation

A pattern to identify and model Oracle Pro*C pre-compiler (installed as an optional component of Oracle Database) has also been developed. For more information about this pattern, please refer to the relevant page.

Obtaining detailed Oracle Database schema and table information

A separate pattern has been created to query the Oracle Database in order to obtain schema and (optionally) database table details. For more information about this pattern, please refer to the relevant page

Subject Matter Expertise

The set of simple identifiers for Oracle RDBMS running on Unix/Linux hosts, including approaches used to version the product have been developed from local knowledge on Oracle RDBMS as well as with input from JPMC SMEs.

Testing

Unix/Linux

Testing to ensure the processes related to Oracle RDBMS have been correctly identified has been performed using Atrium Discovery record data from hosts running Solaris, AIX and Linux operating systems.

Record data contained enough information to extract the version information using the Regex Path versioning approach.

In addition to this, active version command approach was developed and initially evaluated both on in-house Oracle RDBMS installations and on customer sites. The approach taken was shown to work well, provided the environment conditions that this approach requires were met.

Testing to ensure the processes related to Oracle RDBMS Express Edition have been correctly identified has been performed against in-house Oracle RDBMS Express installations running on Linux hosts.
Product version obtained using active command approach, package query and path regex was proven to work.

Windows

Testing to ensure the processes related to Oracle RDBMS have been correctly identified has been performed using both Atrium Discovery Record data and in-house Oracle RDBMS installations.

Path Regex versioning approach was also tested against both in-house Oracle RDBMS installations and Atrium Discovery Record data and was deemed to work well unless constrained by the data returned from the hosts (e.g. Atrium discovery typically cannot obtain process command-line on hosts running Windows NT or Windows 2000 Server. This limitation no longer exists on hosts running Windows XP or Windows 2003 server).

Testing to ensure the processes related to Oracle RDBMS Express Edition have been correctly identified has been performed against in-house Oracle RDBMS Express installations running on Windows hosts.
Product version obtained using active command approach, package query and path regex was proven to work.

Information Sources

Oracle Version Numbering

Open Issues

N/A

TOP


Created by: Rebecca Shalfield 30 Oct 2007
Updated by: Nikola Vukovljak 22 Nov 2011

Skip to end of metadata
Go to start of metadata
Labels:
products products Delete
path_versioning path_versioning Delete
components components Delete
active_versioning active_versioning Delete
additional_attributes additional_attributes Delete
communication_relationships communication_relationships Delete
active_command active_command Delete
registry_versioning registry_versioning Delete
editions editions Delete
relational_database_management_systems relational_database_management_systems Delete
oracle oracle Delete
tku_2011-nov-1 tku_2011-nov-1 Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.