Thursday, September 26, 2013

Oracle Apps 12.2.2 Step-by-Step Installation

Following are the Step-by-Step instructions on how to install Oracle E-Business Suite 12.2.2 on Oracle Enterprise Linux 5.7 64-bit, I will publish CPU and memory requirements also, wait for the update……
First we need to install 12.2.0 and then we need to install 12.2.2 update pack on existing 12.2.0 installation…..
Oracle E-Business Suite Memory requirements:
  • Oracle E-Business Suite is about 6 GB for the database tier machine
  • Oracle E-Business Suite is about 10 GB for an application tier machine
This will only support a few users (up to 10) including online patching.
File System Space Requirement for Oracle E-business Suite Standard Installation:
  • Oracle E-Business Suite Application node file system 64 GB
  • Oracle E-Business Suite Database node file system (Fresh Install) 90 GB
  • Oracle E-Business Suite Database node file system (Vision Demo Database) 200 GB
  • An Extra 25 GB in system tablespace is needed as a prerequisite for Online Patching enablement.
  • For a Oracle E-Business Suite Single node installation, we require at least 350 GB of space altogether

Installation:
First we need to download Oracle E-Business Suite Release 12.2.2 Media Pack for Linux x86-64-bitsoftware from https://edelivery.oracle.com/EPD/Download/get_form?egroup_aru_number=16809533
softwares1

Download following zip files:
softwares













We need to create the user and group as following:
[root@apps ~]# groupadd dba
[root@apps ~]# useradd  -g dba oracle
[root@apps ~]# useradd  -g dba applmgr
Create the Directory structure as following:
[root@apps ~]# mkdir /u01/db
[root@apps ~]# chown -R oralce:dba /u01/db

We need to copy the all above zip files into /u01/Stage/ and change the permission to oracle:dba and change the mode(chmod 775 /u01/zipfiles)
Create the oraInventory Directory as following:
[root@apps ~]# mkdir /u01/db/oraInventory
[root@apps ~]# chown -R oralce:dba /u01/db/ oraInventory
[root@apps ~]# chmod -R 775 /u01/db/ oraInventory
goto /etc and edit the oraInst.loc file and set the oraInventory location as following:
[root@apps etc]# vi oraInst.loc
inventory_loc=/u01/db/oraInventory
[root@apps etc]# cat oraInst.loc
inventory_loc=/u01/db/oraInventory
Installation:
Goto the zip files location through root user and unzip the following zip file only
[root@apps Stage]#unzip V35215-01_1of3.zip
after unzip the above zip file, you need to follow the below steps:
[root@apps bin]# pwd
/u01/Stage/startCD/Disk1/rapidwiz/bin
[root@apps bin]# sh buildStage.sh
Build Stage Menu
——————————————————
1.     Create new stage area
2.     Copy new patches to current stage area.
3.     Display existing files in stage TechPatches.
4.     Exit menu
Enter your choice [4]: 1
Rapid Install Platform Menu
——————————————————
1.    Oracle Solaris SPARC (64-bit)
2.    Linux x86-64
3.    IBM AIX on Power Systems (64-bit)
4.    HP-UX Itanium
5.    Exit Menu
Enter your choice [5]: 2
/u01/Stage/startCD/Disk1/rapidwiz/bin/../jre/Linux_x64/1.6.0/bin/java -classpath /u01/Stage/startCD/Disk1/rapidwiz/bin/../jlib/emocmutl.jar:/u01/Stage/startCD/Disk1/rapidwiz/bin/../jlib/ewt-3_4_22.jar:/u01/Stage/startCD/Disk1/rapidwiz/bin/../jlib/share-1_1_18.jar:/u01/Stage/startCD/Disk1/rapidwiz/bin/../jlib/jnls.jar:/u01/Stage/startCD/Disk1/rapidwiz/bin/../jlib/ACC.JAR:/u01/Stage/startCD/Disk1/rapidwiz/bin/../jlib/netcfg.jar:/u01/Stage/startCD/Disk1/rapidwiz/bin/../jlib/ojdbc14.jar:/u01/Stage/startCD/Disk1/rapidwiz/bin/../jlib/OraInstaller.jar:/u01/Stage/startCD/Disk1/rapidwiz/bin/../jlib/java oracle.apps.ad.rapidwiz.util.StageBuilder /u01/Stage/startCD/Disk1/rapidwiz/bin
Please enter the directory containing the zipped installation media:
/u01/Stage
Unzipping V29856-01.zip
Unzipping V35803-01_1of3.zip
Unzipping V35231-01_2of5.zip
Unzipping V35804-01_1of2.zip
 After unzip all the files Stage is shown below:
