5 Improving Unified Inventory Management Performance

This chapter describes ways to improve Oracle Communications Unified Inventory Management (UIM) performance.

Improving Performance of Searches That Include Characteristics

You can add characteristics to search criteria in UIM. For example, if your inventory includes Logical Device entities based on specifications that have a characteristic called Service Provider Name, you can add that characteristic to a logical device search. See UIM Concepts and UIM online Help for more information about adding characteristics to searches.

If you regularly include four or more characteristics in an entity search such as Telephone Number, Logical Device, or Place, you can change properties in the system-config.properties file to improve performance. You must also run scripts to support the database changes for this feature.

Caution:

Once you run these database scripts for the performance improvement, you cannot revert the system changes back to its original state. Also, if you enable this feature for individual entities, the SQL script content must be altered to address only those entities.

Making Changes to the system-config.properties File

You can change the setting for all entity types or for a selection of entity types.

To improve characteristic search performance and enable this feature:

  1. Navigate to UIM_Home/config.

  2. Open the system-config.properties file.

  3. Set the inv.extendedCharSearchEnabled property to true.

  4. Do one of the following:

    • To enable the extended search feature for all entity types, set the inv.extendedCharSearchEnabledForAll property to true.

    • To enable the extended search feature for a selection of entity types, set the inv.extendedCharSearchEnabledForAll property to false and add sequentially numbered properties for the entities you want. For example:

      inv.extendedCharSearchEnabledEntities.1=TelephoneNumber
      inv.extendedCharSearchEnabledEntities.2=LogicalDevice
      inv.extendedCharSearchEnabledEntities.3=GeographicPlace
      

      Note:

      If you chose the option to specify one or more specific entities, some scripts need to be altered to apply changes only to the desired entities.
  5. Save and close the system-config.properties file.

Making Changes to the Database Schema

To improve characteristic search performance, you must perform the following database changes:

  1. Back up the UIM database. See "Database Backup and Restore" for more information.

  2. Ensure that you have database modification level privileges.

  3. Create two temporary directories, temp_dir and temp_dir_schema.

  4. Download the UIM software for your operating system from the Oracle software delivery website and save it to temp_dir.

  5. From the downloaded ZIP file, extract the ora_uim_dbtools.jar file into temp_dir_schema.

  6. In the temp_dir_schema directory, open the ora_uim_dbtools.jar file and extract all the contents into temp_dir_schema. You can ignore the additional files in this jar. They are used in the upgrade process of the database.

  7. The scripts for this feature default to enabling this feature for all entities. If you provided specific entities in the system-config.properties file, such as Logical Devices, you need to evaluate the contents of the following scripts and alter them to only apply to the entities you specified:

    • temp_dir_schema/sqlscripts/B23314430.sql

    • temp_dir_schema/sqlscripts/B23318206.sql

    • temp_dir_schema/sqlscripts/B23541213.sql

  8. Open a command line window and login to SQL*Plus for the desired database. Run the following SQL scripts providing the full path of the files. For example, use the @scriptFileName command where scriptFileName is the full path and name of the file.

    • temp_dir_schema/procs/CREATE_CHAR_EXT_TABLE.sql

    • temp_dir_schema/sqlscripts/B23314430.sql

    • temp_dir_schema/sqlscripts/B23318206.sql

    • temp_dir_schema/sqlscripts/B23541213.sql

  9. (Optional) To verify that these scripts ran successfully, you can verify that the UIM schema includes the following elements:

    • A table named CHARACTERTICS_TABLE_MAPPING

    • A procedure named CREATE_CHAR_EXT_TABLE

    • A trigger named ADD_CHAR_COLUMN_TRIGGER

Verifying Areas When this Feature is Enabled

There are a few area that you need to verify if this feature is enabled. Ensure you review the following areas if you reference characteristic tables directly:

  • Determine if there is any impact to custom database queries in custom code such as cartridges and web services.

  • Determine if there is any impact to areas where there is direct database access.

Configuring a Shared Index Directory

For muiltiserver deployment environments (including configurations for multiple single servers, administration/managed servers, and administration/clustered servers), you must deploy a common shared storage, such as a storage area network, for all UIM WebLogic application servers. Without a storage area network, results may vary on different servers because some servers may have different domains.

Changing the Logging Level

UIM is using log4j for the logging services. For details on log4j, refer to:

https://logging.apache.org/log4j/2.x/manual/

The logging level is defined in the loggingconfig.xml file.

The file is located in UIM_Home/config.

Appender Configuration

Three default appenders are supplied by default:

  • Stdout

    Console Appender - used to log messages to the standard output

  • rollingFile

    Rolling File Appender - used to log messages to the rolling file
    UIM_Home/logs/WebLogic_Name_uim.log

  • rebuildRollingFile

    Rolling File Appender - used to log the rebuild topology messages to the rolling file UIM_Home/logs/WebLogic_Name_uim_rebuild.log

The following is an example of the layout of the appender log message:

