IT blok - Michal Šika

kutilovo živobytí

Příručka pro Documentum Consistency Checker – část 1.

V jednom ze svých dřívějších článků jsem ukazoval použití nástroje consistency checker pro zjišťování nekonzistencí v docbázi.
Výstupních chyb a varování je relativně hodně a dnes přinesu první část výčtu těchto zpráv.

Zde je přehledová tabulka této části výčtu chybových a varovných hlášení. Kliknutím na některé označení budete přesunuti na přílsušné hlášení.

WARNING CC-0001 WARNING CC-0002 ERROR CC-0003 ERROR CC-0004
WARNING CC-0005 WARNING CC-0006 WARNING CC-0007 ERROR CC-0008
WARNING CC-0009 WARNING CC-0010 WARNING CC-0011 ERROR CC-0012
ERROR CC-0013 ERROR CC-0014 ERROR CC-0015 ERROR CC-0016
ERROR CC-0017 ERROR CC-0018 ERROR CC-0019 WARNING CC-0020
WARNING CC-0021 WARNING CC-0022 WARNING CC-0023 WARNING CC-0024
ERROR CC-0025 ERROR CC-0026 ERROR CC-0027 ERROR CC-0028
ERROR CC-0029 ERROR CC-0030 WARNING CC-0031 ERROR CC-0032
ERROR CC-0033 ERROR CC-0034 ERROR CC-0035 ERROR CC-0036
ERROR CC-0037 ERROR CC-0038 WARNING CC-0039 WARNING CC-0040

 

Nyní následují jednotlivá chybová a varovná hlášení.

WARNING CC-0001

Checking for users with non-existent group
— Query—: select a.user_name as p1, a.user_group_name as p2 from dm_user_s a where a.user_group_name is not NULL and a.user_group_name <> ' ' and not exists (select b.group_name from dm_group_s b where b.group_name = a.user_group_name)
WARNING CC-0001: User ‚Watson, Morag‘ belongs to non-existent group ‚bp doc control‘

Problem:
The dm_user object is pointing to a non-existing group.

Steps:

  • Set the user to an existing group or remove the non-existing group

In API:

API> retrieve,c,dm_user where user_name='cosd1'
...
110a636280002d00
API> set,c,110a636280002d00,user_group_name
Set >kyle
...
Ok
API> save,c,110a636280002d00
...
Ok
API>

nahoru

WARNING CC-0002

Checking for users belonging to groups not in dm_user
— Query—: select a.users_names as p1, a.r_object_id as p2 from dm_group_r a where a.users_names is not NULL and a.users_names <> ' 'and not exists (select b.user_name from dm_user_s b where b.user_name = a.users_names and r_is_group = 0)
WARNING CC-0002: User ‚DWD_PROD‘ is referenced in dm_group with id ‚12006e5880000100‘ but does not have a valid dm_user object
WARNING CC-0002: User ‚Kindinger, Mike‘ is referenced in dm_group with id ‚12006e5880000100‘ but does not have a valid dm_user object
WARNING CC-0002: User ‚Johnson, Pete‘ is referenced in dm_group with id ‚12006e5880001d00‘ but does not have a valid dm_user object

Problem:
A group contains a non-existing user in users_names attribute

Steps:

  • Dump the dm_group id
  • Check the value for users_names and locate index for the user
  • Remove the user from the attribute using remove API
API> fetch,c,120a636280000501
...
Ok
API> dump,c,120a636280000501
...
USER ATTRIBUTES

  group_name                 : kyle
  group_address              : 
  users_names             [0]: syoon2
                          [1]: cosd1
  groups_names             []: <none>
  owner_name                 : zarate
  is_private                 : F
  description                : 
  globally_managed           : F
  alias_set_id               : 0000000000000000
  group_source               : 
  group_class                : group
  group_admin                : zarate

SYSTEM ATTRIBUTES

  r_object_id                : 120a636280000501
  r_modify_date              : 1/28/2004 09:46:27
  r_has_events               : F

APPLICATION ATTRIBUTES


INTERNAL ATTRIBUTES

  i_all_users_names        []: <none>
  i_supergroups_names     [0]: kyle
  i_is_replica               : F
  i_vstamp                   : 11

API> remove,c,120a636280000501,users_names[1]
...
Ok
API> save,c,120a636280000501
...
Ok
API> dump,c,120a636280000501
...
USER ATTRIBUTES

  group_name                 : kyle
  group_address              : 
  users_names             [0]: syoon2
  groups_names             []: <none>
  owner_name                 : zarate
  is_private                 : F
  description                : 
  globally_managed           : F
  alias_set_id               : 0000000000000000
  group_source               : 
  group_class                : group
  group_admin                : zarate

SYSTEM ATTRIBUTES

  r_object_id                : 120a636280000501
  r_modify_date              : 1/28/2004 09:53:02
  r_has_events               : F

APPLICATION ATTRIBUTES


INTERNAL ATTRIBUTES

  i_all_users_names       [0]: syoon2
  i_supergroups_names     [0]: kyle
  i_is_replica               : F
  i_vstamp                   : 12

API>

As you can see the user on index 1 is not there anymore
nahoru

ERROR CC-0003

Checking for users not listed in dmi_object_type
— Query—: select a.user_name as p1, a.r_object_id as p2 from dm_user_s a where not exists (select b.r_object_id from dmi_object_type b where b.r_object_id = a.r_object_id)
ERROR CC-0003: User object for ‚ zarate‘ with r_object_id ‚110a636280000102‘ is not listed in dmi_object_type

Problem:
The dmi_object_type doesn’t have the entry for the dm_user object.

Steps:

  • The dmi_object_table contains 2 rows, r_object_id and I_type. The r_object_id inserted will simply be the r_object_id of the corrupt object, and i_type (integer) will be a decimal representation of the r_object_id of the dm_type object for dm_user.
  • First get the r_object_id of another user that is not corrupted.
  • Find out what is the i_type of the „dmi_object_type“ object for dm_user

In SQL as docbase owner

SQL> select r_object_id from dm_user_s where user_name=’<user name such install owner>’;

SQL> select r_object_id from dm_user_s where user_name='zarate';

R_OBJECT_ID
----------------
110a636280000102

SQL> col i_type format 9999999990
SQL> select i_type from dmi_object_type where r_object_id='110a636280000102';

     I_TYPE
-----------
-2147483389
SQL>

Assume the object_id of the corrupt_object is called ‚corrupt_id‘

SQL> insert into dmi_object_type values ('corrupt_id', -2147483389);
 
SQL> commit;

nahoru

ERROR CC-0004

Checking for groups not listed in dmi_object_type
— Query—: select a.group_name as p1, a.r_object_id as p2 from dm_group_s a where not exists (select b.r_object_id from dmi_object_type b where b.r_object_id = a.r_object_id)
ERROR CC-0004: Group object for ‚group3‘ with r_object_id ‚120a636280000100‘ is not listed in dmi_object_type

Problem:
The dmi_object_type doesn’t have the entry for the dm_group object.

Steps:

  • The dmi_object_table contains 2 rows, r_object_id and I_type. The r_object_id inserted will simply be the r_object_id of the corrupt object, and i_type (integer) will be a decimal representation of the r_object_id of the dm_type object for dm_group.
  • First get the r_object_id of another group that is not corrupted.
  • Find out what is the i_type of the „dmi_object_type“ object for dm_group.

In SQL as docbase owner

SQL> select r_object_id from dm_group_s where user_name=’<user name such install owner>’;

SQL> select r_object_id from dm_group_s where group_name='docu';

R_OBJECT_ID
----------------
120a636280000100

SQL> col i_type format 9999999990
SQL> select i_type from dmi_object_type where r_object_id='120a636280000100';

     I_TYPE
-----------
-2147483388

SQL>

Assume the object_id of the corrupt_object is called ‚corrupt_id‘

SQL> insert into dmi_object_type values ('corrupt_id', -2147483388);
 
SQL> commit;

nahoru

WARNING CC-0005

Checking for groups belonging to non-existent groups
— Query—: select a.r_object_id as p1, a.groups_names as p2 from dm_group_r a where a.groups_names is not NULL and a.groups_names <> ' ' and not exists (select b.group_name from dm_group_s b where b.group_name = a.groups_names)
WARNING CC-0005: Group object with r_object_id ‚120a636280002d02‘ belongs to a non-existent group ‚group2‘

Problem:
The dm_group_r table has a none existing group in groups_names attribute.

Steps:

  • Dump the attributes of the folder in question.
  • Locate the i_position in the underling table.
  • Remove and move the values on row.

In IAPI:

API> dump,c,120a636280002d02


USER ATTRIBUTES

  group_name                 : group3
  group_address              : 
  users_names             [0]: testr
  groups_names            [0]: group2
                          [1]: wasito
  owner_name                 : zarate
  is_private                 : F
  description                : 
  globally_managed           : F
  alias_set_id               : 0000000000000000
  group_source               : 
  group_class                : group
  group_admin                : 

SYSTEM ATTRIBUTES

  r_object_id                : 120a636280002d02
  r_modify_date              : 06/26/04 21:31:19
  r_has_events               : F

APPLICATION ATTRIBUTES


INTERNAL ATTRIBUTES

  i_all_users_names        []: <none>
  i_supergroups_names     [0]: group3
  i_is_replica               : F
  i_vstamp                   : 3

In SQL as docbase owner:

SQL> select i_position,groups_names from dm_group_r where r_object_id='120a636280002d02';

I_POSITION GROUPS_NAMES
---------- --------------------------------
        -2 wasito
        -1 group2