Verifying stage area…

Directory /u01/Stage/TechInstallMedia is valid
Directory /u01/Stage/TechPatches/DB is valid
Directory /u01/Stage/TechPatches/MiddleTier is valid
Directory /u01/Stage/EBSInstallMedia/AppDB is valid
Directory /u01/Stage/EBSInstallMedia/Apps is valid
Directory /u01/Stage/EBSInstallMedia/AS10.1.2 is valid
Directory /u01/Stage/TechInstallMedia/database is valid
Directory /u01/Stage/TechInstallMedia/ohs11116 is valid
Directory /u01/TechInstallMedia/wls1036_generic is valid
Stage area verified.
Press enter to continue…

Build Stage Menu
——————————————————
1.     Create new stage area
2.     Copy new patches to current stage area.
3.     Display existing files in stage TechPatches.
4.     Exit menu

Enter your choice [4]: 4
Now, we start the Installation through root user as following:

[root@apps rapidwiz]# pwd
/u01/Stage/startCD/Disk1/rapidwiz
[root@apps rapidwiz]# ./rapidwiz
apps 1
Click Next
apps 2
Click Next 
apps 3
Click Next 
apps 4
Click Yes
apps 5
Click Next
apps 6
Enter the Database configurations and Click Next
apps 7
Select suite licensing and Click Next
apps 8
Click Next
apps 9
Click Next
apps 10
Select the Language and character set as following
apps 11
Enter the Application configurations and Click Next as following
apps 12
Enter the Weblogic username & password as following: (password like oracle123)
apps 13
Click Next
apps 14
After Validate the system configurations Click Next 
apps 15
Rapid Install wizard will now install Oracle E-Business Suite. It will take 3-4 hours time to Install.
apps 16




apps 18
After Validate the complete Installation Click Next
apps 19
Click Finish
apps 20
Now, Installation has completed successfully….
Now, we check opmnctl status are alive or not by using the  following command
opmn











Now, you should be able to access applications home page as following
Example
http://<host name>.<domain name>:<HTTP port>/OA_HTML/AppsLogin
For example: (My URL)
http://apps.weblogic.com:8000/OA_HTML/AppsLogin
apps 21
Now, we enter the username and password to access the applications
username=sysadmin
password=sysadmin
apps 22
Also you should be able to access weblogic console home page as following
Example
http://<host name>.<domain name>:<HTTP port>/console
For example: (My URL)
http://apps.weblogic.com:7001/console
username=weblogic
password=oracle123
apps 23
Now, we see the servers details as following
apps 24
Here we can see following Mange servers in weblogic:
1.forms-c4ws_server1
2.forms_server1
3.oacore_server1
4.osfm_server1

Wednesday, September 25, 2013

Java™ Logging Overview


1.0 Java Logging Overview
    1.1 Overview of Control Flow
     1.2 Log Levels
     1.3 Loggers
     1.4 Logging Methods
     1.5 Handlers
     1.6 Formatters
     1.7 The LogManager
     1.8 Configuration File
     1.9 Default Configuration
     1.10 Dynamic Configuration Updates
     1.11 Native Methods
     1.12 XML DTD
     1.13 Unique Message IDs
     1.14 Security
     1.15 Configuration Management
     1.16 Packaging
     1.17 Localization
     1.18 Remote Access and Serialization
2.0 Examples
     2.1 Simple Use
     2.2 Changing the Configuration
     2.3 Simple Use, Ignoring Global Configuration
     2.4 Sample XML Output
3.0 Appendix A: DTD for XMLFormatter Output

1.0 Java Logging Overview

The logging APIs are described in detail in the Java SE API Specification. The goal of this document is to provide an overview of key elements.

1.1 Overview of Control Flow

Applications make logging calls on Logger objects. Loggers are organized in a hierarchical namespace and child Loggers may inherit some logging properties from their parents in the namespace.
Applications make logging calls on Logger objects. These Logger objects allocate LogRecord objects which are passed to Handler objects for publication. Both Loggers and Handlers may use logging Levels and (optionally) Filters to decide if they are interested in a particular LogRecord. When it is necessary to publish a LogRecord externally, a Handler can (optionally) use a Formatter to localize and format the message before publishing it to an I/O stream.
The previous context describes this graphic
Each Logger keeps track of a set of output Handlers. By default all Loggers also send their output to their parent Logger. But Loggers may also be configured to ignore Handlers higher up the tree.
Some Handlers may direct output to other Handlers. For example, the MemoryHandler maintains an internal ring buffer of LogRecords and on trigger events it publishes its LogRecords through a target Handler. In such cases, any formatting is done by the last Handler in the chain.
The previous context describes this graphic
The APIs are structured so that calls on the Logger APIs can be cheap when logging is disabled. If logging is disabled for a given log level, then the Logger can make a cheap comparison test and return. If logging is enabled for a given log level, the Logger is still careful to minimize costs before passing the LogRecord into the Handlers. In particular, localization and formatting (which are relatively expensive) are deferred until the Handler requests them. For example, a MemoryHandler can maintain a circular buffer of LogRecords without having to pay formatting costs.

