This chapter describes ways to improve Oracle Communications Unified Inventory Management (UIM) performance.
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.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:
Navigate to UIM_Home/config.
Open the system-config.properties file.
Set the inv.extendedCharSearchEnabled property to true.
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.Save and close the system-config.properties file.
To improve characteristic search performance, you must perform the following database changes:
Back up the UIM database. See "Database Backup and Restore" for more information.
Ensure that you have database modification level privileges.
Create two temporary directories, temp_dir and temp_dir_schema.
Download the UIM software for your operating system from the Oracle software delivery website and save it to temp_dir.
From the downloaded ZIP file, extract the ora_uim_dbtools.jar file into temp_dir_schema.
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.
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
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
(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
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.
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.
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.
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>
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 AdditivityThe 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
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.
To enable SQL and other EclipseLink logging, perform the following:
Open a command window.
Navigate to the MW_Home/oracle_common/common/bin directory.
Start the WebLogic Scripting Tool (WLST) using the following command:
./wlst.sh
Connect to the server on which you want to change the logging level, use the following command:
connect(userid,password,'t3://hostname:port')
Go to Custom settings using the following command:
custom()
Note:
'custom()' can take a while to execute, approximately 5 minutes or more.Go to TopLink using the following command:
cd('TopLink')
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'
Copy the session and go to that session using the following command:
cd('session')
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. |
To enable SQL logging use the following command:
set('CurrentEclipseLinkLogLevel','FINE')
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:
config-reload.properties. See "Controlling Automatic Inventory Reloading".
consumer.properties. See "Controlling Entity Consumption".
reference.properties. See "Controlling Reference Properties".
ruleProcess.properties. See "Controlling the Work Manager".
system-config.properties. See "Setting System Properties".
timers.properties. See "Controlling System Timer Events".
topologyProcess.properties. See "Controlling Topology".
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 |
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 |
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 |
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 |
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:
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 |
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. |
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 |
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.
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:
Open SQL Plus.
Connect to the database.
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.Exit SQL Plus.
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:
Log in to the WebLogic server administration console at:
http://
ServerName:
PortNumber
/console
Click Lock & Edit.
In the Domain Structure tree, expand Services, and then click JTA.
The Settings for Domain_Name pane appears.
Update the value in the Timeout Seconds field and then click Save.
Click Activate Changes.
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:
Open a command window.
Navigate to the UIM_Home/config/system-config.properties file.
Open the system-config.properties file and scroll down to the ui.search.queryLimit, ui.search.queryBehavior and ui.search.pageSize entries.
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.
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. |
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.
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.