Since i_position -1 contains the none-existing group you need to move one row all the groups_names from when the group in question is:

SQL> update dm_group_r set groups_names=’wasito’ where i_position=-1 and r_object_id='120a636280002d02';

SQL> update dm_group_r set groups_names=NULL where i_position=-2 and r_object_id='120a636280002d02';

SQL> commit;

If the last row that you need to update doesn’t have any value in any other attributes of that particular row, you can just simply delete the row.

nahoru

WARNING CC-0006

Checking for groups with non-existent super groups
— Query—: select a.r_object_id as p1, a.i_supergroups_names as p2 from dm_group_r a where a.i_supergroups_names is not NULL and a.i_supergroups_names <> ' ' and not exists (select b.group_name from dm_group_s b where b.group_name = a.i_supergroups_names)
WARNING CC-0006: Group object with r_object_id ‚120a636280002d02‘ has a supergroup ‚group3‘ that does not have a corresponding dm_group object
WARNING CC-0006: Group object with r_object_id ‚120a636280003101‘ has a supergroup ‚group3‘ that does not have a corresponding dm_group object

Problem:
The dm_group_r table has a none existing group in i_supergroups_names attribute.

Steps:

  • Dump the attributes of the folder in question.
  • Check the index that the none-group has and remove it using API.
  • If this doesn’t work: Locate the i_position in the underling table and Remove and move the values on row
API>dump,c,120a636280003101
...
USER ATTRIBUTES

  group_name                 : wasito
  group_address              : 
  users_names              []: <none>
  groups_names             []: <none>
  owner_name                 : zarate
  is_private                 : F
  description                : 
  globally_managed           : F
  alias_set_id               : 0000000000000000
  group_source               : 
  group_class                : group
  group_admin                : 

SYSTEM ATTRIBUTES

  r_object_id                : 120a636280003101
  r_modify_date              : 06/26/04 22:09:46
  r_has_events               : F

APPLICATION ATTRIBUTES


INTERNAL ATTRIBUTES

  i_all_users_names        []: <none>
  i_supergroups_names   [0]: group3   
                                         [1]: wasito
  i_is_replica               : F
  i_vstamp                   : 2

API> remove,c,120a636280003101,i_supergroups_names[1]
...
OK
API> save,c,120a636280003101
...
OK

If you get an error try the following steps in SQL as docbase owner:

SQL> select i_position,i_supergroups_names from dm_group_r where r_object_id='120a636280003101';

I_POSITION I_SUPERGROUPS_NAMES
 ---------------- --------------------------------
        -2 wasito
        -1 group3 

Since i_position -1 contains the none-existing group you need to move one row all the groups_names from when the group in question is:

SQL> update dm_group_r set groups_names=’wasito’ where i_position=-1 and r_object_id='120a636280003101';

SQL> update dm_group_r set groups_names=NULL where i_position=-2 and r_object_id='120a636280003101';

SQL> commit;

If the last row that you need to update doesn’t have any value in any other attributes of that particular row, you can just simply delete the row.

nahoru

WARNING CC-0007

Checking for ACLs with non-existent users
— Query—: select a.r_object_id as p1, a.r_accessor_name as p2 from dm_acl_r a where a.r_accessor_name is not NULL and a.r_accessor_name <> ' ' and a.r_accessor_name not like '/%%' ESCAPE '/' and not exists (select b.user_name from dm_user_s b where b.user_name = a.r_accessor_name) and a.r_accessor_name !='dm_owner' and a.r_accessor_name !='dm_group' and a.r_accessor_name !='dm_world'
WARNING CC-0007: ACL object with r_object_id ‚45006e5880000507‘ has a non-existent user ‚test1‘
WARNING CC-0007: ACL object with r_object_id ‚45006e5880000d00‘ has a non-existent user ‚test1‘

Problem:
The ACL contains a non-existing user in r_accessor_name attribute

Steps:

  • Dump the acl.
  • Check the index for the non-existing user.
  • Using remove API call, remove the user per index and also make sure that you remove the same index for r_accessor_permit, r_accessor_xpermit and r_is_group attributes. If CS is 4.2.x this will not have r_accessor_xpermit.

In API:

API> fetch,c,450a636280002512
...
Ok
API> dump,c,450a636280002512
...
USER ATTRIBUTES

  object_name                : peoplesoft_acl
  description                : peoplesoft permission set
  owner_name                 : Miguel_Test52
  globally_managed           : F
  acl_class                  : 0

SYSTEM ATTRIBUTES

  r_object_id                : 450a636280002512
  r_is_internal              : F
  r_accessor_name         [0]: dm_world
                          [1]: dm_owner
                          [2]: dmadmin
                          [3]: test1
  r_accessor_permit       [0]: 3
                          [1]: 7
                          [2]: 7
                          [3]: 7
  r_accessor_xpermit      [0]: 0
                          [1]: 0
                          [2]: 3
                          [3]: 3
  r_is_group              [0]: F
                          [1]: F
                          [2]: F
                          [3]: F
  r_has_events               : F

APPLICATION ATTRIBUTES


INTERNAL ATTRIBUTES

  i_is_replica               : F
  i_vstamp                   : 1 

In this case the index 3 contains the user that we need to remove (test1)

API> remove,c,450a636280002512,r_accessor_name[3]
...
Ok
API> remove,c,450a636280002512,r_accessor_permit[3]
...
Ok
API> remove,c,450a636280002512,r_accessor_xpermit[3]
...
Ok
API> remove,c,450a636280002512,r_is_group[3]
...
Ok
API> save,c,450a636280002512
...
Ok
API> dump,c,450a636280002512
...
USER ATTRIBUTES

  object_name                : peoplesoft_acl
  description                : peoplesoft permission set
  owner_name                 : Miguel_Test52
  globally_managed           : F
  acl_class                  : 0

SYSTEM ATTRIBUTES

  r_object_id                : 450a636280002512
  r_is_internal              : F
  r_accessor_name         [0]: dm_world
                          [1]: dm_owner
                          [2]: dmadmin
  r_accessor_permit       [0]: 3
                          [1]: 7
                          [2]: 7
  r_accessor_xpermit      [0]: 0
                          [1]: 0
                          [2]: 3
  r_is_group              [0]: F
                          [1]: F
                          [2]: F
  r_has_events               : F

APPLICATION ATTRIBUTES


INTERNAL ATTRIBUTES

  i_is_replica               : F
  i_vstamp                   : 2

API>

If they so many users in the acl it seems that the object is too big to update and you get a RPC error.
Remove the entry from SQL and move the last entry to the removed one.
Try the following:

SQL> select i_position from dm_acl_r where r_object_id='45###' and r_accessor_name='tv1091';

i_position =-4

SQL> select min(i_position) from dm_acl where r_object_id='45###' ;

min = -1838

SQL> delete from dm_acl_r where r_object_id='45###' and i_position=-4

SQL> update dm_acl_r set i_position=-4 where r_object_id='45###' and i_position=-1838

SQL> commit;

That fix the issue.

nahoru

ERROR CC-0008

Checking for ACLs with missing dm_acl_r table entries
— Query—: select a.r_object_id as p1 from dm_acl_s a where not exists (select b.r_object_id from dm_acl_r b where b.r_object_id = a.r_object_id)
ERROR CC-0008: ACL with r_object_id ‚450a63628000ad02‘ does not have corresponding dm_acl_r table entries

Problem:
The dm_acl object is missing from the dm_acl_r table

Steps:

  • Select the object name and owner name of the acl.
  • Find out how many dm_sysobject are associated to that particular acl.
  • Change the acl_name and acl_domain of the dm_sysobjects to a none-corrupted acl.
  • Delete the acl in question from SQL.
DQL> select object_name,owner_name from dm_acl where r_object_id='450a63628000ad02';

object_name                owner_name                        
=========================  ================================  

boca_acl                   Miguel_Test52                     
(1 rows affected)
DQL> select count(*) from dm_sysobject where acl_name='boca_acl';

count(*)  
========  

1         
(1 rows affected)
DQL>

Update the dm_sysobjects:

DQL> update dm_sysobject object set acl_name='<acl none-corrupted>', set acl_domain='owner name of the acl' where acl_name='boca_acl'

In SQL as docbase owner:

SQL> delete from dm_acl_s where r_object_id= '450a63628000ad02';

SQL> commit;

nahoru

WARNING CC-0009

Checking for sysobjects with acl_domain set to non-existent user
— Query—: select a.r_object_id as p1, a.acl_domain as p2 from dm_sysobject_s a where a.i_is_deleted = False and not exists (select b.user_name from dm_user_s b where b.user_name = a.acl_domain) and a.acl_domain != 'dm_world' and a.acl_domain != 'dm_group' and a.acl_domain != 'dm_owner'
WARNING CC-0009: Sysobject with r_object_id ‚0c006e5880003b98‘ has acl_domain entry of ‚Sanchez, Terry‘ which is not a valid user
WARNING CC-0009: Sysobject with r_object_id ‚4b006e58800062dd‘ has acl_domain entry of ‚Mattis, Andre‘ which is not a valid user

Problem:
The dm_sysobject has set acl_domain to a non-existing user

Steps:

  • Set the acl_name and acl_domain to another user and his acl.

In DQL:

DQL> update dm_sysobject object set acl_name='<any acl that the existing user owns>', set acl_domain='<existing user>' where r_object_id='0c006e5880003b98'

Or you could set an acl that the docbase owner owns

DQL> update dm_sysobject object set acl_name='<any acl docbase owner owns>', set acl_domain='<docbase owner name>' where r_object_id='0c006e5880003b98'