1.2 Log Levels

Each log message has an associated log Level. The Level gives a rough guide to the importance and urgency of a log message. Log level objects encapsulate an integer value, with higher values indicating higher priorities.
The Level class defines seven standard log levels, ranging from FINEST (the lowest priority, with the lowest value) to SEVERE (the highest priority, with the highest value).

1.3 Loggers

As stated earlier, client code sends log requests to Logger objects. Each logger keeps track of a log level that it is interested in, and discards log requests that are below this level.
Loggers are normally named entities, using dot-separated names such as "java.awt". The namespace is hierarchical and is managed by the LogManager. The namespace should typically be aligned with the Java packaging namespace, but is not required to follow it slavishly. For example, a Logger called "java.awt" might handle logging requests for classes in the java.awt package, but it might also handle logging for classes in sun.awt that support the client-visible abstractions defined in the java.awt package.
In addition to named Loggers, it is also possible to create anonymous Loggers that don't appear in the shared namespace. See section 1.14.
Loggers keep track of their parent loggers in the logging namespace. A logger's parent is its nearest extant ancestor in the logging namespace. The root Logger (named "") has no parent. Anonymous loggers are all given the root logger as their parent. Loggers may inherit various attributes from their parents in the logger namespace. In particular, a logger may inherit:
  • Logging level. If a Logger's level is set to be null then the Logger will use an effective Level that will be obtained by walking up the parent tree and using the first non-null Level.
  • Handlers. By default a Logger will log any output messages to its parent's handlers, and so on recursively up the tree.
  • Resource bundle names. If a logger has a null resource bundle name, then it will inherit any resource bundle name defined for its parent, and so on recursively up the tree.

1.4 Logging Methods

The Logger class provides a large set of convenience methods for generating log messages. For convenience, there are methods for each logging level, named after the logging level name. Thus rather than calling "logger.log(Level.WARNING,..." a developer can simply call the convenience method "logger.warning(..."
There are two different styles of logging methods, to meet the needs of different communities of users.
First, there are methods that take an explicit source class name and source method name. These methods are intended for developers who want to be able to quickly locate the source of any given logging message. An example of this style is:
void warning(String sourceClass, String sourceMethod, String msg);
Second, there are a set of methods that do not take explicit source class or source method names. These are intended for developers who want easy-to-use logging and do not require detailed source information.
void warning(String msg);
For this second set of methods, the Logging framework will make a "best effort" to determine which class and method called into the logging framework and will add this information into the LogRecord. However, it is important to realize that this automatically inferred information may only be approximate. The latest generation of virtual machines perform extensive optimizations when JITing and may entirely remove stack frames, making it impossible to reliably locate the calling class and method.

1.5 Handlers

Java SE provides the following Handlers:
  • StreamHandler: A simple handler for writing formatted records to an OutputStream.
  • ConsoleHandler: A simple handler for writing formatted records to System.err
  • FileHandler: A handler that writes formatted log records either to a single file, or to a set of rotating log files.
  • SocketHandler: A handler that writes formatted log records to remote TCP ports.
  • MemoryHandler: A handler that buffers log records in memory.
It is fairly straightforward to develop new Handlers. Developers requiring specific functionality can either develop a Handler from scratch or subclass one of the provided Handlers.

1.6 Formatters

Java SE also includes two standard Formatters:
  • SimpleFormatter: Writes brief "human-readable" summaries of log records.
  • XMLFormatter: Writes detailed XML-structured information.
As with Handlers, it is fairly straightforward to develop new Formatters.

1.7 The LogManager

There is a global LogManager object that keeps track of global logging information. This includes:
  • A hierarchical namespace of named Loggers.
  • A set of logging control properties read from the configuration file. See section 1.8.
There is a single LogManager object that can be retrieved using the static LogManager.getLogManager method. This is created during LogManager initialization, based on a system property. This property allows container applications (such as EJB containers) to substitute their own subclass of LogManager in place of the default class.

1.8 Configuration File