%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%X{userName}] ["%X{requestSession}] [%c{1}] %m%n

where:

  • %d{yyyy-MM-dd HH:mm:ss,SSS}

    is the Date in the format yyyy-MM-dd HH:mm:ss,SSS

  • %-5p

    is the priority of the logging event

  • %X{userName}

    is the user name associated with the thread that generated the logging event

  • %X{requestSession}

    is the session ID associated with the thread that generated the logging event. Note that the requestSession is not included by default. The layout value needs to be modified to add the requestSession.

  • %c{1}

    is the category of the logging event with the precision specifier (ie: the decimal constant in brackets). The precision specifier corresponds to the right most components of the category name. For example, for the category name oracle.communications.inventory.techpack.video.impl.VideoManagerImpl the pattern %c{1} outputs VideoManagerImpl.

  • %m

    is the application supplied message associated with the logging event. For example: [INV-801005] No subscriber is associated to the service.

  • %n

    is the platform dependent line separator character or characters

For all parameters, see:

https://logging.apache.org/log4j/2.0/log4j-core/apidocs/org/apache/logging/log4j/core/layout/PatternLayout.html

This is a localized logging output message example:

2016-01-03 15:20:22,087 ERROR [uimuser1] [VideoManagerImpl] [INV-801005] No subscriber is associated to the service.

It is possible to filter the logging messages by the UIM user. To enable the UIM user filter, we need to add the following element to the default appender:

<ContextMapFilter onMatch="ACCEPT" onMismatch="NEUTRAL" operator="or">
    <KeyValuePair key="userName" value=""/>
</ContextMapFilter>

The filter is already available, but commented out, in the default appender. To enable the UIM user filter, we can uncomment the filter and add a value to the userName parameter. For example:

<ContextMapFilter onMatch="ACCEPT" onMismatch="NEUTRAL" operator="or">
    <KeyValuePair key="userName" value="Justin"/>
</ContextMapFilter>
 

We can list multiple users in the filter by repeating the param element. For example:

<ContextMapFilter onMatch="ACCEPT" onMismatch="NEUTRAL" operator="or">
   <KeyValuePair key="userName" value="Lili-Mai"/>
   <KeyValuePair key="userName" value="Marilou"/>
   <KeyValuePair key="userName" value="Ramesh"/>
</ContextMapFilter>

Logger Configuration

By default the root logger is set to error and logs the messages to the standard output and the UIM rolling file:

<Root level="error">
    <AppenderRef ref="rollingFile"/>
</Root>
 

Logger levels can be configured. The set of possible levels are (in the order message logging rank):

  • all: Lowest possible rank and is intended to turn on all logging

  • trace: Finer-grained informational events than the debug

  • debug: Fine-grained informational events that are most useful to debug an application

  • info: Informational messages that highlight the progress of the application at coarse-grained level

  • warn: Potentially harmful situations

  • error: Error events that might still allow the application to continue running

  • fatal: Very severe error events that presumably lead the application to abort

  • off: Highest possible rank and is intended to turn off logging

Several application loggers are also pre-configured in the loggingconfig.xml file. Additional ones may be added as needed. For example, if the root logger level is set to error, but we would like to set a UIM technology pack package logger level to debug, then we would add the following to the loggingconfig.xml:

<Logger name="oracle.communications.inventory.techpack" additivity="false"
    level="debug">
    <AppenderRef ref="rollingFile"/>
</Logger>

Note:

Appender Additivity

The output of a log statement of logger C goes to all the appenders in C and its ancestors. This is the meaning of the term appender additivity.

However, if an ancestor of logger C, say P, has the additivity flag set to false, then C's output is directed to all the appenders in C and its ancestors up to and including P but not the appenders in any of the ancestors of P.

Loggers have their additivity flag set to true by default.

Source: http://logging.apache.org/log4j/2.x/manual/index.html

Connecting debugger to UIM

Tip:

To enable debug logging for the UIM Ruleset Extension Point Framework, you can add the following to the loggingconfig.xml file:
<Logger name="RuleSetLogger" additivity="false" level="debug">
    <AppenderRef ref="stdout"/>
    <AppenderRef ref="rollingFile"/>
</Logger>
 

If you add the above, then you can comment out or remove the logger for oracle.communications.inventory.extensibility.rules.impl. It'll become redundant because debug level is enable on its parent package.

If we need to connect a debugger to the UIM WebLogic server, then we would need to edit the file Domain_Home/bin/setUIMEnv.sh and add the following string to the USER_MEM_ARGS variable:

"-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=1234,server=y,suspend=n -Djava.compiler=NONE"

Example 5-1 USER_MEM_ARGS Before the Change

USER_MEM_ARGS="-Xms1024m -Xmx3000m -Xmn850m -XX:MaxPermSize=1024m -Xrs -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"

Example 5-2 USER_MEM_ARGS After the Change

USER_MEM_ARGS="-Xms1024m -Xmx3000m -Xmn850m -XX:MaxPermSize=1024m -Xrs -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=1234,server=y,suspend=n -Djava.compiler=NONE"

You can adjust the port by changing address=1234.

Enabling SQL and Other EclipseLink Logging

To enable SQL and other EclipseLink logging, perform the following:

  1. Open a command window.

  2. Navigate to the MW_Home/oracle_common/common/bin directory.

  3. Start the WebLogic Scripting Tool (WLST) using the following command:

    ./wlst.sh

  4. Connect to the server on which you want to change the logging level, use the following command:

    connect(userid,password,'t3://hostname:port')

  5. Go to Custom settings using the following command:

    custom()

    Note:

    'custom()' can take a while to execute, approximately 5 minutes or more.
  6. Go to TopLink using the following command:

    cd('TopLink')

  7. List the sessions at this level using the following command:

    ls()

    Note:

    The following is an example of a TopLink session:

    'TopLink:Name=Session(file/share/uimcluster/domains/clusterUim
    720b1357/servers/uim_ms1/tmp/_WL_user/
    oracle.communications.inventory/b0t675/APP-INF/lib/uim-entities.jar_default'

  8. Copy the session and go to that session using the following command:

    cd('session')

  9. Change the EclipseLink logging level using the following command:

    set('CurrentEclipseLinkLogLevel',newLevel)

    EclipseLink provides nine logging levels, refer to Table 5-1 for a list of the different logging levels and a brief description of each.

    Table 5-1 EclipseLink Logging Levels

    Level Description

    OFF

    This setting disables the generation of the log output. You may want to set logging to OFF during production to avoid the overhead of logging.

    SEVERE

    This level enables reporting of failure cases only. Usually, if the failure occurs, the application stops.

    WARNING

    This level enables logging of issues that have a potential to cause problems. For example, a setting that is picked by the application and not by the user.

    INFO

    This level enables the standard output. The contents of this output is very limited. It is the default logging level if a logging level is not set.

    CONFIG

    This level enables logging of such configuration details as your database login information and some metadata information. You may want to use the CONFIG log level at deployment time.

    FINE

    This level enables logging of the first level of the debugging information and SQL. You may want to use this log level during debugging and testing, but not at production.

    FINER

    This level enables logging of more debugging information than the FINE setting. For example, the transaction information is logged at this level. You may want to use this log level during debugging and testing, but not at production.

    FINEST

    This level enables logging of more debugging information than the FINER setting, such as a very detailed information about certain features (for example, sequencing). You may want to use this log level during debugging and testing, but not at production.

    ALL

    This level currently logs at the same level as FINEST.


  10. To enable SQL logging use the following command:

    set('CurrentEclipseLinkLogLevel','FINE')

Updating the System Configuration Files

You use files to control many aspects of UIM performance and configuration. These system configuration files are located in UIM_Home/config. Each file includes properties for which you can set values.

This section includes reference information and examples for the following configuration files:

Controlling Automatic Inventory Reloading

You use the config-reload.properties file to control automatic inventory reloading.

Table 5-2 lists and describes the properties in the file.

Table 5-2 Properties in the config-reload.properties file

Property Description

inventory.auto.reload.enabled

This property enables and disable the automatic reloading of system configuration properties.

The default value is true. For example:

inventory.auto.reload.enabled=true

inventory.auto.reload.interval

This property sets the reload interval in milliseconds.

The default value is 3000 milliseconds. For example:

inventory.auto.reload.interval=3000

Controlling Entity Consumption

You use the consumer.properties file to control entity consumption. The tn.* properties pertain to the telephone number aging process and the telephone number lifecycle process.

Table 5-3 lists and describes the properties in the consumer.properties file.

Table 5-3 Properties in the consumer.properties file

Property Description

deleteReservation.batchsize

This property controls the number of expired reservation records to be deleted for each execution of the Cleanup Expired Reservation timer process.

The default value is 1000 records. For example:

deleteReservation.batchSize=1000

tn.defaultDisconnectedStateExpiry

This property controls the expiration period for transitioning telephone number assignment states from Disconnected to Transitional state.

The default value is 30 days. For example:

tn.defaultDisconnectedStateExpiry=30

tn.enableTNDeletion

This property controls whether telephone numbers that are not consumed but were previously assigned to services can be deleted. When the property is absent (the default) or set to false, these telephone numbers cannot be deleted. When set to true, they can be deleted.

For example:

tn.enableTNDeletion= false

tn.defaultTransitionalStateExpiry

This property controls the expiration period for transitioning telephone number assignment states from Transitional to Unassigned.

The default value is 30 days. For example:

tn.defaultTransitionalStateExpiry=30

tn.portabilityCharacteristicName

This property specifies the telephone number characteristic that is used in portability logic.

The default value is tnType. For example:

tn.portabilityCharacteristicName=tnType

tn.recallTNSearchResultsLimit

This property controls the number of telephone number assignment records selected for the TN Aging and Recall Timer process.

The default value is 500. For example:

tn.recallTNSearchResultsLimit=500

tn.winbackCharacteristicName

This property specifies the telephone number characteristic used in winback (stealback) logic.

The default value is winback. For example:

tn.winbackCharacteristicName=winback

tn.defaultTransitionalStateExpiryForSnapback

This property specifies the aging period (for Transitional status) for a Ported telephone number in a snapback scenario. This value is the number of days it will remain in Transitional status before moving to Unassigned.

The default value is 0. For example:

tn.defaultTransitionalStateExpiryForSnapback=0

Controlling Reference Properties

You use the reference.properties file to control referenced properties.

Table 5-4 lists and describes the properties in the file. The properties are listed in order by entity type.

Table 5-4 Properties in the reference. properties file

Property Description

AllowCancelReferencedBusinessInteraction

This property controls the cancellation of referenced business interactions.

The default value is true. For example:

AllowCancelReferencedBusinessInteraction=true

AllowDeactivateReferencedCustomNetworkAdrress

This property controls the deactivation of referenced custom network addresses.

The default value is false. For example:

AllowDeactivateReferencedCustomNetworkAddress=false

AllowDeactivateReferencedCustomObject

This property controls the deactivation of referenced custom object property.

The default value is false. For example:

AllowDeactivateReferencedCustomObject=false

AllowDeactivateReferencedEquipment

This property controls the deactivation of referenced equipment.

The default value is false. For example:

AllowDeactivateReferencedEquipment=false

AllowedDeactivateReferencedLogialDevice

This property controls the deactivation of referenced logical devices.

The default value is false. For example:

AllowDeactivateReferencedLogicalDevice=false

AllowDeactivateReferencedLogialDeviceAccount

This property controls the deactivation of referenced logical device accounts.

The default value is false. For example:

AllowDeactivateReferencedLogicalDeviceAccount=false

AllowDeactivateReferencedNetwork

This property controls the deactivation of referenced networks.

The default value is false. For example:

AllowDeactivateReferencedNetwork=false

AllowDeactivateReferencedPhysicalDevice

This property controls the deactivation of referenced physical devices.

The default value is false. For example:

AllowDeactivateReferencedPhysicalDevice=false

AllowDeactivateReferencedPipe

This property controls the deactivation of referenced pipes.

The default value is false. For example:

AllowDeactivateReferencedPipe=false

AllowSuspendReferencedService

This property controls the suspension of referenced services.

The default value is true. For example:

AllowSuspendReferencedService=true

AllowDisconnectReferencedService

This property controls the disconnect of referenced services.

The default value is true. For example:

AllowDisconnectReferencedService=true

AllowCancelReferencedService

This property controls the cancellation of referenced services.

The default value is true. For example:

AllowCancelReferencedService=true

AllowDeactivateReferencedTelephoneNumber

This property controls the deactivation of referenced telephone numbers.

The default value is false. For example:

AllowDeactivateReferencedTelephoneNumber=false

Controlling the Work Manager

You use the ruleProcess.properties file to control Work Manager. Work Manager is used to compile rulesets during cartridge compilation.

Table 5-5 lists and describes the properties in the file.

Table 5-5 Properties in the ruleProcess.properties File

Property Description

WORK_MANAGER_JNDI

This property applies only to WebLogic. For example:

WORK_MANAGER_JNDI=java:comp/env/wm/ruleWorkManager

timeOutSec

This property sets the timeout in WorkManager during cartridge install.

The default value is 10000 milliseconds. For example:

timeOutSec=10000

Setting System Properties

You use the system-config.properties file to control system configuration properties.

Table 5-6 lists the system configuration properties in alphabetical order. Some related properties are grouped together out of order.

Table 5-6 Properties in the system-config.properties File

Property Description

billofmaterial.currency

This property determines the currency that is used in bills of material (BOMs) generated from engineering work orders, business interactions, and projects. The default values is USD (US dollar). Change the value to another ISO-standard currency abbreviation to specify that currency. For example, to use the Euro in BOMs:

billofmaterial.currency=EUR

See UIM Concepts for more information about BOMs.

businessInteraction.allowCancelWithCompletedChild

This property controls whether a business interaction can be cancelled if it has completed children. For example:

businessInteraction.allowCancelWithCompletedChild=false

businessInteraction.allowCancelWithCompletedConfiguration

This property controls whether a business interaction can be cancelled if it is associated to a completed configuration version. For example:

businessInteraction.allowCancelWithCompletedConfiguration=false

cmws.asynch.mode

This property sets the cartridge deployment mode to either synchronous or asynchronous.

The default value is true (asynchronous). For example:

cmws.asynch.mode=true

createIPAddress.flushSize

This property controls the number of IP Address entities to create before flushing transactions. Do not set the value of the property to a value greater than 500.

For example:

createIPAddress.flushSize=500

createIPSubnets.flushSize

This property controls the number of IP Subnet entities to create before flushing transactions. Do not set the value of the property to a value greater than 500.

For example:

createIPSubnets.flushSize=500

createIPAddress.maxLimit

This property controls the number of IP Address entities to create in one transaction.

For example:

createIPAddress.maxLimit=20000

createIPSubnets.maxLimit

This property controls the number of IP Subnet entities to create in one transaction.

For example:

createIPSubnets.maxLimit=20000

createTN.flushSize

This property controls the number of telephone number entities to create before calling the flush transaction. Do not set the createTN.flushSize property to a value greater than 500.

The default value is 500. For example:

createTN.flushSize=500

db.sequence.cacheSize

This property sets the cache size for Oracle Sequence used for Auto ID generation.

The default value is 75000. For example:

db.sequence.cacheSize=75000

default.connectivity.color

default.gap.color

default.crossconnect.color

default.jumper.color

default.pipe.color

selected.connectivity.patchcolor

These properties control the colors used in the connectivity schematic view. Colors are expressed in standard RGB values. For example:

default.connectivity.color=0,0,153
default.gap.color=165,165,165
default.crossconnect.color=0,204,255
default.jumper.color=84,141,212
default.pipe.color=165,165,165
selected.connectivity.patchcolor=0,175,0

eLocation.defaultCountry

This property is used to select the default country in the Country drop-down list while creating a property location. You set the value to one of the two-character ISO country abbreviations listed in the country.properties file. For example, the following entry defines the default country as the US:

eLocation.defaultCountry=US

For detailed information about eLocation configuration, see UIM Developer's Guide.

eLocation.URL

This property defines the eLocation URL The default value is:

eLocation.URL=http://eLocation.oracle.com/eLocation/lbs

eLocation.matchMode

This property determines the eLocation match mode. The default value is:

eLocation.matchMode=Default

See the eLocation documentation for more information about match mode.

eLocation.http.proxyExists

eLocation.http.proxyHost

eLocation.http.proxyPort

eLocation.http.proxyUser

eLocation.http.proxyPassword

UIM allows for a proxy server to be used to connect to the Oracle eLocation Service used for displaying base maps in UIM.

If you connect to the eLocation through a proxy server, set eLocation.http.proxyExists to true, then set the other values based on the proxy server you are using. For example:

eLocation.http.proxyExists=true

eLocation.http.proxyHost=www-proxy.xyz.sample.com

eLocation.http.proxyPort=80

eLocation.http.proxyUser=user

eLocation.http.proxyPassword=password

inv.extendedCharSearchEnabled

inv.extendedCharSearchEnabledForAll

inv.extendedCharSearchEnabledEntities

These properties control the extended characteristic search feature. This feature improves performance for searches for entities that include characteristics.

See "Improving Performance of Searches That Include Characteristics" for more information.

ip.defaultTransitionalStateExpiry

This property controls the number of days IP resources should be in the transition state.

The default value is 30. For example:

ip.defaultTransitionalStateExpiry=30

lockPolicy.defaultRowLockExpirationDuration

This property sets the default row lock expiration duration for the entity. The value is defined in milli seconds. This value should be defined as that it should be less than or equal to transaction time out.

The default value is 30000. For example:

lockPolicy.defaultRowLockExpirationDuration=30000

lockPolicy.MaxSupportedRowLocks

This property sets the default maximum number of entities to be row locked. This should be in sync with the maximum number or range.

The default value is 100. For example:

lockPolicy.MaxSupportedRowLocks=100

logfactory.logexactclass

feedmessage.logexactlocation

These properties control whether the exact location and class name are included in the log when an exception occurs. For example:

logfactory.logexactclass=false
feedmessage.logexactlocation=false

securityViolationLoggingEnabled

This property enables and disables security access violation logging. For example:

securityViolationLoggingEnabled=true

system.*

These properties are used for setting system-specific settings:

system.minDate=0
system.maxDate=2147483647000
system.lastModifiedDateThreshold=15

system.auth.debug

This property is used to enable and disable system authentication when debugging. For example:

system.auth.debug=false

ui.custominvolvement.setDefaultSpec.name

This property sets a default specification used when creating Custom Involvement entities. The property is commented out by default. To set a default Custom Involvement specification, uncomment the property and add a specification name. For example:

ui.custominvolvement.setDefaultSpec.name = DefCustInv

ui.ldsummary.portlets.disableCount

This property disables the count that appears in the Total Results field in Logical Device Summary page portlets (sections). This property is commented out by default.

To disable the count, uncomment the property set to true. For example:

ui.ldsummary.portlets.disableCount=true

ui.logicaldevicesummary.logicaldeviceaccountportlet.deactivate

ui.logicaldevicesummary.rolesportlet.deactivate

ui.logicaldevicesummary.mediaportlet.deactivate

ui.logicaldevicesummary.biportlet.deactivate

ui.logicaldevicesummary.networknodesportlet.deactivate

ui.logicaldevicesummary.serviceportlet.deactivate

These properties control whether particular portlets (sections) are displayed in Logical Device Summary pages. These properties are commented out by default. To deactivate a portlet, uncomment the relevant property. For example:

ui.logicaldevicesummary.serviceportlet.deactivate=true

ui.search.pageSize

This property sets the number of rows shown in UIM search results pages. Search results are displayed one page at a time. When you scroll beyond the results in a page the next page is automatically retrieved from the database.

The default value is 200. For example:

ui.search.pageSize=200

ui.search.queryBehavior

This property determines the query behavior. There are various choices presented to the system about how much data is queried from the database and whether the count is retrieved for the UI.

Based on performance evaluations, one of the following values can be picked:

  • FULL_COUNT_FULL_QUERY(1)(This is the default value)

  • NO_COUNT_FULL_QUERY(2)

  • LIMIT_COUNT_FULL_QUERY(3)

  • LIMIT_COUNT_LIMIT_QUERY(4)

See "Changing the Query Behavior and Row Limit Parameters" for more information about these query behaviors, including the pros and cons to consider when using them.

The default value is 1. For example:

ui.search.queryBehavior=1

ui.search.queryLimit

This property sets a limit to UIM query results. The default value is -1, which indicates that no limit is applied. Change this value if you want to apply a limit. See "Changing the Query Behavior and Row Limit Parameters" for more information on how this query limit is used.

For example:

ui.search.queryLimit=-1

uim.attachment.ws.log.information.enabled

This property controls logging for web service request attachments. The default value is false, which disables information logging for the attachment if the resource to be preconfigured is blocked or reserved. For example:

uim.attachment.ws.log.information.enabled=false

uim.cache.config.customization.enabled

Automatically set to true if Eclipse Link cache configuration customization has been enabled.

Caution: Do not change this setting manually.

uim.characteristic.readonly.enabled

This property is used for read-only characteristics. The default value is true, which validates for read only characteristics. Set the value to false to bypass the CharacteristicManagerImpl.validateReadOnly method.

The default value is true. For example:

uim.characteristic.readonly.enabled=true

uim.characteristic.entitylink.rowlimit

This property sets a limit for the number of rows returned by an entity link query. The default value is 500.

uim.characteristic.entitylink.rowlimit=500

uim.characteristic.entitylink.executeQueryWithoutValues

This property controls whether a child drop-down is populated if the parent is not present in entity-link search criteria. For example, the City characteristic is characteristics on the State characteristic.

If this property is set to false and you add the City characteristic to the search criteria, the drop-down is empty because State is not included in the criteria. If the property is set to true, the drop-down includes all values for City, unconstrained by State values.

uim.characteristic.entitylink.executeQueryWithoutValues=false

uim.characteristic.entitylink.maxSuggestedItems

This property sets the maximum number of suggested results when entity-link drop-down lists are also auto-suggest fields. For example:

uim.characteristic.entitylink.maxSuggestedItems=25

uim.characteristic.dropdown.entitylink.width

This property sets the width of the field in the UIM user interface for entity-link characteristic fields. For example:

uim.characteristic.dropdown.entitylink.width=28

uim.characteristic.addCharacteristicsToResultsTable

This property determines whether entity-link characteristics are included as columns in the search results. For example:

uim.characteristic.addCharacteristicsToResultsTable=true

uim.characteristic.entitylink.dropdown.includeID

This property determines whether ID values are displayed in entity-link drop-down lists. For example:

uim.characteristic.entitylink.dropdown.includeID=true

uim.connectivityresultstable.pendingBiInfo.enable

This property determines whether connectivities in pending business interactions are displayed in connectivity search results. The default value is true.

uim.connectivityresultstable.pendingBiInfo.enable = true

uim.default.paging.query.hint

This property defines a a default query hint that is used to improve performance of the finder APIs when invoked from Web Services. When a search query is fired from a web service without a SearchPolicy, then the API sets this default query hint.

For example:

uim.default.paging.query.hint=FIRST_ROWS(25)

uim.entity.autoCreateDefaultVersion

This property controls the creation of default configuration versions for Service entities. If this property is enabled, and if there is only a single specification option for the service, a version is created during service creation.

The default value is false. For example:

uim.entity.autoCreateDefaultVersion=false

uim.entity.autoCreateDefaultVersion

This property controls whether a service configuration version is created automatically when you create a Service entity. This behavior applies only when the Service specification is associated to one and only one service configuration specification. The default value is false.

For example, to enable the creation of a default service configuration version when you create a service:

uim.entity.autoCreateDefaultVersion=true

For more information, see UIM Concepts.

uim.disable.entity.event.listeners

This property enables and disables entity-level listeners. The default value is true, which disables the event listeners. To enable event listeners, set this property value to false. For example:

uim.disable.entity.event.listeners=true

uim.entity.maxCreateRange

This property controls the maximum number of entities that can be created at once for entities that allow bulk creation.

The default value is 10000. For example:

uim.entity.maxCreateRange=10000

uim.entity.flushTriggerBufferSize

This property defines the number of entities created in memory for bulk entity creation. The default value is 1000, which is equal to the EclipseLink batch writing size as defined in the poms.properties file. The value determines the number of persistent entities held in memory before being persisted to the database. The value should be less than or equal to the batch writing size. For example:

uim.entity.flushTriggerBufferSize=1000

uim.flowidentifier.id.delimiter

This property defines the delimiter to be used while concatenating the domain name to the identifier value while building the ID of a flow identifier.

The default value is #. For example:

uim.flowidentifier.id.delimiter=

uim.host.*

These properties are added to provide server host and port information to support UIM notification functionality. For example, to set the host name and port for the URL in notifications:

uim.host.name=uimserver
uim.host.port=7001

See UIM Developer's Guide for more information about properties for UIM notifications.

uim.query.cache.hint.entitylist

This property adds the RESULTS_CACHE hint to queries involving entities. For example:

uim.query.cache.hint.entitylist=CharacteristicSpecUsageDAO

uim.query.MaxSearchResults

This property sets a limit on the number of entities retrieved for a search. The default value is -1, which sets no limit; search result pages display all retrieved entities (unless a range is explicitly set on the finder). For example:

uim.query.MaxSearchResults=-1

uim.security.filter.enabled

This property sets security access to allow for the configuring of partitions. For example:

uim.security.filter.enabled=false

uim.telephonenumber.validation.leadingzeros.included

This property controls validation settings for creating telephone numbers with leading zeros.

Setting the property to false (the default setting) means that leading zeroes are stripped before checking for duplicate numbers. Setting the property to true allows leading zeroes. For example:

uim.telephonenumber.validation.leadingzeros.included=false

uim.telephonenumber.search.invGroup.enable

This property determines whether inventory groups are included in telephone number search results. The default value is true. For example:

uim.telephonenumber.search.invGroup.enable=true

uim.default.autosuggest.rowlimit

uim.default.autosuggest.disable

These properties control the behavior of auto-suggest in UIM. You can disable auto-suggest and set a limit for the number of rows it displays. For example:

uim.default.autosuggest.rowlimit=20
uim.default.autosuggest.disable=false

uim.networkentitycode.maxlength

uim.networklocation.code.minlength

uim.networklocation.code.maxlength

uim.networkentitylocation.code.delimiter.enabled

uim.propertylocation.name.maxlength

uim.propertylocation.name.delimiter

poms.cache.coordination.enabled

The following properties are used for setting Property Location settings:

uim.networkentitycode.maxlength=10
uim.propertylocation.name.maxlength=255
uim.networklocation.code.minlength=3
uim.networklocation.code.maxlength=20
uim.networkentitylocation.code.delimiter.enabled=true
uim.propertylocation.name.delimiter=
poms.cache.coordination.enabled=false

connectivity.capactityVariant

Defines the percentage by which pipe capacity can vary from a rate code and still be validated successfully.

The default value is 4. For example:

connectivity.capacityVariant=4

groom.items.per.transaction

This property defines the number of riders having COMPLETED pipe configuration versions that are to be processed per transaction.

The default value is 5. For example:

groom.items.per.transaction=5

system.exception.writableStackTrace

This property is used to reduce CPU usage. For example:

system.exception.writableStackTrace=false

ws.includeEntityFromAssignment

This property determines whether to include the entity in web service requests from an assignment or reference.

The default value is false.

ws.includeEntityFromAssignment=false

Controlling System Timer Events

You use the timers.properties file to control system timer events.

Each timer can be defined by five properties:

  • firstTime: The first time to call the listener. If it is specified as relative
    time (without ":"), such as 600 (in seconds), then the listener is
    called 10 minutes after the system is started.
    If it is specified as absolute time, such as 12:00:00(noon), or
    23:00:00(11PM), then the listener is called at the specified time
    after the system is started.

    If it is specified as "onTheHour", then the listener is executed on
    the next hour (for example 08:00:00) after the system is started (for
    example 07:28:34).

    The default is 60 seconds in relative time.

  • period: After the listener is called the first time, the number of seconds between repeating expiration intervals. The listener is called when the timer expires.

    The default is 600 seconds.

  • fixedRate: This is not used.

  • listener: The listener's class name. The listener's timerExpired (Timer timer) method is executed when the timer expired.

    There is no default. This property must be specified.

  • cluster: The flag indicates whether this timer is cluster aware. If it is set to true, then there is only one instance of this timer running in the cluster. If it is set to false, then each server has this timer instance running
    locally. The default value is true.

    You normally use the default value for all timers except clusterTimeMonitor, which should be run individually on every server in a cluster.

The properties for the timers.properties file are:

Table 5-7 Properties in the timers.properties file

Property Description

cleanReservation

This property controls the timer for cleaning up expired reservations. There should be only one instance of this timer in the cluster. For example:

cleanReservation.firstTime=600
cleanReservation.period=600
cleanReservation.listener=oracle.communications.inventory.api.consumer.impl.ReservationManagerImpl

clusterTimerMonitor

This property controls the timer that monitors whether the current server that manages the cluster-aware timers is still alive.

This timer should be running on every server in the cluster. For example:

clusterTimerMonitor.firstTime=10
clusterTimerMonitor.period=10
clusterTimerMonitor.listener=oracle.communications.inventory.api.framework.timer.TimerController
clusterTimerMonitor.cluster=false

customTimer

This property controls a timer for custom extensions. There should be only one instance of this timer in the cluster. For example:

customTimer.firstTime=300
customTimer.period=600
customTimer.listener=oracle.communications.inventory.api.common.TimeoutEventListener

ipAddressAging

This property controls a timer for recalling disconnected IP resources. For example:

ipAddressAging.firstTime=600
ipAddressAging.period=600
ipAddressAging.listener=oracle.communications.inventory.api.ip.IPResourceTimerListener

rowLockExpiration

This controls the timer for cleaning up expired entity row locks. For example:

rowLockExpiration.firstTime=120
rowLockExpiration.period=600
rowLockExpiration.listener=oracle.communications.inventory.api.common.impl.RowLockExpiryTimerListener

telephoneNumberAging

This property controls a timer for recalling disconnected telephone numbers. For example:

telephoneNumberAging.firstTime=600
telephoneNumberAging.period=600
telephoneNumberAging.listener=oracle.communications.inventory.api.number.TelephoneNumberHelper

For more information on telephone number aging and telephone number life cycles, see UIM Concepts.


Controlling Topology

You use the topologyProcess.properties to control how topology is managed in UIM. The properties are:

Table 5-8 Properties in the topologyProcess.properties file

Property Description

disableTopology

This property turns topology refresh on or off.

The default value is false. For example:

disableTopology=false

processSynchronous

This property refreshes the topology as part of the transaction (true) or asynchronously in a separate transaction (false).

The default value is true. For example:

processSynchronous=true

mapperClass

This property defines the class that maps the business model to the topology. For example:

mapperClass=oracle.communications.inventory.api.topology.mapper.impl.TopologyMapperImpl

WORK_MANAGER_CLASS

WORK_MANAGER_NAME

WORK_MANAGER_THREADS

These properties are no longer used.

WORK_MANAGER_JNDI

This property is a setting only for WebLogic. For example:

WORK_MANAGER_JNDI=java:comp/env/wm/TopologyWorkManager

defaultBaseMap

defaultApplicationDatasource

defaultMapTileServerUrl

defaultMapCopyright

These properties define set map profile settings. These are the default settings:

defaultBaseMap=elocation_mercator.world_map
defaultApplicationDatasource=UIMDATA
defaultMapTileServerUrl=http://elocation.oracle.com/mapviewer/mcserver
defaultMapCopyright=Copyright © 2007, 2012 Oracle Corp © 2010 NAVTEQ

If you use a third-party geocoding service, change these values. See "Configuring a Geocode Service" for more information.

MapViewerUrl

This property specifies the map viewer URL if it is running in a separate domain. To specify the URL, uncomment the following line and replace the URL with the correct value.

mapviewerUrl=http://hostname:port/mapviewer

simpleLinearMode

simpleLinearModeMaxCycles

continueProcessingIndicator

These properties control various aspects of path analysis processing. See UIM Developer's Guide for information about the purpose of these properties.

These are the default values:

simpleLinearMode=false
simpleLinearModeMaxCycles=5
continueProcessingIndicator=true

rebuildChunkSize

This property defines the number of topology objects in the topology rebuild chunk size. A larger number of chunks per transaction means that fewer transactions are required to rebuild the topology. For example:

topology.rebuildChunkSize=100

Setting Timeout Values for UIM

The WebLogic server supports distributed transactions, which are transactions that update multiple resource managers, such as an application server and a database, in a single transaction. This guarantees data integrity by ensuring that transactional updates are either committed or rolled back in all of the participating databases.

This section explains how to set transaction timeouts for the Oracle database and JTA. In general, the JTA timeout should be less than or equal to the Oracle database timeout:

JTA timeout <= database timeout

Oracle recommends setting the transaction timeouts to 1800 seconds.

Setting the Oracle Database Timeout

The DISTRIBUTED_LOCK_TIMEOUT is a parameter of the database. There are two ways to change this parameter. You can use Oracle Enterprise Manager or use sql.

To change the DISTRIBUTED_LOCK_TIMEOUT parameter using sql:

  1. Open SQL Plus.

  2. Connect to the database.

  3. Enter:

    'alter system set distributed_lock_timeout=1800 scope=spfile'
    

    The default value for this parameter is 60 seconds, but Oracle recommends setting this parameter to 1800 seconds.

    Note:

    Oracle recommends setting the database timeout value higher than the XA transaction timeout value. Otherwise, in-doubt table locks can occur on the database side before the WebLogic server JTA or JDBC XA can close the transaction.
  4. Exit SQL Plus.

Setting the JTA Timeout

You specify how long a transaction can remain in the Active state until the transaction is rolled back by using the WebLogic server administration console.

To set the JTA timeout value:

  1. Log in to the WebLogic server administration console at:

    http://ServerName:PortNumber/console

  2. Click Lock & Edit.

  3. In the Domain Structure tree, expand Services, and then click JTA.

    The Settings for Domain_Name pane appears.

  4. Update the value in the Timeout Seconds field and then click Save.

  5. Click Activate Changes.

Changing the Query Behavior and Row Limit Parameters

The query behavior and row limit parameters are defined in the system-config.properties file.

The file is located in the UIM_Home/config/system-config.properties.

This example shows the default options:

ui.search.queryLimit=-1  (-1 indicates no limit)
ui.search.queryBehavior=1
ui.search.pageSize=200

The queryLimit parameter adds the rownum clause the search query (unless it is a -1 value). The pageSize parameter is for pagination on the search results page in the UI.

Table 5-9 describes the options available for the Query Behavior and Row Limit parameters.

Table 5-9 Query Behavior and Row Limit Parameters

Behavior (option #) Row Limit Count Scrolling

FULL_COUNT_FULL_QUERY (1)

N/A

The exact count is displayed.

User can scroll through the entire result set.

NO_COUNT_FULL_QUERY (2)

N/A

Not displayed

User can scroll through the entire result set.

LIMIT_COUNT_FULL_QUERY (3)

Used for count only

If total count < row limit, then total count is displayed else:

Total count: row limit (Limit Reached) is displayed

User can scroll the results up to the row limit.

LIMIT_COUNT_LIMIT_QUERY (4)

Used for count and query

If total count < row limit, then total count is displayed else

Total count: row limit (Limit Reached) is displayed

User can scroll the results up to the row limit.

NO_COUNT_LIMIT_QUERY (5)

Used for query only

Not displayed

User can scroll the results up to the row limit.


To change the Query Behavior and Row Limit parameters, perform the following:

  1. Open a command window.

  2. Navigate to the UIM_Home/config/system-config.properties file.

  3. Open the system-config.properties file and scroll down to the ui.search.queryLimit, ui.search.queryBehavior and ui.search.pageSize entries.

  4. Change the parameters as required, to meet the specific needs of your deployment.

    Refer to Table 5-10 for a description of the pros and cons of the parameter options.

  5. Save and close the system-config.properties file.

Table 5-10 Parameter Options Pros and Cons

Behavior Advantages Disadvantages

FULL_COUNT_FULL_QUERY(1)

You know the exact count of rows satisfying the criteria.

You can scroll through the entire result set.

If the user does not give meaningful criteria, and the number of rows matching the criteria is large, it may take a while to calculate the count.

If the database is not tuned correctly, sorting the entire data set may take a while.

NO_COUNT_FULL_QUERY(2)

The query for finding the total count is not performed. So it helps the performance of the pages.

Usability of the page is not as good. The scrollbar in the page is not representative of the number of rows satisfying the data and so user never knows how much he needs to scroll.

If the database is not tuned correctly, sorting the entire data set may take a while.

LIMIT_COUNT_FULL_QUERY(3)

If the criteria is meaningful, and the number of rows satisfying the criteria is less than the row limit, there is no difference in the results brought back and usability of the pages compared to Behavior (1) or Behavior (4).

Better performance compared to Behavior (1), as the count query is limited.

Results are more accurate compared to Behavior (4).

User cannot scroll to the rows past the row limit.

LIMIT_COUNT_LIMIT_QUERY(4)

If the criteria is meaningful, and the number of rows satisfying the criteria is less than the row limit, there is no difference in the results brought back and usability of the pages compared to Behavior (1) or Behavior (3).

Better performance compared to Behavior (1), as the count query is limited.

Better performance compared to Behavior (3), as the query is limited.

User cannot scroll to the rows past the row limit.

If the number of rows matching the criteria is more than the row limit, the row limit is applied before the ordering, so the first rows displayed may not be the first in the sort order of the entire dataset.

NO_COUNT_LIMIT_QUERY (5)

The query for finding the total count is not performed. This helps the performance of the pages. And the number of rows queried is limited.

Better performance compared to Behavior (2), as the query is limited.

User cannot scroll to the rows past the row limit.

If the number of rows matching the criteria is more than the row limit, the row limit is applied before the ordering, so the first rows displayed may not be the first in the sort order of the entire dataset.


Disabling Sorting for Selected Entities

By default sorting entities in UIM is enabled and entities are ordered by their identifier or ID. In calling APIs, you can set a value in the InventorySearchCriteria interface to disable sorting for selected entities. The method to disable sorting is setDisableOrdering() and you set the value to true. The default value is set to false. You can disable ordering on the following selected entities:

  • Logical Devices

  • Physical Devices

  • Services

By disabling the sorting, you can improve the performance of the entity retrievals. See the UIM Javadoc for more detailed information on the InventorySearchCriteria interface.

Using Hints for Improving Performance in Querying

By default including conditions and reservation are included in an entity query. In calling APIs, you can set query hints in the InventorySearchCriteria interface to disable these being included which can improve performance. The method to add hints on the search criteria is the addHint() method and you set the hint type and the value to true. You can add hints for the following:

  • EXCLUDE_CONDITIONS_IN_UNASSIGNED_QUERY

  • EXCLUDE_RESERVATIONS_IN_UNASSIGNED_QUERY

Example 5-3 shows sample code using the addHint() method on the LogicalDeviceSearchCriteria class. The LogicalDeviceSearchCriteria class extends InventorySearchCriteria interface.

Example 5-3 Sample Code Using the addHint Method on InventorySearchCriteria

                LogicalDevice ld = null;         
                
                Collection<CriteriaItem> criteriaItems = new ArrayList<CriteriaItem>();
                LogicalDeviceManager ldManager = PersistenceHelper.makeLogicalDeviceManager();
                LogicalDeviceSearchCriteria ldCriteria =
   ldManager.makeLogicalDeviceSearchCriteria();
                LogicalDeviceSpecification ldSpec =
        (LogicalDeviceSpecification) findAndValidateSpecification(specName); 
 
                if (ldSpec != null)
                           ldCriteria.setLogicalDeviceSpecification(ldSpec);
                ldCriteria.setAssignmentState(AssignmentState.UNASSIGNED);              
                ldCriteria.setDistinct(true);
                ldCriteria.setDisableOrdering(true);
                ldCriteria.addHint(
   InventorySearchCriteriaHints.EXCLUDE_CONDITIONS_IN_UNASSIGNED_QUERY, "true");
                ldCriteria.addHint(
   InventorySearchCriteriaHints.EXCLUDE_RESERVATIONS_IN_UNASSIGNED_QUERY, "true");
                
                List<LogicalDevice> ldList = 
                                        ldManager.findLogicalDevice(ldCriteria);

By adding these hints to the query criteria, any existing conditions or reservations are excluded from the query. Using these hints you can improve the performance of the retrievals. See the UIM Javadoc for more detailed information on the InventorySearchCriteria interface and the LogicalDeviceSearchCriteria class.