nahoru

WARNING CC-0010

Checking for sysobjects that belong to non-existent users
— Query—: select a.r_object_id as p1, a.owner_name as p2 from dm_sysobject_s a where a.i_is_deleted = False and not exists (select b.user_name from dm_user_s b where b.user_name = a.owner_name)
WARNING CC-0010: Sysobject with r_object_id ‚09006e58800015cc‘ belongs to owner ‚Harberts, Mark‘ which is not a valid user
WARNING CC-0010: Sysobject with r_object_id ‚09006e58800015da‘ belongs to owner ‚Harberts, Mark‘ which is not a valid user

Problem:
The dm_sysobject object is own by a non-existing user

Steps:

  • Update the owner_name to an existing user.

In DQL:

DQL> update dm_sysobject object set owner_name='existing user' where r_object_id='09006e58800015cc'

or

DQL> update dm_sysobject object set owner_name='existing user' where owner_name='Harberts, Mark'

nahoru

WARNING CC-0011

Checking for sysobjects with non-existent ACLs
— Query—: select a.r_object_id as p1, a.acl_name as p2 from dm_sysobject_s a where a.i_is_deleted = False and not exists (select b.object_name from dm_acl_s b where b.object_name = a.acl_name and b.owner_name = a.acl_domain)
WARNING CC-0011: Sysobject with r_object_id ‚09006e7880068cb8‘ belongs to non-existent ACL ‚dm_45006e788003c4f0‘
WARNING CC-0011: Sysobject with r_object_id ‚09006e7880068cb9‘ belongs to non-existent ACL ‚dm_45006e788003c4f1‘

Problem:
dm_sysobject is poiting to an acl_name where doesn’t exist

Steps:

  • Get a user_name that exists and you want to transfer the objects.
  • Update the acl_domain and acl_name for the user and acl that new user owns (In conjuction of WARNING CC-0009).

To fix WARNING CC-0009, WARNING CC-0010 and WARNING CC-0011

In DQL (WARNING CC-0010):

DQL> update dm_sysobject objects set owner_name='<existing user>' where owner_name='Simmons, Tolliver '

In DQL (WARNING CC-0009 and WARNING CC-0011):

DQL> update dm_sysobject objects set acl_domain='<existing user>', set acl_name='<acl that owns the existing user>' where acl_domain='Simmons, Tolliver '

nahoru

ERROR CC-0012

Checking for ACL objects with missing dm_acl_s entry
— Query—: select distinct a.r_object_id as p1 from dm_acl_r a where not exists (select b.r_object_id from dm_acl_s b where b.r_object_id = a.r_object_id)
ERROR CC-0012: ACL object with r_object_id ‚450a636280006104‘ is missing dm_acl_s entry

Problem:
The dm_acl object is corrupted.

Steps:

  • Using SQL delete the entry in dm_acl_r.

In SQL as docbase owner:

SQL> delete from dm_acl_r where r_object_id= '450a636280006104';

3 rows deleted.

SQL> commit;

Commit complete.

nahoru

ERROR CC-0013

Checking for ACL objects with r_accessor_permit value but missing r_accessor_name value
— Query—: select distinct a.r_object_id as p1, a.object_name as p2, b.r_accessor_permit as p3 from dm_acl_s a, dm_acl_r b where a.r_object_id = b.r_object_id and (b.r_accessor_name is null or b.r_accessor_name = ' ') and b.r_accessor_permit is not null order by a.r_object_id
ERROR CC-0013: ACL object with r_object_id ‚4500d27e800073b8‘, object_name ‚dm_4500d27e800073b8‘ has r_accessor_permit value ‚5‘ with missing r_accessor_name value

Problem:
The dm_acl is missing a r_accessor_name

Steps:

  • Dump the acl in question.
  • Since there is no way to find out the name of the accesor name we need to remove the index for r_accessor_permit, r_accessor_xpermit and r_is_group.

In API:

API>dump,c,4500d27e800073b8
....
USER ATTRIBUTES

  object_name                : dm_4500d27e800073b8
  description                : dm_4500d27e800073b8
  owner_name                 : ERProd_loader01
  globally_managed           : F
  acl_class                  : 0

SYSTEM ATTRIBUTES

  r_object_id                : 4500d27e800073b8
  r_is_internal              : T
  r_accessor_name         [0]: dm_world
                                        [1]: dm_owner
                                        [2]:
  r_accessor_permit       [0]: 3
                                       [1]: 7
                                       [2]: 5
  r_accessor_xpermit      [0]: 0
                                       [1]: 0
                                       [2]: 3
  r_is_group              [0]: F
                                 [1]: F
                                 [2]: F

APPLICATION ATTRIBUTES


INTERNAL ATTRIBUTES

  i_is_replica               : F
  i_vstamp                   : 0

Then since the problem is that r_accessor_name[2] has no value for both errors you need to try the following:

API> remove,c,4500d27e800073b8,r_accessor_name[2]
...
OK
API> remove,c,4500d27e800073b8,r_accessor_permit[2]
...
OK
API> remove,c,4500d27e800073b8,r_accessor_xpermit[2]
...
OK
API> remove,c,4500d27e800073b8,r_is_group[2]
...
OK
API> save,c,4500d27e800073b8
...
OK

nahoru

ERROR CC-0014

Checking for ACL objects with r_accessor_name value but missing r_accessor_permit value
— Query—: select distinct a.r_object_id as p1, a.object_name as p2, b.r_accessor_name as p3 from dm_acl_s a, dm_acl_r b where a.r_object_id = b.r_object_id and b.r_accessor_permit is null and b.r_accessor_name is not null and b.r_accessor_name <> ' ' order by a.r_object_id
ERROR CC-0014: ACL object with r_object_id ‚450a63628000ad02‘, object_name ‚boca_acl‘ has r_access or_name value ‚test‘ with missing r_accessor_permit value

Problem:
The acl object is missing an entry in r_accessor_permit

Steps:

  • Dump the dm_acl object.
  • Set the index missing using API.

In API:

API> dump,c,450a63628000ad02

USER ATTRIBUTES

  object_name                : boca_acl
  description                : dm_450a63628000ad02
  owner_name                 : Miguel_Test52
  globally_managed           : F
  acl_class                  : 0

SYSTEM ATTRIBUTES

  r_object_id                : 450a63628000ad02
  r_is_internal              : F
  r_accessor_name         [0]: dm_world
                          [1]: dm_owner
                          [2]: wasito
                          [3]: test
  r_accessor_permit       [0]: 2
                          [1]: 7
                          [2]: 7
  r_accessor_xpermit      [0]: 0
                          [1]: 0
                          [2]: 0
                          [3]: 0
  r_is_group              [0]: F
                          [1]: F
                          [2]: T
                          [3]: F
  r_has_events               : F

APPLICATION ATTRIBUTES


INTERNAL ATTRIBUTES

  i_is_replica               : F
  i_vstamp                   : 3

API> fetch,c,450a63628000ad02
...
Ok
API> set,c,450a63628000ad02,r_accessor_permit[3]
Set >4
...
Ok
API> save,c,450a63628000ad02
...
Ok
API>

nahoru

ERROR CC-0015

Checking for ACL objects with r_is_group value but missing r_accessor_permit value
— Query—: select distinct a.r_object_id as p1, a.object_name as p2, b.r_is_group as p3 from dm_acl_s a, dm_acl_r b where a.r_object_id = b.r_object_id and b.r_is_group is not null and b.r_accessor_permit is null order by a.r_object_id
ERROR CC-0015: ACL object with r_object_id ‚450a63628000ad02‘, object_name ‚boca_acl‘ has r_is_group value of ‚0‘, but is missing r_accessor_permit value

Problem:
The acl object is missing an entry in r_accessor_permit

Steps:

  • Dump the dm_acl object.
  • Set the index missing using API.

In API:
API> dump,c,450a63628000ad02

USER ATTRIBUTES

object_name : boca_acl
description : dm_450a63628000ad02
owner_name : Miguel_Test52
globally_managed : F
acl_class : 0

SYSTEM ATTRIBUTES

r_object_id : 450a63628000ad02
r_is_internal : F
r_accessor_name [0]: dm_world
[1]: dm_owner
[2]: wasito
[3]: test
r_accessor_permit [0]: 2
[1]: 7
[2]: 7
r_accessor_xpermit [0]: 0
[1]: 0
[2]: 0
[3]: 0
r_is_group [0]: F
[1]: F
[2]: T
[3]: F
r_has_events : F

APPLICATION ATTRIBUTES

INTERNAL ATTRIBUTES

i_is_replica : F
i_vstamp : 3

API> fetch,c,450a63628000ad02

Ok
API> set,c,450a63628000ad02,r_accessor_permit[3]
Set >4

Ok
API> save,c,450a63628000ad02

Ok
API>

nahoru

ERROR CC-0016

Checking for ACL objects with r_is_group value but missing r_accessor_name value
— Query—: select distinct a.r_object_id as p1, a.object_name as p2, b.r_is_group as p3 from dm_acl_s a, dm_acl_r b where a.r_object_id = b.r_object_id and (b.r_accessor_name is null or b.r_accessor_name = ‚ ‚) and b.r_is_group is not null order by a.r_object_id
ERROR CC-0016: ACL object with r_object_id ‚4500d27e800073b8‘, object_name ‚dm_4500d27e800073b8‘ has r_is_group value of ‚0‘, but is missing r_accessor_name value

Problem:
The acl has a missing r_accessor_name and is not a group