The logging configuration can be initialized using a logging configuration file that will be read at startup. This logging configuration file is in standard java.util.Properties format.
Alternatively, the logging configuration can be initialized by specifying a class that can be used for reading initialization properties. This mechanism allows configuration data to be read from arbitrary sources, such as LDAP, JDBC, etc. See the LogManager API Specification for details.
There is a small set of global configuration information. This is specified in the description of the LogManager class and includes a list of root-level Handlers to install during startup.
The initial configuration may specify levels for particular loggers. These levels are applied to the named logger and any loggers below it in the naming hierarchy. The levels are applied in the order they are defined in the configuration file.
The initial configuration may contain arbitrary properties for use by Handlers or by subsystems doing logging. By convention these properties should use names starting with the name of the handler class or the name of the main Logger for the subsystem.
For example, the MemoryHandler uses a property "java.util.logging.MemoryHandler.size" to determine the default size for its ring buffer.

1.9 Default Configuration

The default logging configuration that ships with the JRE is only a default, and can be overridden by ISVs, system admins, and end users.
The default configuration makes only limited use of disk space. It doesn't flood the user with information, but does make sure to always capture key failure information.
The default configuration establishes a single handler on the root logger for sending output to the console.

1.10 Dynamic Configuration Updates

Programmers can update the logging configuration at run time in a variety of ways:
  • FileHandlers, MemoryHandlers, and PrintHandlers can all be created with various attributes.
  • New Handlers can be added and old ones removed.
  • New Loggers can be created and can be supplied with specific Handlers.
  • Levels can be set on target Handlers.

1.11 Native Methods

There are no native APIs for logging.
Native code that wishes to use the Java Logging mechanisms should make normal JNI calls into the Java Logging APIs.

1.12 XML DTD

The XML DTD used by the XMLFormatter is specified in Appendix A.
The DTD is designed with a "<log>" element as the top-level document. Individual log records are then written as "<record>" elements.
Note that in the event of JVM crashes it may not be possible to cleanly terminate an XMLFormatter stream with the appropriate closing </log>. Therefore tools that are analyzing log records should be prepared to cope with un-terminated streams.

1.13 Unique Message IDs

The Java Logging APIs do not provide any direct support for unique message IDs. Those applications or subsystems requiring unique message IDs should define their own conventions and include the unique IDs in the message strings as appropriate.

1.14 Security

The principal security requirement is that untrusted code should not be able to change the logging configuration. Specifically, if the logging configuration has been set up to log a particular category of information to a particular Handler, then untrusted code should not be able to prevent or disrupt that logging.
A new security permission LoggingPermission is defined to control updates to the logging configuration.
Trusted applications are given the appropriate LoggingPermission so they can call any of the logging configuration APIs. Untrusted applets are a different story. Untrusted applets can create and use named Loggers in the normal way, but they are not allowed to change logging control settings, such as adding or removing handlers, or changing log levels. However, untrusted applets are able to create and use their own "anonymous" loggers, using Logger.getAnonymousLogger. These anonymous Loggers are not registered in the global namespace and their methods are not access-checked, allowing even untrusted code to change their logging control settings.
The logging framework does not attempt to prevent spoofing. The sources of logging calls cannot be determined reliably, so when a LogRecord is published that claims to be from a particular source class and source method, it may be a fabrication. Similarly, formatters such as the XMLFormatter do not attempt to protect themselves against nested log messages inside message strings. Thus, a spoof LogRecord might contain a spoof set of XML inside its message string to make it look as if there was an additional XML record in the output.
In addition, the logging framework does not attempt to protect itself against denial of service attacks. Any given logging client can flood the logging framework with meaningless messages in an attempt to conceal some important log message.

1.15 Configuration Management

The APIs are structured so that an initial set of configuration information is read as properties from a configuration file. The configuration information may then be changed programatically by calls on the various logging classes and objects.
In addition, there are methods on LogManager that allow the configuration file to be re-read. When this happens, the configuration file values will override any changes that have been made programatically.

1.16 Packaging

All of the logging class are in the java.* part of the namespace, in the java.util.logging package.

1.17 Localization

Log messages may need to be localized.
Each Logger may have a Resource Bundle name associated with it. The corresponding Resource Bundle can be used to map between raw message strings and localized message strings.
Normally localization will be performed by Formatters. As a convenience, the formatter class provides a formatMessage method that provides some basic localization and formatting support.

1.18 Remote Access and Serialization

