IBM Support

IJ37645: NO CHECK HAPPENING BETWEEN MAXATTRIBUTE AND MAXATTRIBUTECFG IN ORACLE CASE-SENSITIVE DATABASES

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as program error.

Error description

  • The issue is with the check between MAXATTRIBUTE and
    MAXATTRIBUTECFG not happening on case-sensitive databases when
    running integrity checker. The
    SQL that was being executed to get the MAXATTRIBUTE records for
    the MAXATTRIBUTE object included "... objectname='maxattribute'
    ..." instead of "... objectname='MAXATTRIBUTE' ...". As a
    result, no MAXATTRIBUTE records were being retrieved for the
    comparison. For example, the below statements were not getting
    executed in Oracle:
    
    BMXAA0424I ? Verifying configuration tables.
    
    select attributename from maxattribute where objectname =
    'maxattribute'
    and persistent = 1 order by attributeno
    ;
    
    select b.alias as basevalue, c.alias as cfgvalue, b.objectname
    as
    objectname, b.attributename as attributename from maxattribute
    b,
    maxattributecfg c where (b.alias is null and c.alias is not null
    or
    b.alias is not null and c.alias is null or b.alias <> c.alias)
    and
    b.objectname = c.objectname and b.attributename =
    c.attributename
    ;
    
    select b.autokeyname as basevalue, c.autokeyname as cfgvalue,
    b.objectname as objectname, b.attributename as attributename
    from
    maxattribute b, maxattributecfg c where (b.autokeyname is null
    and
    c.autokeyname is not null or b.autokeyname is not null and
    c.autokeyname
    is null or b.autokeyname <> c.autokeyname) and b.objectname =
    c.objectname and b.attributename = c.attributename
    ;
    
    select b.attributeno as basevalue, c.attributeno as cfgvalue,
    b.objectname as objectname, b.attributename as attributename
    from
    maxattribute b, maxattributecfg c where (b.attributeno is null
    and
    c.attributeno is not null or b.attributeno is not null and
    c.attributeno
    is null or b.attributeno <> c.attributeno) and b.objectname =
    c.objectname and b.attributename = c.attributename
    ;
    
    select b.canautonum as basevalue, c.canautonum as cfgvalue,
    b.objectname
    as objectname, b.attributename as attributename from
    maxattribute b,
    maxattributecfg c where (b.canautonum is null and c.canautonum
    is not
    null or b.canautonum is not null and c.canautonum is null or
    b.canautonum <> c.canautonum) and b.objectname = c.objectname
    and
    b.attributename = c.attributename
    ;
    
    select b.classname as basevalue, c.classname as cfgvalue,
    b.objectname
    as objectname, b.attributename as attributename from
    maxattribute b,
    maxattributecfg c where (b.classname is null and c.classname is
    not null
    or b.classname is not null and c.classname is null or
    b.classname <>
    c.classname) and b.objectname = c.objectname and b.attributename
    =
    c.attributename
    ;
    
    select b.columnname as basevalue, c.columnname as cfgvalue,
    b.objectname
    as objectname, b.attributename as attributename from
    maxattribute b,
    maxattributecfg c where (b.columnname is null and c.columnname
    is not
    null or b.columnname is not null and c.columnname is null or
    b.columnname <> c.columnname) and b.objectname = c.objectname
    and
    b.attributename = c.attributename
    ;
    
    select b.defaultvalue as basevalue, c.defaultvalue as cfgvalue,
    b.objectname as objectname, b.attributename as attributename
    from
    maxattribute b, maxattributecfg c where (b.defaultvalue is null
    and
    c.defaultvalue is not null or b.defaultvalue is not null and
    c.defaultvalue is null or b.defaultvalue <> c.defaultvalue) and
    b.objectname = c.objectname and b.attributename =
    c.attributename
    ;
    
    
    
    Steps to Reproduce:
    1. Apply Maximo 7.6.1.2 fix pack on a case-sensitive database
    environment (for e.g. Oracle)
    
    2. Apply Maximo 7.6.1.2 fix pack on a non-case-sensitive
    database environment
    
    3. Run Integrity Checker on both environments.
    
    4. Compare Integrity Checker logs of both environments.
    
    
    
    Expected Result:
    
    Statements with any case (lower or upper) 'maxattribute' should
    get executed on a case-sensitive database environment.
    
    
    
    Actual Result:
    
    Statements like below having lower case 'maxattribute' are not
    seen executed on a case-sensitive database environment:
    
    select attributename from maxattribute where objectname =
    'maxattribute'
    and persistent = 1 order by attributeno
    ;
    
    select b.alias as basevalue, c.alias as cfgvalue, b.objectname
    as
    objectname, b.attributename as attributename from maxattribute
    b,
    maxattributecfg c where (b.alias is null and c.alias is not null
    or
    b.alias is not null and c.alias is null or b.alias <> c.alias)
    and
    b.objectname = c.objectname and b.attributename =
    c.attributename ;
    
    
    
    Reported in Version: Maximo 7.6.1.2
    