Steps:

  • Get the dump of acl.
  • Remove the index for r_accessor_name, r_accessor_permit, r_accessor_xpermit and r_is_group for the one that is missing.

In API:

API>dump,c,4500d27e800073b8
....
USER ATTRIBUTES

  object_name                : dm_4500d27e800073b8
  description                : dm_4500d27e800073b8
  owner_name                 : ERProd_loader01
  globally_managed           : F
  acl_class                  : 0

SYSTEM ATTRIBUTES

  r_object_id                : 4500d27e800073b8
  r_is_internal              : T
  r_accessor_name         [0]: dm_world
                          [1]: dm_owner
                          [2]: 
  r_accessor_permit       [0]: 3
                          [1]: 7
                          [2]: 5
  r_accessor_xpermit      [0]: 0
                          [1]: 0
                          [2]: 3
  r_is_group              [0]: F
                          [1]: F
                          [2]: F

APPLICATION ATTRIBUTES


INTERNAL ATTRIBUTES

  i_is_replica               : F
  i_vstamp                   : 0

Then since the problem is that r_accessor_name[2] has no value for both errors you need to try the following:

API> remove,c,4500d27e800073b8,r_accessor_name[2]
...
OK
API> remove,c,4500d27e800073b8,r_accessor_permit[2]
...
OK
API> remove,c,4500d27e800073b8,r_accessor_xpermit[2]
...
OK
API> remove,c,4500d27e800073b8,r_is_group[2]
...
OK
API> save,c,4500d27e800073b8
...
OK 

nahoru

ERROR CC-0017

Checking for ACL object with r_accessor_name value but missing r_is_group value
— Query—: select distinct a.r_object_id as p1, a.object_name as p2, b.r_accessor_name as p3 from dm_acl_s a, dm_acl_r b where a.r_object_id = b.r_object_id and b.r_accessor_name is not null and b.r_accessor_name <> ' 'and b.r_is_group is null
ERROR CC-0017: ACL object with r_object_id ‚450a63628000ad02‘, object_name ‚boca_acl‘ has r_access or_name value of ‚test‘ but missing r_is_group value

Problem:
The dm_acl object is missing a r_is_group entry

Steps:

  • Dump the acl and locate the index.
  • Set the index for r_is_group.

In API:

API> dump,c,450a63628000ad02

USER ATTRIBUTES

  object_name                : boca_acl
  description                : dm_450a63628000ad02
  owner_name                 : Miguel_Test52
  globally_managed           : F
  acl_class                  : 0

SYSTEM ATTRIBUTES

  r_object_id                : 450a63628000ad02
  r_is_internal              : F
  r_accessor_name         [0]: dm_world
                          [1]: dm_owner
                          [2]: wasito
                          [3]: test
  r_accessor_permit       [0]: 2
                          [1]: 7
                          [2]: 7
                          [3]: 4
  r_accessor_xpermit      [0]: 0
                          [1]: 0
                          [2]: 0
                          [3]: 0
  r_is_group              [0]: F
                          [1]: F
                          [2]: T
  r_has_events               : F

APPLICATION ATTRIBUTES


INTERNAL ATTRIBUTES

  i_is_replica               : F
  i_vstamp                   : 5

API> fetch,c,450a63628000ad02
...
Ok
API> set,c,450a63628000ad02,r_is_group[3]
Set >0
...
Ok
API> save,c,450a63628000ad02
...
Ok
API>

nahoru

ERROR CC-0018

Checking for ACL object with r_accessor_permit value but missing r_is_group value
— Query—: select distinct a.r_object_id as p1, a.object_name as p2, b.r_accessor_permit as p3 from dm_acl_s a, dm_acl_r b where a.r_object_id = b.r_object_id and b.r_accessor_permit is not null and b.r_is_group is null
ERROR CC-0018: ACL object with r_object_id ‚450a63628000ad02‘, object_name ‚boca_acl‘ has r_access or_permit value of ‚4‘ but missing r_is_group value

Problem:
The dm_acl object is missing a r_is_group entry

Steps:

  • Dump the acl and locate the index.
  • Set the index for r_is_group.

In API:

API> dump,c,450a63628000ad02

USER ATTRIBUTES

  object_name                : boca_acl
  description                : dm_450a63628000ad02
  owner_name                 : Miguel_Test52
  globally_managed           : F
  acl_class                  : 0

SYSTEM ATTRIBUTES

  r_object_id                : 450a63628000ad02
  r_is_internal              : F
  r_accessor_name         [0]: dm_world
                          [1]: dm_owner
                          [2]: wasito
                          [3]: test
  r_accessor_permit       [0]: 2
                          [1]: 7
                          [2]: 7
                          [3]: 4
  r_accessor_xpermit      [0]: 0
                          [1]: 0
                          [2]: 0
                          [3]: 0
  r_is_group              [0]: F
                          [1]: F
                          [2]: T
  r_has_events               : F

APPLICATION ATTRIBUTES


INTERNAL ATTRIBUTES

  i_is_replica               : F
  i_vstamp                   : 5

API> fetch,c,450a63628000ad02
...
Ok
API> set,c,450a63628000ad02,r_is_group[3]
Set >0
...
Ok
API> save,c,450a63628000ad02
...
Ok
API>

nahoru

ERROR CC-0019

Checking for sysobjects which are not referenced in dmi_object_type
— Query—: select a.r_object_id as p1 from dm_sysobject_s a where (a.r_object_type = 'dm_job' or a.r_object_type = 'dm_business_pro' or a.r_object_type = 'dm_procedure' or a.r_object_type = 'dm_script' or a.r_object_type = 'dm_query' or a.r_object_type = 'dm_smart_list') and not exists (select b.r_object_id from dmi_object_type b where b.r_object_id = a.r_object_id)
ERROR CC-0019: Sysobject with r_object_id ‚080a636280013113‘ is missing an entry in dmi_object_type

Problem:
The dm_sysobject object is missing the dmi_object_type entry

Steps:

  • The dmi_object_type table has two columns, r_object_id and i_type. The value of i_type is the integer representation of the type ID.
  • Get the string representation of the type ID.

In SQL login as Docbase owner

SQL> select a.r_object_id from dm_type_s a, dm_sysobject_s b where b.r_object_id = '<object id>' and  b.r_object_type = a.name;

Insert a row into dmi_object_type. You will need to convert the type ID from string to integer. The string representation of the type ID is in hexadecimal format.

SQL> insert into dmi_object_type values ('<object id>', <a.r_object_id as integer>);

SQL> commit;

One way to get the integer representation of the type ID is to look it up in dmi_object_type for some other sysobject whose type is the same as that of the sysobject returned by this consistency check.

SQL> select r_object_type from dm_sysobject_s where r_object_id = '<object id>';
 
SQL> select distinct a.i_type from dmi_object_type a , dm_sysobject_s b where b.r_object_type = '<object type>' and  b.r_object_id = a.r_object_id;

nahoru

WARNING CC-0020

Checking for sysobjects that point to non-existent content
— Query—: select a.r_object_id as p1, a.i_contents_id as p2 from dm_sysobject_s a where a.i_is_deleted = False and a.i_contents_id != '0000000000000000' and not exists (select b.r_object_id from dmr_content_s b where b.r_object_id = a.i_contents_id)
WARNING CC-0020: Sysobject with r_object_id ‚09006e788000684b‘ references non-existent content with content id ‚06006e7880003296‘
WARNING CC-0020: Sysobject with r_object_id ‚09006e7880082141‘ references non-existent content with content id ‚06006e7880046b4d‘

Problem:
dm_sysobject is pointing to a non-existing content.

Steps:

  • Set the i_contents_id to 16 zeros and then you should be able to delete or checkout and checkin and set a new content file.

In API:

API> fetch,c,09006e788000684b
...
Ok
API> set,c,09006e788000684b,i_contents_id
Set >0000000000000000
...
Ok
API> save,c,09006e788000684b
...
Ok 

nahoru

WARNING CC-0021

Checking for sysobjects that are linked to non-existent folders
— Query—: select a.r_object_id as p1, a.i_folder_id as p2 from dm_sysobject_r a, dm_sysobject_s b where a.r_object_id = b.r_object_id and b.i_is_deleted = False and a.i_folder_id != '0000000000000000' and not exists (select c.r_object_id from dm_folder_s c where c.r_object_id = a.i_folder_id)
Checking for sysobjects that are linked to non-existent primary cabinets
WARNING CC-0021: Sysobject with r_object_id ‚58008c0b800836f7‘ references a non-existent folder with folder id ‚0b008c0c80000108‘
WARNING CC-0021: Sysobject with r_object_id ‚08008c0b800836f8‘ references a non-existent folder with folder id ‚0b008c0c80000273‘

Problem:
There are dm_sysobjects objects link to a none-existing folders.