As with most Java platform APIs, the logging APIs are designed for use inside a single address space. All calls are intended to be local. However, it is expected that some Handlers will want to forward their output to other systems. There are a variety of ways of doing this:
Some Handlers (such as the SocketHandler) may write data to other systems using the XMLFormatter. This provides a simple, standard, inter-change format that can be parsed and processed on a variety of systems.
Some Handlers may wish to pass LogRecord objects over RMI. The LogRecord class is therefore serializable. However there is a problem in how to deal with the LogRecord parameters. Some parameters may not be serializable and other parameters may have been designed to serialize much more state than is required for logging. To avoid these problems the LogRecord class has a custom writeObject method that converts the parameters to strings (using Object.toString()) before writing them out. See the LogRecord API Specification for details.
Most of the logging classes are not intended to be serializable. Both Loggers and Handlers are stateful classes that are tied into a specific virtual machine. In this respect they are analogous to the java.io classes, which are also not serializable.

2.0 Examples

2.1 Simple Use

The following is a small program that performs logging using the default configuration.
This program relies on the root handlers that were established by the LogManager based on the configuration file. It creates its own Logger object and then makes calls to that Logger object to report various events.
package com.wombat;
import java.util.logging.*;

public class Nose{
    // Obtain a suitable logger.
    private static Logger logger = Logger.getLogger("com.wombat.nose");
    public static void main(String argv[]) {
        // Log a FINE tracing message
        logger.fine("doing stuff");
        try{
            Wombat.sneeze();
        } catch (Exception ex) {
            // Log the exception
            logger.log(Level.WARNING, "trouble sneezing", ex);
        }
        logger.fine("done");
    }
}

2.2 Changing the Configuration

Here's a small program that dynamically adjusts the logging configuration to send output to a specific file and to get lots of information on wombats. The pattern "%t" means the system temporary directory.
public static void main(String[] args) {
    Handler fh = new FileHandler("%t/wombat.log");
    Logger.getLogger("").addHandler(fh);
    Logger.getLogger("com.wombat").setLevel(Level.FINEST);
    ...
}

2.3 Simple Use, Ignoring Global Configuration

Here's a small program that sets up its own logging Handler and ignores the global configuration.
package com.wombat;

import java.util.logging.*;

public class Nose {
    private static Logger logger = Logger.getLogger("com.wombat.nose");
    private static FileHandler fh = new FileHandler("mylog.txt");
    public static void main(String argv[]) {
        // Send logger output to our FileHandler.
        logger.addHandler(fh);
        // Request that every detail gets logged.
        logger.setLevel(Level.ALL);
        // Log a simple INFO message.
        logger.info("doing stuff");
        try {
            Wombat.sneeze();
        } catch (Exception ex) {
            logger.log(Level.WARNING, "trouble sneezing", ex);
        }
        logger.fine("done");
    }
}

2.4 Sample XML Output

Here's a small sample of what some XMLFormatter XML output looks like:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
<log>
<record>
  <date>2000-08-23 19:21:05</date>
  <millis>967083665789</millis>
  <sequence>1256</sequence>
  <logger>kgh.test.fred</logger>
  <level>INFO</level>
  <class>kgh.test.XMLTest</class>
  <method>writeLog</method>
  <thread>10</thread>
  <message>Hello world!</message>
</record>
</log>

3.0 Appendix A: DTD for XMLFormatter Output



<!-- DTD used by the java.util.logging.XMLFormatter -->
<!-- This provides an XML formatted log message. -->

<!-- The document type is "log" which consists of a sequence
of record elements -->
<!ELEMENT log (record*)>

<!-- Each logging call is described by a record element. -->
<!ELEMENT record (date, millis, sequence, logger?, level,
class?, method?, thread?, message, key?, catalog?, param*, exception?)>