Local fix

  •  If these statements are run manually in an Oracle environment,
    then these gets check and validated successfully, and even shows
    up errors if exists any, for example:
    
    select b.defaultvalue as basevalue, c.defaultvalue as cfgvalue,
    b.objectname as objectname, b.attributename as attributename
    from
    maxattribute b, maxattributecfg c where (b.defaultvalue is null
    and
    c.defaultvalue is not null or b.defaultvalue is not null and
    c.defaultvalue is null or b.defaultvalue <> c.defaultvalue) and
    b.objectname = c.objectname and b.attributename =
    c.attributename
    
    BMXAA0443E -- Error - BMXAA0537E -- maxattribute definition
    differs from
    maxattributecfg for IOTRESTENDPOINTS.READINGDATETAGNAME.
    maxattribute.DEFAULTVALUE has "NA" while
    maxattributecfg.DEFAULTVALUE
    has "null". Use the Database Configuration application to
    correct the
    configuration metadata.
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:                                              *
    * Maximo Integrity Checker users                               *
    ****************************************************************
    * PROBLEM DESCRIPTION:                                         *
    * Check between MAXATTRIBUTE and MAXATTRIBUTECFG not happening *
    * on case-sensitive databases when running integrity checker.  *
    ****************************************************************
    Check between MAXATTRIBUTE and MAXATTRIBUTECFG not happening on
    case-sensitive databases when running integrity checker. The SQL
    that was being executed to get the MAXATTRIBUTE records for the
    MAXATTRIBUTE object included "...objectname='maxattribute' ..."
    instead of "... objectname='MAXATTRIBUTE' ...". As a
    result, no MAXATTRIBUTE records were being retrieved for the
    comparison. For example, the below statements were not getting
    executed in Oracle:
    BMXAA0424I ? Verifying configuration tables. select
    attributename from maxattribute where objectname =
    'maxattribute' and persistent = 1 order by attributeno
    ;
    select b.alias as basevalue, c.alias as cfgvalue, b.objectname
    as objectname, b.attributename as attributename from
    maxattribute b, maxattributecfg c where (b.alias is null and
    c.alias is not null or b.alias is not null and c.alias is null
    or b.alias <> c.alias)
    and b.objectname = c.objectname and b.attributename =
    c.attributename;
    select b.autokeyname as basevalue, c.autokeyname as cfgvalue,
    b.objectname as objectname, b.attributename as attributename
    from maxattribute b, maxattributecfg c where (b.autokeyname is
    null and c.autokeyname is not null or b.autokeyname is not null
    and c.autokeyname is null or b.autokeyname <> c.autokeyname) and
    b.objectname = c.objectname and b.attributename =
    c.attributename;
    select b.attributeno as basevalue, c.attributeno as cfgvalue,
    b.objectname as objectname, b.attributename as attributename
    from maxattribute b, maxattributecfg c where (b.attributeno is
    null and c.attributeno is not null or b.attributeno is not null
    and
    c.attributeno is null or b.attributeno <> c.attributeno) and
    b.objectname =
    c.objectname and b.attributename = c.attributename;
    select b.canautonum as basevalue, c.canautonum as cfgvalue,
    b.objectname as objectname, b.attributename as attributename
    from maxattribute b, maxattributecfg c where (b.canautonum is
    null and c.canautonum is not null or b.canautonum is not null
    and c.canautonum is null or b.canautonum <> c.canautonum) and
    b.objectname = c.objectname and b.attributename =
    c.attributename;
    select b.classname as basevalue, c.classname as cfgvalue,
    b.objectname as objectname, b.attributename as attributename
    from maxattribute b, maxattributecfg c where (b.classname is
    null and c.classname is not null or b.classname is not null and
    c.classname is null or b.classname <>c.classname) and
    b.objectname = c.objectname and b.attributename =
    c.attributename;
    select b.columnname as basevalue, c.columnname as cfgvalue,
    b.objectname as objectname, b.attributename as attributename
    from maxattribute b,
    maxattributecfg c where (b.columnname is null and c.columnname
    is not
    null or b.columnname is not null and c.columnname is null or
    b.columnname <> c.columnname) and b.objectname = c.objectname
    and b.attributename = c.attributename;
    select b.defaultvalue as basevalue, c.defaultvalue as cfgvalue,
    b.objectname as objectname, b.attributename as attributename
    from maxattribute b, maxattributecfg c where (b.defaultvalue is
    null and c.defaultvalue is not null or b.defaultvalue is not
    null and c.defaultvalue is null or b.defaultvalue <>
    c.defaultvalue) and b.objectname = c.objectname and
    b.attributename = c.attributename;
    Steps to Reproduce:
    1. Apply Maximo 7.6.1.2 fix pack on a case-sensitive database
    environment (for e.g. Oracle)
    2. Apply Maximo 7.6.1.2 fix pack on a non-case-sensitive
    database environment
    3. Run Integrity Checker on both environments.
    4. Compare Integrity Checker logs of both environments.
    Expected Result:
    Statements with any case (lower or upper) 'maxattribute' should
    get executed on a case-sensitive database environment.
    

Problem conclusion

  • The fix for this APAR is contained in the following maintenance
    package:
    Release 7.6.1.3 of Base Services
    

Temporary fix

Comments

APAR Information

  • APAR number

    IJ37645

  • Reported component name

    MAXIMO ASST MGM

  • Reported component ID

    5724R46AM

  • Reported release

    761

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2022-02-04

  • Closed date

    2022-04-06

  • Last modified date

    2022-04-06

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    MAXIMO ASST MGM

  • Fixed component ID

    5724R46AM

Applicable component levels

[{"Line of Business":{"code":"LOB59","label":"Sustainability Software"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSLKT6","label":"Maximo Asset Management"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"761"}]

Document Information

Modified date:
07 April 2022