Steps:

  • Get the dump attributes of the dm_sysobject in question.
  • Check the value for i_folder_id (i_folder_id [0]: 0b01eaee80000109).
  • Pay attention in the index because we will need to update it and then set it to an existing folder.
  • If the object_id starts with 58 this must be link to /System/DataDictionary (If this folder doesn’t exist anymore we will need to recreate it and link all those dmi_expr_code objects to that folder (58 tag).
  • If the r_object_id is 08 we need to find out which folder should be in.

In API:

API> dump,c,580a636280013b5d

i_folder_id             [0]: 0b0a636280000109

Since the r_object_id starts with tag 58 you need to recreate the folder /System/DataDictionary
Get the r_object_id and update it

In SQL:

SQL> select i_folder_id,i_position from dm_sysobject_r where r_object_id='580a636280013b5d';

I_FOLDER_ID      I_POSITION
---------------- ----------
                         -2
0b0a636280000109         -1

SQL> update dm_sysobject_r set i_folder_id='0b0a636280000109' where r_object_id='580a636280013b5d' and i_position=-1;

1 row updated.

SQL> commit;

Commit complete.

SQL>

For others tag r_object_id’s you need to link it to a folder that exists.

nahoru

WARNING CC-0022

Checking for sysobjects that are linked to non-existent primary cabinets
— Query—: select a.r_object_id as p1, a.i_cabinet_id as p2 from dm_sysobject_s a where a.i_is_deleted = False and not exists (select b.r_object_id from dm_cabinet_s b where b.r_object_id = a.i_cabinet_id)
WARNING CC-0022: Sysobject with r_object_id ‚58008c0b800836f7‘ references a non-existent primary cabinet with id ‚0c008c0c80000104‘
WARNING CC-0022: Sysobject with r_object_id ‚08008c0b800836f8‘ references a non-existent primary cabinet with id ‚0c008c0c80000104‘

Problem:
There are dm_sysobjects objects link to a none-existing cabinet.

Steps:

  • Get the dump attributes of the dm_sysobject in question.
  • Check the value for i_cabinet_id (i_cabinet_id: 0c0a636280000105).
  • We need to set it to an existing cabinet which contains the value of the i_folder_id.
  • If the object_id starts with 58 this must be link to /System cabinet (If this Cabinet doesn’t exist anymore we will need to recreate it and link all those dmi_expr_code objects to that cabinet (58 tag).
  • If the r_object_id is 08 we need to find out which cabinet should be in according to the i_folder_id value

In API:

API> dump,c,580a636280013b5d

i_cabinet_id               : 0c0a636280000105

Since the r_object_id starts with tag 58 you need to recreate the cabinet /System or locate the r_object_id
Get the r_object_id and update it

In SQL:

SQL> select i_cabinet_id from dm_sysobject_s where r_object_id='580a636280013b5d';

I_CABINET_ID
----------------
0c0a636280000105

SQL> update dm_sysobject_s set i_cabinet_id='0c0a636280000105' where r_object_id='580a636280013b5d';

1 row updated.

SQL> commit;

Commit complete.

SQL>

For others tag r_object_id’s you need to link it to a cabinet that exists and contains the i_folder_id

nahoru

WARNING CC-0023

Checking for sysobjects with non-existent i_chronicle_id
— Query—: select a.r_object_id as p1, a.i_chronicle_id as p2 from dm_sysobject_s a where a.i_chronicle_id <> '0000000000000000' and not exists (select * from dm_sysobject_s b where b.r_object_id = a.i_chronicle_id)
WARNING CC-0023: Sysobject with r_object_id ‚09006e7880082141‘ references a non-existent i_chronicle_id ‚09006e788008211f‘
WARNING CC-0023: Sysobject with r_object_id ‚09006e788008214b‘ references a non-existent i_chronicle_id ‚09006e788008211f‘

Problem:
For some reason the root version doesn’t exist anymore.

Steps:

  • Need to get the dump of the objects and check which version are those and check the all tree.
  • Need to change in SQL the i_chronicle_id to the lower version and make it the root i_chronicle_id identifies the root object of a version tree. Since each object in a version tree references the same i_chronicle_id, this consistency check is likely to identify more than one sysobject referencing a non-existent i_chronicle_id.

Repair this problem by finding another object in the version tree to use as the root object. One approach is to identify the immediate successor of the missing root object.

In SQL as docbase owner:

SQL> select r_object_id from dm_sysobject_s where i_chronicle_id = ‘<chronicle id>’ and i_antecedent_id = ‘<chronicle id>’

If this query only returns one result, use it as the new root object of the version tree.

SQL> update dm_sysobject_s set i_antecedent_id = ‘0000000000000000’ where r_object_id = ‘<successor object id>';

SQL> update dm_sysobject_s set i_chronicle_id = '<successor object id>' where i_chronicle_id = ‘<chronicle id>’;

If the query to find the immediate successor of the missing root object returns more than one result, then one or more branches were present at the root object. Create a new sysobject of the appropriate type and use it in place of the missing root object. Remove the CURRENT label from this new sysobject.
The i_branch_cnt must be set to one less than the number of the immediate successors.

SQL> update dm_sysobject_s set i_branch_cnt = ‘<branch count>’ where r_object_id = ‘<new object id>’;

Set the i_antecedent_id of the immediate successors of the missing root object to the ID of the new sysobject.

SQL> update dm_sysobject_s set i_antecedent_id = ‘<new object id>’ where r_object_id = ‘<successor object id>';

Update all objects in the version tree to use the new sysobject as the root of the version tree.

SQL> update dm_sysobject_s set i_chronicle_id = '<new object id>' where i_chronicle_id = ‘<chronicle id>’;

SQL> update dm_sysobject_s set i_chronicle_id='< who ever is the lower version>' where i_chronicle_id='09006e788008211f';

SQL> commit;

nahoru

WARNING CC-0024

Checking for sysobjects with non-existent i_antecedent_id
— Query—: select a.r_object_id as p1, a.i_antecedent_id as p2 from dm_sysobject_s a where a.i_antecedent_id <> '0000000000000000' and not exists (select * from dm_sysobject_s b where b.r_object_id = a.i_antecedent_id)
WARNING CC-0024: Sysobject with r_object_id ‚09006e7880082141‘ references a non-existent i_antecedent_id ‚09006e788008211f‘

Problem:
In this particular case the i_chronicle_id which is the i_antecedent_id is gone

Steps:

  • Need to update i_antecedent_id to 16 zeros

In SQL as docbase owner:

SQL> update dm_sysobject_s set i_antecedent_id='0000000000000000' where i_antecedent_id='09006e788008211f';

SQL> commit;

The i_antecedent_id identifies the previous version of the sysobject. If no object can be found matching the i_antecedent_id then an object in a version tree no longer exists.

If the i_antecedent_id and i_chronicle_id have the same value, then the root object of the version tree no longer exists. Refer to CC-0017 for a description of how to repair this problem.

This consistency check may return more than one sysobject with matching i_ancestor_id. This will happen if the object missing from the version tree was branched.
Start by getting the i_chronicle_id of this version tree.

SQL> select i_chronicle_id, from dm_sysobject_s where r_object_id = '<object id>';

Find the object that is the antecedent of the missing object(s) in the version tree.

SQL> select a.r_object_id from dm_sysobject_s where a.i_chronicle_id = ‘<chronicle_id>’ and a.i_latest_flag = 0 and not exists (select b.r_object_id from dm_sysobject_s where b.i_antecedent_id  = a.r_object_id);

If the consistency check returned only one sysobject, update its i_antecedent_id with the antecedent of the missing object.

SQL> update dm_sysobject_s set i_antecedent_id = ‘<antecedent object id>’ where r_object_id = ‘<object id>’

Otherwise, if the consistency check returned more than one sysobject, create a new sysobject of the appropriate type and use it in place of the missing object. Remove the CURRENT label from this new sysobject. Change the version label as appropriate.
Update the i_chronicle_id and i_antecedent_id of the new sysobject.

SQL> update dm_sysobject_s set i_antecedent_id = ‘<antecedent object id>’, i_chronicle_id = ‘<chronicle id>’ where r_object_id = ‘<new object id>’;

The i_branch_cnt on the new sysobject must be set to one less than the number of the immediate successors.

SQL> update dm_sysobject_s set i_branch_cnt = ‘<branch count>’ where r_object_id = ‘<new object id>’;

Set the i_antecdent_id of the immediate successors of the missing object to the ID of the new sysobject.

SQL> update dm_sysobject_s set i_antecedent_id = ‘<new object id>’ where r_object_id = ‘<object id >';

nahoru

ERROR CC-0025

Checking for sysobjects with missing dm_sysobject_r entries
— Query—: select a.r_object_id as p1 from dm_sysobject_s a where not exists (select b.r_object_id from dm_sysobject_r b where b.r_object_id = a.r_object_id)
ERROR CC-0025: Sysobject with r_object_id ‚09006e5880007a52‘ has dm_sysobject_s entry, but missing dm_sysobject_r entries
ERROR CC-0025: Sysobject with r_object_id ‚09006e5880007c00‘ has dm_sysobject_s entry, but missing dm_sysobject_r entries

Problem:
dm_sysobject is corrupted.

Steps:

  • Login in SQL as docbase owner.
  • select the dm_sysobject_s table and check the attributes r_object_type and i_contents_id
  • Depending of the result that will be the tree that you will need to clean up from SQL since the object is corrupted.
  • If this has a content you need to set the parent_id of dmr_content to Null and parent_count value to zero if parent_id is poiting to only this object if this is pointing to more than 1 parent_id, you will need to remove the parent_id for the index and the value of parent_count – 1

In SQL as Docbase Owner:

SQL> select r_object_type, i_contents_id from dm_sysobject_s where r_object_id='090a636280003106';
  
R_OBJECT_TYPE                    I_CONTENTS_ID
-------------------------------- ----------------
dm_document                      060a636280002102

If this is dm_document

SQL> delete dm_document_s where r_object_id='090a636280003106';
  
SQL> delete dm_sysobject_s where r_object_id='090a636280003106';
  
SQL> delete dmi_object_type where r_object_id='090a636280003106';

If this has content

SQL> select parent_id, i_position from dmr_content_r where r_object_id='060a636280002102';

PARENT_ID        I_POSITION
---------------- ----------
090a636280003106         -1

SQL> select parent_count from dmr_content_s where r_object_id='060a636280002102';

PARENT_COUNT
------------
           1
  
SQL> update dmr_content_r set parent_id=NULL where where r_object_id='060a636280002102' and i_position=-1;

SQL> update dmr_content_s set parent_count=0 where where r_object_id='060a636280002102';
  
SQL> commit;

nahoru

ERROR CC-0026

Check for sysobjects with dm_sysobject_r entries but missing dm_sysobject_s entries
— Query—: select distinct a.r_object_id as p1 from dm_sysobject_r a where not exists (select b.r_object_id from dm_sysobject_s b where b.r_object_id = a.r_object_id)
ERROR CC-0026: Sysobject with r_object_id ‚08005dcc80000375‘ has dm_sysobject_r entries, but missing dm_sysobject_s entry.

Problem:
dm_sysobject is corrupted.

Steps:

  • Login in SQL as docbase owner.
  • select the dmi_object_type table and check the attributes i_type which is the hex of the type.
  • Depending of the result that will be the tree that you will need to clean up from SQL since the object is corrupted.
  • If this has a content you need to set the parent_id of dmr_content to Null and parent_count value to zero if parent_id is poiting to only this object if this is pointing to more than 1 parent_id, you will need to remove the parent_id for the index and the value of parent_count – 1

In SQL as Docbase owner:

SQL> desc dmi_object_type
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
R_OBJECT_ID                               NOT NULL VARCHAR2(16)
I_TYPE                                    NOT NULL NUMBER(10)

SQL> col i_type format 9999999990
SQL> select i_type from dmi_object_type where r_object_id='08005dcc80000375';

     I_TYPE
-----------
-2147483351

SQL>

Open calc(scientific) and copy the number and conver to HEX
Copy the number from 800####

In DQL:

DQL> select name from dm_type where r_object_id like '%80000129';

name                         
===========================  

dm_document                  
(1 rows affected)

If this is a custom object

In SQL as Docbase owner:

SQL> delete <custom type>_s where r_object_id='08005dcc80000375';

SQL> delete <custom type>_r where r_object_id='08005dcc80000375';

SQL> delete dm_sysobject_r where r_object_id='08005dcc80000375';

SQL> delete dmi_object_type where r_object_id='08005dcc80000375';

If this has content

SQL> select parent_id, i_position from dmr_content_r where r_object_id='060a636280002102';

PARENT_ID        I_POSITION
---------------- ----------
08005dcc80000375         -1

SQL> select parent_count from dmr_content_s where r_object_id='060a636280002102';

PARENT_COUNT
------------
           1

SQL> 

SQL> update dmr_content_r set parent_id=NULL where where r_object_id='060a636280002102' and i_position=-1;

SQL> update dmr_content_s set parent_count=0 where where r_object_id='060a636280002102';

SQL> commit;

nahoru

ERROR CC-0027

Checking for folders with missing dm_folder_r table entries
— Query—: select a.r_object_id as p1 from dm_folder_s a where not exists (select b.r_object_id from dm_folder_r b where b.r_object_id = a.r_object_id)
ERROR CC-0027: Folder with r_object_id ‚0b0a63628001a1fc‘ is missing a dm_folder_r table entry

Problem:
dm_folder object will be missing r_object_id, I_position, r_folder_path, and I_ancestor_id for a folder with no _r table entries.

Steps:

  • I_ancestor_id is char(16) and it is the object id of folders or cabinets that contain this folder directly or indirectly.
  • r_folder_patch is a string of varying length which contains the folder paths for all folders where the folder is linked.
  • r_folder_path should never be null, because an object should at LEAST be linked to its primary cabinet (the primary link, see Server API reference for LINK).
  • I_ancestor_id will always have 2 entries at least., the entriy at I_position = -1 will be the r_object_id of the folder. I_ancestor_id will depend on the r_folder_path. For example, if – r_folder_path is /Cabinet1/FolderA/SubFolderB, then I_ancestor_id at I_position 1 will be the r_object_id of “/Cabinet1/FolderA/SubFolderB” (itself), the I_ancestor_id at I_position = -2 will be the r_object_id of “Cabinet1/FolderA” and the r_object_id of I_position = -3 is equal to the r_object_id of “Cabinet”. To determine how many rows are needed in the dm_folder_r table, one has to look at the supertype of folder, sysobject. First, run the query select count(*) from dm_sysobject_s where r_object_id = <id of corrupted object> The number of rows needed in the dm_folder_r table is GREATER than or equal to the number present in the sysobject_r table.

Our goal here is to correct the dm_folder_r object to the most basic level, so that when we perform subsequent operations on the object, nothing bad happens. Now to repair the dm_folder_r table, we will work though an example.Assume that the corrupted object has an object_id = ‘corrupt id’

In SQL as Docbase owner:
rows_in_sys_r = select count(*) from dm_sysobject_r where r_object_id = ‘corrupt_r’

Assume we will put the corrupted object in a folder in the ‘/System’ cabinet called ‘Repaired’
id_of_sys_cabinet = select r_object_id from dm_folder_sv where object_name = ‘/System’
id_of_repaired_folder = select r_object_id from dm_folder_sv where object_name = ‘/System/Repaired’
Assume that rows_in_sys_r = 4.

name_of_corrupted_folder = select object_name from dm_folder_sv where r_object_id = ‘corrupt_id’

We would run the following 4 insert statements.

SQL> Insert into dm_folder_r values (‘corrupt_id’, -1, name_of_corrupted_folder,’corrupt_id’)
SQL> Insert into dm_folder_r values (‘corrupt_id’, -2, NULL, id_of_repaired_folder)
SQL> Insert into dm_folder_r values (‘corrupt_id’, -3, NULL, id_of_system_cabinet)
SQL> Insert into dm_folder_r values (‘corrupt_id’, -4, NULL, NULL)
SQL> commit;

Notice that we still insert a 4th row into dm_folder_r even though both r_folder_path and I_ancestor_id are NULL. This is because dm_sysobject_r has 4 rows in it.

nahoru

ERROR CC-0028

Check for folders that are referenced in dm_folder_r but not in dm_folder_s
— Query—: select distinct a.r_object_id as p1 from dm_folder_r a where not exists (select b.r_object_id from dm_folder_s b where b.r_object_id = a.r_object_id)
ERROR CC-0028: Folder with r_object_id ‚0b0a63628001a1fc‘ has entries in dm_folder_r but is missing a dm_folder_s entry

Problem:
The customer has rows for dm_folder_r, but no corresponding s table entry.

Steps:

  • The dm_folder_s table only contains the r_object_id row.
  • To fix the problem, simply insert the corrupted object’s r_object_id into the dm_folder_s table.

Assume the object_id of the corrupted object = ‚corrupt_id‘

Login into SQL as Docbase owner:

SQL> insert into dm_folder_s values ('corrupt_id');

SQL> commit;

nahoru

ERROR CC-0029

Check for dm_folder objects are not referenced in dmi_object_type
— Query—: select a.r_object_id as p1 from dm_folder_s a where not exists (select b.r_object_id from dmi_object_type b where b.r_object_id = a.r_object_id)
ERROR CC-0029: Folder with r_object_id ‚0b0a63628001a1fc‘ is missing an entry in dmi_object_type table

Problem:
The dmi_object_type doesn’t have the entry for the dm_folder object.

Steps:

  • The dmi_object_table contains 2 rows, r_object_id and I_type. The r_object_id inserted will simply be the r_object_id of the corrupt object, and I_type (integer) will be a decimal representation of the r_object_id of the dm_type object for dm_folder.
  • First find out what is the r_object_id of the „dm_type“ object for dm_folder select r_object_id from dm_type_s where name = 'dm_folder' – Take the last 8 digits of this id and convert this number to decimal.
  • Insert into the dmi_object_type table the object_id and decimal number.

Example:
Assume the object_id of the corrupt_object is called ‚corrupt_id‘

In SQL as Docbase owner:

SQL> select r_object_id from dm_type_s where name = 'dm_folder';

Returns value:
0300014c80000127

Take the last 8 digits, namely 80000127. Convert this from hexadecimal to decimal.
80000127 converts to -2147483353

SQL> insert into dmi_object_type values ('corrupt_id', -2147483353);

SQL> commit;

nahoru

ERROR CC-0030

Checking for dm_folder objects that are missing corresponding dm_sysobject entries
— Query—: select a.r_object_id as p1 from dm_folder_s a where not exists (select b.r_object_id from dm_sysobject_s b where b.r_object_id = a.r_object_id)
ERROR CC-0030: Folder with r_object_id ‚0b0a636280019943‘ is missing an entry in the dm_sysobject table

Problem:
The dm_folder object exists without a corresponding dm_sysobject entry, then a lot of information has been lost that may not be possible to piece back together.

Steps:

  • Check how many objects this folder contains.
  • Check how many subfolders this folder has, if we find one the procedure will be different. Content Technical support if that’s the case.
  • If there is any document associated to this folder we will need to move those documents to another existing folder using SQL.
  • Delete the folder corrupted.

In DQL:
Run the following DQL’s statements to find out if the folder has any object associated.

DQL> select r_object_id from dm_sysobject where any i_folder_id='0b0a636280019943';

r_object_id       
================  

090a63628001ad08  
(1 rows affected)

If one of those object starts with „0b…#“ report to Tech Support.
If those objects starts with „09….“ you need to link those objects to an existing folder.
Using SQL as docbase onwer find out the position of the folder that is missing for those objects:

SQL> select r_object_id,i_position from dm_sysobject_r where i_folder_id='0b0a636280019943';

Change it to an existing folder:

SQL> update dm_sysobject_r set i_folder_id='<existing folder' where r_object_id='<r_object_id of the document that is associated to the corrupted folder>' and i_position=<value of the i_position where the corrupted folder is set>;

Example:

SQL> update dm_sysobject_r set i_folder_id='0b0a63628001ad0a' where r_object_id='090a63628001ad08' and i_position=-1;

Then you just need to delete the entries for the corrupted folder:

SQL> delete from dm_sysobject_r where r_object_id='0b0a63628001ad0a';

3 rows deleted.

SQL> delete from dm_folder_s where r_object_id='0b0a63628001ad0a';

1 row deleted.

SQL> delete from dm_folder_r where r_object_id='0b0a63628001ad0a';

3 rows deleted.

SQL> delete from dmi_object_type where r_object_id='0b0a63628001ad0a';

1 row deleted.

SQL> commit;

Commit complete.

nahoru

WARNING CC-0031

Checking for folders with non-existent ancestor_id
— Query—: select a.r_object_id as p1, a.i_ancestor_id as p2 from dm_folder_r a where a.i_ancestor_id is not NULL and a.i_ancestor_id <> '0000000000000000' and not exists (select b.r_object_id from dm_sysobject_s b where b.r_object_id = a.i_ancestor_id)
WARNING CC-0031: Folder with r_object_id ‚0b006e7880034a13‘ references a non-existent ancestor_id ‚0c006e788000694e‘
WARNING CC-0031: Folder with r_object_id ‚0b006e7880034a13‘ references a non-existent ancestor_id ‚0c006e788000694e‘
WARNING CC-0031: Folder with r_object_id ‚0b006e7880049b86‘ references a non-existent ancestor_id ‚0c006e788000694e‘

Problem:
The i_ancestor_id path is corrupted.

Steps:

  • CT needs to run the dm_fixfolders.ebs
dmbasic -f dm_fix_folders.ebs -e EntryFix -- <docbasename> <username> <password> 1

If for some reason this script doesn’t fix the problem. An easy way to do this is with the remove API command.
Assume that ‘corrupt id’ is the object id of the dm_folder object which has an incorrect ancestor id
Assume that ‘bad ancestor id’ is the object_id of a non-existant dm_folder object.

In SQL, find out the I_position of the bad ancestor id index = select i_position from dm_folder_r where r_object_id = ‘corrupt id’ and i_ancestor_id = ‘bad ancestor id’

API> remove,c,’corrupt id’, i_ancestor_id[index]

nahoru

ERROR CC-0032

Checking for cabinet that have missing dm_folder_r table entries
— Query—: select a.r_object_id as p1 from dm_cabinet_s a where not exists (select b.r_object_id from dm_folder_r b where b.r_object_id = a.r_object_id)
ERROR CC-0032: Cabinet with r_object_id ‚0c0a63628001ad40‘ is missing entries in the dm_folder_r table

Problem:
The object is missing r_object_id, I_position, r_folder_path, and I_ancestor_id of dm_folder_r table.
Since a cabinet is a subtype of dm_folder with no different in r attributes. Therefore the fix should be the same as for CC-0027
Steps:

  • i_ancestor_id is char(16) and it is the object id of folders or cabinets that contain this folder directly or indirectly.
  • r_folder_patch is a string of varying length which contains the folder paths for all folders where the folder is linked.
  • r_folder_path should never be null, because an object should at LEAST be linked to its primary cabinet (the primary link, see Server API reference for LINK).
  • i_ancestor_id will always have 2 entries at least., the entriy at I_position = -1 will be the r_object_id of the folder. I_ancestor_id will depend on the r_folder_path. For example, if – r_folder_path is /Cabinet1/FolderA/SubFolderB, then I_ancestor_id at I_position 1 will be the r_object_id of “/Cabinet1/FolderA/SubFolderB” (itself), the I_ancestor_id at I_position = -2 will be the r_object_id of “Cabinet1/FolderA” and the r_object_id of I_position = -3 is equal to the r_object_id of “Cabinet”. To determine how many rows are needed in the dm_folder_r table, one has to look at the supertype of folder, sysobject. First, run the query select count(*) from dm_sysobject_s where r_object_id = <id of corrupted object> The number of rows needed in the dm_folder_r table is GREATER than or equal to the number present in the sysobject_r table.

Our goal here is to correct the dm_folder_r object to the most basic level, so that when we perform subsequent operations on the object, nothing bad happens. Now to repair the dm_folder_r table, we will work though an example.Assume that the corrupted object has an object_id = ‘corrupt id’

In SQL as Docbase owner:
rows_in_sys_r = select count(*) from dm_sysobject_r where r_object_id = ‘corrupt_r’

Assume we will put the corrupted object in a folder in the ‘/System’ cabinet called ‘Repaired’

id_of_sys_cabinet = select r_object_id from dm_folder_sv where object_name = ‘/System’

id_of_repaired_folder = select r_object_id from dm_folder_sv where object_name = ‘/System/Repaired’
Assume that rows_in_sys_r = 4.

name_of_corrupted_folder = select object_name from dm_folder_sv where r_object_id = ‘corrupt_id’

We would run the following 4 insert statements.

SQL> Insert into dm_folder_r values (‘corrupt_id’, -1, name_of_corrupted_folder,’corrupt_id’)
SQL> Insert into dm_folder_r values (‘corrupt_id’, -2, NULL, id_of_repaired_folder)
SQL> Insert into dm_folder_r values (‘corrupt_id’, -3, NULL, id_of_system_cabinet)
SQL> Insert into dm_folder_r values (‘corrupt_id’, -4, NULL, NULL)
SQL> commit;

Notice that we still insert a 4th row into dm_folder_r even though both r_folder_path and I_ancestor_id are NULL. This is because dm_sysobject_r has 4 rows in it.

nahoru

ERROR CC-0033

Checking for cabinets that are missing an entry in dmi_object_type
— Query—: select a.r_object_id as p1 from dm_cabinet_s a where not exists (select b.r_object_id from dmi_object_type b where b.r_object_id = a.r_object_id)
ERROR CC-0033: Cabinet with r_object_id ‚0c0a63628001ad40‘ is missing an entry in the dmi_object_type table

Problem:
The dmi_object_type is missing the entry for the cabinet id.

Steps:

  • The dmi_object_table contains 2 rows, r_object_id and I_type. The r_object_id inserted will simply be the r_object_id of the corrupt object, and i_type (integer) will be a decimal representation of the r_object_id of the dm_type object for dm_cabinet.
  • First get the r_object_id of another cabinet that is not corrupted.
  • Find out what is the i_type of the „dmi_object_type“ object for dm_cabinet.

In SQL as docbase owner

SQL> select r_object_id from dm_sysobject_s where r_object_type=’dm_cabinet’;

R_OBJECT_ID
----------------
0c0a636280010803

Pick any of the results:

SQL> col i_type format 9999999990
SQL> select i_type from dmi_object_type where r_object_id='0c0a636280010803';

     I_TYPE
-----------
-2147483352 

Assume the object_id of the corrupt_object is called ‚corrupt_id‘

SQL> insert into dmi_object_type values ('corrupt_id', -2147483389);

SQL> commit;

nahoru

ERROR CC-0034

Checking for folder objects with missing dm_sysobject_r entries
— Query—: select a.r_object_id as p1, count(*) as p2 from dm_folder_r a where not exists (select b.r_object_id from dm_sysobject_r b where b.r_object_id = a.r_object_id and b.i_position = a.i_position) group by a.r_object_id
ERROR CC-0034: Folder object with r_object_id ‚0b000fa0800e6820‘ is missing 2 entries from the dm_sysobject_r table
ERROR CC-0034: Folder object with r_object_id ‚0b000fa0801dd80d‘ is missing 4 entries from the dm_sysobject_r table

Problem:
There are some folders that don’t have an entry on dm_sysobject_r, basically the folder is corrupted.

Steps:

  • Get the r_folder_path and i_ancestor_id values to see which folder or cabinet was link the corrupted folder.
  • Insert two rows with values on r_object_id, i_position, r_version_label and i_folder_id.

In SQL as Docbase owner:

SQL> select r_folder_path,i_ancestor_id from dm_folder_r where r_object_id='0b0a636280019943';

R_FOLDER_PATH   		I_ANCESTOR_ID
-----------------		----------------
/zarate/deleteme		0b0a636280019943
				        0c0a636280000104

Get the object_id of the cabinet or folder that contains this corrupted folder in this case will be zarate cabinet which is „0c0a636280000104“
Insert the following two rows:

SQL> insert into dm_sysobject_r (r_object_id,i_position,r_version_label,i_folder_id) values ('<r_object_id of the corrupted folder>',-1,'1.0','<folder id of the cabinet or folder that contains the corrupted folder>');

Example:

SQL> insert into dm_sysobject_r (r_object_id,i_position,r_version_label,i_folder_id) values ('0b0a636280019943',-1,'1.0','0c0a636280000104');

1 row created.

SQL> insert into dm_sysobject_r (r_object_id,i_position,r_version_label) values ('<r_object_id of the corrupted folder>',-2,'CURRENT');

Example:
SQL> insert into dm_sysobject_r (r_object_id,i_position,r_version_label) values ('0b0a636280019943',-2,'CURRENT');

1 row created.

SQL> commit;

Commit complete.

SQL>

nahoru

ERROR CC-0035

Checking for folder objects with null r_folder_path
— Query—: select distinct a.r_object_id as p1 from dm_folder_s a where not exists (select b.r_object_id from dm_folder_r b where a.r_object_id = b.r_object_id and b.r_folder_path is not null and b.r_folder_path <> ' ')
Error CC-0035: Folder object with r_object_id ‚0b001fa8800de397‘ has NULL r_folder_path

Problem:
The r_folder_path attribute is corrupted.

Steps:

  • CT needs to run the dm_fixfolders.ebs
dmbasic -f dm_fix_folders.ebs -e EntryFix -- <docbasename> <username> <password> 1

SN 21426
If this doesn’t work you will need to update the r_folder_path

In API:

API> fetch,c,<folder id>
API> set,c,l,r_folder_path[0]
SET> full path
API> save,c,l

nahoru

ERROR CC-0036

Checking for documents with a dm_sysobject_s entry but no dm_document_s entry
— Query—: select a.r_object_id as p1 from dm_sysobject_s a where a.r_object_type = 'dm_document' and not exists (select b.r_object_id from dm_document_s b where b.r_object_id = a.r_object_id)
ERROR CC-0036: Document with r_object_id ‚0b005d5e8000ad15‘ has an entry in dm_sysobject_s but is missing an entry in

Problem:
dm_document_s is a simple table with only 1 row of r_object_id.

Steps:

  • Assume ‘corrupt id’ is the id which is missing from dm_sysobject_s

In SQL as Docbase owner

SQL> insert into dm_document_s values ('corrupt id');
SQL> commit;

nahoru

ERROR CC-0037

Checking for documents with missing dm_sysobect_s entries
— Query—: select a.r_object_id as p1 from dm_document_s a where not exists (select b.r_object_id from dm_sysobject_s b where b.r_object_id = a.r_object_id)
ERROR CC-0037: Document with r_object_id ‚09001a5d80031319‘ is missing a corresponding entry in dm_sysobject_s table
ERROR CC-0037: Document with r_object_id ‚09001a5d80031327‘ is missing a corresponding entry in dm_sysobject_s table
ERROR CC-0037: Document with r_object_id ‚09001a5d8003132a‘ is missing a corresponding entry in dm_sysobject_s table

Problem:
The dm_document_s table is missing the entry.

Steps:

  • You can just simply add the corrupted id.

In SQL as docbase owner:

SQL> insert into dm_document_s(‘<corrupt id>’);

But, there could be some documents are missing dm_sysobject_s entries.
If that’s the case you should try the following:

Run the following queries from SQL and see if there are any rows return see example below:

SQL> select * from dm_sysobject_r where r_object_id in ('09001a5d80031319','09001a5d80031327','09001a5d8003132a');
 
no rows selected
 
SQL> select * from dm_sysobject_s where r_object_id in ('09001a5d80031319','09001a5d80031327','09001a5d8003132a');
 
no rows selected
 
SQL> select a.r_object_id from dm_document_s a where not exists (select b.r_object_id from dm_sysobject_s b where b.r_object_id = a.r_object_id);
 
R_OBJECT_ID
----------------
09001a5d80031319
09001a5d80031327
09001a5d8003132a 

We also should find out if there are other tables populated. There could be subtype of dm_document.
Run the following from SQL:

SQL>set numwidth 20;
SQL>select i_type from dmi_object_type where r_object_id in '09001a5d80031319, 09001a5d80031327, 09001a5d8003132a ';

The results could be like this

              I_TYPE
--------------------
         -2147483272
         -2147483272
         -2147483272

After this, convert the above number into hex should be 80000178. This gives you the r_object_id of the dm_type object
Then run the query:

SQL> select name from dm_type_s where r_object_id like '%80000178';

results could be

NAME
---------------------------
web_articles

In this case, customer have a custom subtype of dm_document. We need to have the customer delete the rows from the custom type as well.
Run the below iapi and make sure the type exists.
From IAPI run:

API> retrieve,c,dm_type where name='web_articles'
...
03001a5d80000178

Last sanity check. Have customer run the following SQL queries and see if these rows exist in these tables. If so, have the customer delete the rows directly from SQL.

select * from web_article_s where r_object_id in ('09001a5d80031319, 09001a5d80031327, 09001a5d8003132a ');

select * from dm_sysobject_s where r_object_id in '09001a5d80031319, 09001a5d80031327, 09001a5d8003132a ');    

select * from dmi_object_type where r_object_id in ('09001a5d80031319, 09001a5d80031327, 09001a5d8003132a ');

select * from dm_document_s where r_object_id in ('09001a5d80031319, 09001a5d80031327, 09001a5d8003132a ');

Check if this has has content:

SQL> select r_object_id, i_position from dmr_content_r where parent_id='09001a5d80031327';

PARENT_ID        I_POSITION
---------------- ----------
060a636280002102         -1

SQL> select parent_count from dmr_content_s where r_object_id='060a636280002102';

PARENT_COUNT
------------
           1

SQL> update dmr_content_r set parent_id=NULL where where r_object_id='060a636280002102' and i_position=-1;
 
SQL> update dmr_content_s set parent_count=0 where where r_object_id='060a636280002102';

SQL> commit;

Before doing any deletion from the Database, make sure do a backup of the tables. Try to run the consistency_checker job again. The error should no longer exist.

nahoru

ERROR CC-0038

Checking for documents with missing dmi_object_type entry
— Query—: select a.r_object_id as p1 from dm_document_s a where not exists (select b.r_object_id from dmi_object_type b where b.r_object_id = a.r_object_id)
ERROR CC-0038: Document with r_object_id ‚0900a88680029f54‘ is missing an entry in dmi_object_type table
ERROR CC-0038: Document with r_object_id ‚0900a88680029f51‘ is missing an entry in dmi_object_type table

Problem:
The dmi_object_type is missing the entry for the document id.

Steps:

  • Get the dump of the r_object_id’s.
  • Check the r_object_type value.
  • If this is a custom type you are going to check all the hierarchy in the _s and _r tables to see if the object exists starting from dmi_object_type and then from dm_sysobject_s and _r.

In SQL as docbase owner:

SQL> select count(*) from dmi_object_type where r_object_id='0900a88680029f54';
SQL> select count(*) from dm_sysobject_s where r_object_id='0900a88680029f54';
SQL> select count(*) from dm_sysobject_r where r_object_id='0900a88680029f54';
SQL> select count(*) from dm_document_s where r_object_id='0900a88680029f54';

If the object exist in all the hierarchy except dmi_object_type you will need to insert the r_object_id and i_type, for that you need to follow:

Get the r_object_id of another object that has the same type (dm_document for example)

SQL> col i_type format 99999999990;
SQL> select * from dmi_object_type where r_object_id='09001a988000ed19';

R_OBJECT_ID            I_TYPE
---------------- ------------
09001a988000ed19  -2147483351

Get the i_type value and insert the information into dmi_object_type

SQL> insert into dmi_object_type values('09001a988000ed19','-2147483351');

1 row created.

SQL> commit;

Commit complete.

If the object doesn’t exist in the other tables such dm_sysobject or custom types tables you will to clean up everything including the content. As per SN 26104

nahoru

WARNING CC-0039

Checking for content objects that reference non-existent parents
— Query—: select a.r_object_id as p1, a.parent_id as p2 from dmr_content_r a where a.parent_id <> '0000000000000000' and not exists (select b.r_object_id from dm_sysobject_s b where b.r_object_id = a.parent_id)
WARNING CC-0039: Content object with r_object_id ‚06001fa78000272b‘ has non-existent parent object with id ‚09001fa6800154cf‘

Problem:
The content object is pointing to a non-existing dm_sysobject

Steps:

  • Get how many values do you have in the attribute parent_id.
  • Set the parent_id to NULL and parent_count=0
SQL> select parent_id, i_position from dmr_content_r where r_object_id='06001fa78000272b';

PARENT_ID        I_POSITION
---------------- ----------
09001fa6800154cf         -1

SQL> select parent_count from dmr_content_s where r_object_id='06001fa78000272b';

PARENT_COUNT
------------
           1

SQL> 

SQL> update dmr_content_r set parent_id=NULL where r_object_id='060a636280002102' and i_position=-1;

SQL> update dmr_content_s set parent_count=0 where r_object_id='060a636280002102';

SQL> commit;

Dm_clean job will remove orphaned content object and its content file.

nahoru

WARNING CC-0040

Checking for content with invalid storage_id
— Query—: select a.r_object_id as p1, a.storage_id as p2 from dmr_content_s a where a.storage_id != '0000000000000000' and not exists (select b.r_object_id from dm_store_s b where b.r_object_id = a.storage_id)
WARNING CC-0040: Content object with r_object_id ‚06001fa78000274e‘ has invalid storage_id ‚28001fa680000100‘

Problem:
The storage_id in the dmr_content object is pointing to a non-existing filestore

Steps:

  • Get the parent_id value for the dmr_content.
  • dump the dm_sysobject using the parent_id value.
  • Check the value for the a_storage_type.
  • Check the r_object_id of the a_storage_type in dm_filestore and then set the new value to the dmr_content object.
DQL> select parent_id from dmr_content where r_object_id='06001fa78000274e'

Get the parent_id and get the a_storage_type

DQL> select a_storage_type from dm_sysobject where r_object_id='<parent_id>'

Select the object_id of the filestore

DQL> select r_object_id from dm_filestore where name='filestore_02'

r_object_id       
================  

28001a9880000105  
(1 rows affected)
DQL>

In SQL:

SQL> update dmr_content_s set storage_id='28001a9880000105' where r_object_id='06001a9880008500';

1 row updated.

SQL> commit;

Commit complete.

nahoru
Pokračování příště…

Michal Šika