<!-- Date and time when LogRecord was created in ISO 8601 format -->
<!ELEMENT date (#PCDATA)>

<!-- Time when LogRecord was created in milliseconds since
midnight January 1st, 1970, UTC. -->
<!ELEMENT millis (#PCDATA)>

<!-- Unique sequence number within source VM. -->
<!ELEMENT sequence (#PCDATA)>

<!-- Name of source Logger object. -->
<!ELEMENT logger (#PCDATA)>

<!-- Logging level, may be either one of the constant
names from java.util.logging.Level (such as "SEVERE"
or "WARNING") or an integer value such as "20". -->
<!ELEMENT level (#PCDATA)>

<!-- Fully qualified name of class that issued
logging call, e.g. "javax.marsupial.Wombat". -->
<!ELEMENT class (#PCDATA)>

<!-- Name of method that issued logging call.
It may be either an unqualified method name such as
"fred" or it may include argument type information
in parenthesis, for example "fred(int,String)". -->
<!ELEMENT method (#PCDATA)>

<!-- Integer thread ID. -->
<!ELEMENT thread (#PCDATA)>

<!-- The message element contains the text string of a log message. -->
<!ELEMENT message (#PCDATA)>

<!-- If the message string was localized, the key element provides
the original localization message key. -->
<!ELEMENT key (#PCDATA)>

<!-- If the message string was localized, the catalog element provides
the logger's localization resource bundle name. -->
<!ELEMENT catalog (#PCDATA)>

<!-- If the message string was localized, each of the param elements
provides the String value (obtained using Object.toString())
of the corresponding LogRecord parameter. -->
<!ELEMENT param (#PCDATA)>

<!-- An exception consists of an optional message string followed
by a series of StackFrames. Exception elements are used
for Java exceptions and other java Throwables. -->
<!ELEMENT exception (message?, frame+)>

<!-- A frame describes one line in a Throwable backtrace. -->
<!ELEMENT frame (class, method, line?)>

<!-- an integer line number within a class's source file. -->
<!ELEMENT line (#PCDATA)>

Monday, September 23, 2013

Database Performance Monitoring


Database Availability

Enterprise application performance is majorly dependent on database performance hence, it is vital for companies to afford a constant and reliable way to access and monitor database performance in relation with dependent applications. This in turn makes it important for system administrators to know the status of their databases. An efficient database can provide the following benefits to an enterprise:
  • Maximum immunity from undetected database failures.
  • Provide a real-time visibility into multi-vendor database environment with all vital parameters required to ensure higher service availability.
Before you initiate database monitoring, you should first ask the below questions to yourself
  • Are my clients configured properly to work with the data servers?
  • Is my database application restricted by the resource of my clients?
  • Do my client applications have insufficiencies in their code?
  • Which clients, users, applications, or Structured Query Language (SQL) statements use the most resources?
  • Is my network capacity sufficient?
  • Which application consumes most of my network?

Database Monitoring Capabilities of ManageEngine IT360

ManageEngine IT360 provides complete monitoring of database servers and databases - including availability, database and table sizes, cache ratios, and other key metrics. It allows database monitoring and automated alerts for the most common types of database servers. It uses an agentless monitoring technology to execute database queries and collects performance statistics to send alarms, if the database performance crosses the set threshold. With out-of-the box reports, DBAs can plan inventory requirements and troubleshoot incidents quickly.
To summarize, IT360 does the following with respect to database monitoring:
  • Monitors a heterogeneous database server environment that may consist of Oracle database, MySQL, Microsoft SQL, Sybase, IBM DB2, PostgreSQL and Memcached databases.
  • Out-of-the box reports, DBAs can plan inventory requirements and troubleshoot incidents quickly.
  • Keep tab on the database size, buffer cache size, database connection time.

Database Types Supported by IT360

IT360 provides out-of-the-box support monitoring for the following databases:

1. Oracle Management:

The Oracle database management capability helps database administrators to seamlessly detect, diagnose and resolve Oracle performance issues and monitor Oracle 24X7. The database server monitoring tool is agentless monitoring software that provides out-of-the-box performance metrics and helps you visualize the health and availability of an Oracle Database server farm. Database administrators can login to the web client and visualize the status and Oracle performance metrics.
Monitored Parameters:
  • Response Time
  • User Activity
  • Status
  • Table Space Usage
  • Table Space Details
  • Table Space Status
  • SGA Performance
  • SGA Details
  • SGA Status
  • Performance of Data Files
  • Session Details
  • Session Waits
  • Buffer Gets
  • Disk Reads
  • Rollback Segment
  • Queries, Locks and more

2. MySQL Management:

IT360`s MySQL Server monitoring capability helps database administrators monitor the performance and availability of a MySQL database farm. It is an agentless monitoring solution that provides out-of-the-box performance metrics for ensuring the MySQL database server runs efficiently.
Monitored Parameters:
  • Connection Time
  • Request Statistics
  • Connection Statistics
  • Thread Details
  • Table Lock Statistics
  • Key efficiency
  • Query Hit Ratio
  • Query Cache Hit-rate
  • Replication Details, etc.

3. Sybase Management:

IT360`s Sybase monitoring feature monitors the availability and performance of Sybase ASE database servers. IT360 connects to the database source, monitor various metrics and also notifies through alarms, if the performance metrics are beyond a given threshold./p>
Monitored Parameters:
  • Connection Statistics
  • Memory Usage
  • DB Information
  • Current Statistics
  • Current Process
  • CPU, memory, disk utilization, etc.

4. MS SQL Management:

The SQL Server Monitoring software capability of IT360 helps database administrators monitor the performance and availability of production databases. It is an agentless monitoring solution that provides out-of-the-box performance metrics for ensuring the SQL Server runs efficiently.
Monitored Parameters:
  • Memory Usage
  • Buffer Manager Statistics
  • Connection Statistics
  • Cache Details
  • Lock Details
  • SQL Statistics
  • Latch Details
  • Access Method Details
  • Database Details
  • Scheduled Jobs

5. IBM DB2 Management

IT360`s DB2 Server Monitoring capability helps database administrators (DBAs) monitor the availability and performance of production databases. It is an agentless database monitoring software that provides out-of-the-box performance metrics for ensuring the IBM DB2 database server runs efficiently.
Monitored Parameters:
  • Connection Statistics
  • Agents Statistics
  • DB Information
  • Transaction Statistics
  • Cache Performance
  • Buffer Statistics
  • TableSpace Status

6. PostgreSQL Management:

PostgreSQL is one of the most widely used object relational database management systems (ORDBMS) in the world today. Since database servers such as PostgreSQL are at the core of many business-critical services, any failure or performance degradation of PostgreSQL can impact multiple services that depend on it.
ManageEngine IT360 offers comprehensive PostgreSQL monitoring capabilities that enable database administrators (DBA's) proactively monitor the availability and performance of business-critical PostgreSQL database servers. The monitoring is done continuously, on a 24x7 basis, and it ensures that any deviation in the normal functioning of PostgreSQL database is brought to the DBA's notice immediately.
Monitored Parameters:
  • CPU, memory and disk utilization
  • Buffer statistics
  • Connection statistics
  • Disk usage details
  • Index scan details
  • Query statistics
  • Lock statistics
  • Table level scan details
  • Transaction details

7. Memcached Management:

Memcached is a distributed memory object caching system intended to speed up dynamic web applications. It provides an ideal platform for accelerating the performance of web applications in the cloud. ManageEngine IT360 provides a comprehensive solution to proactively monitor the health and performance of business-critical Memcached servers. This allows IT administrators to identify and resolve problems with caching systems before they can have an adverse impact on the business.
Monitored Parameters:
  • Availability, Health & Cache Hit Ratio: Gives an overall representation of the current availability, health and cache hit ratio of the memcached server.
  • CPU, Memory Utilization, and Request Metrics: Allows you to check if CPUs are running at full capacity or if they are being under-utilized. Keep track of metrics such as user CPU, System CPU, cached hits/min, cached misses/min, number of retrieval and storage requests per minute, etc.
  • Network Traffic, Connections, Transaction, and Cached Items: Monitor the network traffic with metrics such as Bytes received / sent per minute. Other performance metrics include Transaction details, response time, number of open connections, items cached and evictions

Benefits of End-to-end Database Monitoring:

Implementing effective database monitoring with IT360 offers the following benefits:
  • Increased application availability
  • Increased database performance
  • Fast detection of database outages, failures, and table corruption
  • Predictive analysis of storage requirements and index performance
  • Ability to detect and resolve performance problems, not only in the data servers but in the entire database application system.
  • Allow you to tell which part in the database application system causes the performance problem: client, application server, network, or data server.
  • Detects bottlenecks that you could hardly identify before.

String Functions (Visual Basic)

The following table lists the functions that Visual Basic provides to search and manipulate strings.

.NET Framework method
Description
Returns an Integer value representing the character code corresponding to a character.
Returns the character associated with the specified character code.
Returns a zero-based array containing a subset of a String array based on specified filter criteria.
Returns a string formatted according to instructions contained in a format String expression.
Returns an expression formatted as a currency value using the currency symbol defined in the system control panel.
Returns a string expression representing a date/time value.
Returns an expression formatted as a number.
Returns an expression formatted as a percentage (that is, multiplied by 100) with a trailing % character.
Returns an integer specifying the start position of the first occurrence of one string within another.
Returns the position of the first occurrence of one string within another, starting from the right side of the string.
Returns a string created by joining a number of substrings contained in an array.
Returns a string or character converted to lowercase.
Returns a string containing a specified number of characters from the left side of a string.
Returns an integer that contains the number of characters in a string.
Returns a left-aligned string containing the specified string adjusted to the specified length.
Returns a string containing a copy of a specified string with no leading spaces.
Returns a string containing a specified number of characters from a string.
Returns a string in which a specified substring has been replaced with another substring a specified number of times.
Returns a string containing a specified number of characters from the right side of a string.
Returns a right-aligned string containing the specified string adjusted to the specified length.
Returns a string containing a copy of a specified string with no trailing spaces.
Returns a string consisting of the specified number of spaces.
Returns a zero-based, one-dimensional array containing a specified number of substrings.
Returns -1, 0, or 1, based on the result of a string comparison.
Returns a string converted as specified.
Returns a string or object consisting of the specified character repeated the specified number of times.
Returns a string in which the character order of a specified string is reversed.
Returns a string containing a copy of a specified string with no leading or trailing spaces.
Returns a string or character containing the specified string converted to uppercase.
You can use the Option Compare statement to set whether strings are compared using a case-insensitive text sort order determined by your system's locale (Text) or by the internal binary representations of the characters (Binary). The default text comparison method is Binary.

This example uses the UCase function to return an uppercase version of a string.
' String to convert. 
Dim LowerCase As String = "Hello World 1234" 
' Returns "HELLO WORLD 1234". 
Dim UpperCase As String = UCase(LowerCase)
This example uses the LTrim function to strip leading spaces and the RTrim function to strip trailing spaces from a string variable. It uses the Trim function to strip both types of spaces.
' Initializes string. 
Dim TestString As String = "  <-Trim->  " 
Dim TrimString As String 
' Returns "<-Trim->  ".
TrimString = LTrim(TestString)
' Returns "  <-Trim->".
TrimString = RTrim(TestString)
' Returns "<-Trim->".
TrimString = LTrim(RTrim(TestString))
' Using the Trim function alone achieves the same result. 
' Returns "<-Trim->".
TrimString = Trim(TestString)
This example uses the Mid function to return a specified number of characters from a string.
' Creates text string. 
Dim TestString As String = "Mid Function Demo" 
' Returns "Mid". 
Dim FirstWord As String = Mid(TestString, 1, 3)
' Returns "Demo". 
Dim LastWord As String = Mid(TestString, 14, 4)
' Returns "Function Demo". 
Dim MidWords As String = Mid(TestString, 5)
This example uses Len to return the number of characters in a string.
' Initializes variable. 
Dim TestString As String = "Hello World" 
' Returns 11. 
Dim TestLen As Integer = Len(TestString)
This example uses the InStr function to return the position of the first occurrence of one string within another.
' String to search in. 
Dim SearchString As String = "XXpXXpXXPXXP" 
' Search for "P". 
Dim SearchChar As String = "P" 

Dim TestPos As Integer 
' A textual comparison starting at position 4. Returns 6.
TestPos = InStr(4, SearchString, SearchChar, CompareMethod.Text)

' A binary comparison starting at position 1. Returns 9.
TestPos = InStr(1, SearchString, SearchChar, CompareMethod.Binary)

' If Option Compare is not set, or set to Binary, return 9. 
' If Option Compare is set to Text, returns 3.
TestPos = InStr(SearchString, SearchChar)

' Returns 0.
TestPos = InStr(1, SearchString, "W")
This example shows various uses of the Format function to format values using both String formats and user-defined formats. For the date separator (/), time separator (:), and the AM/PM indicators (t and tt), the actual formatted output displayed by your system depends on the locale settings the code is using. When times and dates are displayed in the development environment, the short time format and short date format of the code locale are used.
Note Note
For locales that use a 24-hour clock, the AM/PM indicators (t and tt) display nothing.
Dim TestDateTime As Date = #1/27/2001 5:04:23 PM#
Dim TestStr As String 
' Returns current system time in the system-defined long time format.
TestStr = Format(Now(), "Long Time")
' Returns current system date in the system-defined long date format.
TestStr = Format(Now(), "Long Date")
' Also returns current system date in the system-defined long date  
' format, using the single letter code for the format.
TestStr = Format(Now(), "D")

' Returns the value of TestDateTime in user-defined date/time formats. 
' Returns "5:4:23".
TestStr = Format(TestDateTime, "h:m:s")
' Returns "05:04:23 PM".
TestStr = Format(TestDateTime, "hh:mm:ss tt")
' Returns "Saturday, Jan 27 2001".
TestStr = Format(TestDateTime, "dddd, MMM d yyyy")
' Returns "17:04:23".
TestStr = Format(TestDateTime, "HH:mm:ss")
' Returns "23".
TestStr = Format(23)

' User-defined numeric formats. 
' Returns "5,459.40".
TestStr = Format(5459.4, "##,##0.00")
' Returns "334.90".
TestStr = Format(334.9, "###0.00")
' Returns "500.00%".
TestStr = Format(5, "0.00%")