Example 1 The following command verifies the entire mf_personnel database because the All qualifier is specified: $ RMU/VERIFY/ALL/LOG MF_PERSONNEL.RDB Example 2 The following command verifies the storage areas EMPIDS_LOW, EMPIDS_MID, and EMPIDS_OVER in the mf_personnel database: $ RMU/VERIFY/AREAS=(EMPIDS_LOW,EMPIDS_MID,EMPIDS_OVER)/LOG - _$ MF_PERSONNEL.RDB Example 3 The following command performs only a checksum verification on all the storage areas in the database called large_database. The Checksum_Only qualifier quickly detects obvious checksum problems with the database. If a checksum problem is found on a page, you can dump the page by using the RMU Dump command, and verify the appropriate logical areas and indexes. $ RMU/VERIFY/AREAS=*/CHECKSUM_ONLY/LOG LARGE_DATABASE Example 4 The following command verifies the Candidates and Colleges tables: $ RMU/VERIFY/LAREAS=(CANDIDATES,COLLEGES)/LOG MF_PERSONNEL.RDB Example 5 The following example displays the behavior of the index verification method Oracle RMU employs beginning in Oracle Rdb V7.0. The first RMU Verify command shows the log output when the command is issued under Oracle Rdb V6.1. The second RMU Verify command shows the log output when the command is issued under Oracle Rdb V7.0. $ @SYS$LIBRARY:RDB$SETVER 6.1 $ SET DEF DB1:[V61] $ RMU/VERIFY/INDEXES=EMP_EMPLOYEE_ID/DATA MF_PERSONNEL.RDB/LOG %RMU-I-BGNROOVER, beginning root verification %RMU-I-ENDROOVER, completed root verification %RMU-I-DBBOUND, bound to database "DB1:[V61]MF_PERSONNEL.RDB;1" %RMU-I-OPENAREA, opened storage area RDB$SYSTEM for protected retrieval %RMU-I-BGNAIPVER, beginning AIP pages verification %RMU-I-ENDAIPVER, completed AIP pages verification %RMU-I-BGNABMSPM, beginning ABM pages verification %RMU-I-OPENAREA, opened storage area MF_PERS_SEGSTR for protected retrieval %RMU-I-ENDABMSPM, completed ABM pages verification %RMU-I-BGNNDXVER, beginning verification of index EMP_EMPLOYEE_ID %RMU-I-OPENAREA, opened storage area EMPIDS_LOW for protected retrieval %RMU-I-OPENAREA, opened storage area EMPIDS_MID for protected retrieval %RMU-I-OPENAREA, opened storage area EMPIDS_OVER for protected retrieval %RMU-I-ENDNDXVER, completed verification of index EMP_EMPLOYEE_ID %RMU-I-CLOSAREAS, releasing protected retrieval lock on all storage areas %RMU-S-ENDVERIFY, elapsed time for verification : 0 00:00:09.14 $ @SYS$LIBRARY:RDB$SETVER 7.0 $ SET DEF DB1:[V70] $ RMU/VERIFY/INDEXES=EMP_EMPLOYEE_ID/DATA MF_PERSONNEL.RDB/LOG %RMU-I-BGNROOVER, beginning root verification %RMU-I-ENDROOVER, completed root verification %RMU-I-DBBOUND, bound to database "DB1:[V70]MF_PERSONNEL.RDB;1" %RMU-I-OPENAREA, opened storage area RDB$SYSTEM for protected retrieval %RMU-I-BGNAIPVER, beginning AIP pages verification %RMU-I-ENDAIPVER, completed AIP pages verification %RMU-I-BGNABMSPM, beginning ABM pages verification %RMU-I-ENDABMSPM, completed ABM pages verification %RMU-I-BGNNDXVER, beginning verification of index EMP_EMPLOYEE_ID %RMU-I-OPENAREA, opened storage area EMPIDS_LOW for protected retrieval %RMU-I-OPENAREA, opened storage area EMPIDS_MID for protected retrieval %RMU-I-OPENAREA, opened storage area EMPIDS_OVER for protected retrieval %RMU-I-ENDNDXVER, completed verification of index EMP_EMPLOYEE_ID %RMU-I-BSGPGLARE, beginning verification of EMPLOYEES logical area as part of EMPIDS_LOW storage area %RMU-I-ESGPGLARE, completed verification of EMPLOYEES logical area as part of EMPIDS_LOW storage area %RMU-I-BSGPGLARE, beginning verification of EMPLOYEES logical area as part of EMPIDS_MID storage area %RMU-I-ESGPGLARE, completed verification of EMPLOYEES logical area as part of EMPIDS_MID storage area %RMU-I-BSGPGLARE, beginning verification of EMPLOYEES logical area as part of EMPIDS_OVER storage area %RMU-I-ESGPGLARE, completed verification of EMPLOYEES logical area as part of EMPIDS_OVER storage area %RMU-I-IDXVERSTR, Beginning index data verification of logical area 69 (EMPLOYEES). %RMU-I-IDXVEREND, Completed data verification of logical area 69. %RMU-I-IDXVERSTR, Beginning index data verification of logical area 70 (EMPLOYEES). %RMU-I-IDXVEREND, Completed data verification of logical area 70. %RMU-I-IDXVERSTR, Beginning index data verification of logical area 71 (EMPLOYEES). %RMU-I-IDXVEREND, Completed data verification of logical area 71. %RMU-I-CLOSAREAS, releasing protected retrieval lock on all storage areas %RMU-S-ENDVERIFY, elapsed time for verification : 0 00:00:11.36 Example 6 The following example loads data into a table, verifies the table, and then identifies loaded rows that violated a constraint. Because the Noconstraints qualifier is specified with the RMU Load command, data that violates database integrity might be added to the database. The second RMU Verify command verifies the table that was just loaded and reveals that data that violates constraints on the table was indeed loaded. An SQL command is issued to determine which rows violated the constraint so that they can either be removed from the database, or added to the EMPLOYEES table to restore database integrity. The final RMU Verify command checks the constraint again to ensure that changes made have restored the integrity of the database. $ ! $ ! Load data into the JOB_HISTORY table of the mf_personnel database. $ ! Specify the Noconstraints qualifier: $ ! $ RMU/LOAD/RECORD_DEFINITION=(FILE=JOB_HIST.RRD, FORMAT=TEXT) - _$ MF_PERSONNEL.RDB JOB_HISTORY JOB_HIST.UNL/NOCONSTRAINTS %RMU-I-DATRECREAD, 18 data records read from input file. %RMU-I-DATRECSTO, 18 data records stored. $ ! $ ! Verify the JOB_HISTORY table: $ ! $ RMU/VERIFY/CONSTRAINTS=(TABLE=JOB_HISTORY) MF_PERSONNEL.RDB %RMU-W-CONSTFAIL, Verification of constraint "JOB_HISTORY_FOREIGN1" has failed. $ ! $ ! Issue SQL statements to determine what the definition of the $ ! constraint is and which of the loaded rows violated $ ! the constraint. Then issue an SQL command to insert data that will $ ! restore the data integrity of the database: $ SQL SQL> ATTACH 'FILENAME MF_PERSONNEL.RDB'; SQL> SHOW TABLE JOB_HISTORY . . . JOB_HISTORY_FOREIGN1 Foreign Key constraint Column constraint for JOB_HISTORY.EMPLOYEE_ID Evaluated on COMMIT Source: JOB_HISTORY.EMPLOYEE_ID REFERENCES EMPLOYEES (EMPLOYEE_ID) . . . SQL> SELECT DISTINCT(EMPLOYEE_ID) cont> FROM JOB_HISTORY cont> WHERE NOT EXISTS cont> (SELECT * cont> FROM EMPLOYEES AS E cont> WHERE E.EMPLOYEE_ID = JOB_HISTORY.EMPLOYEE_ID); EMPLOYEE_ID 10164 10165 10166 10167 10168 10169 6 rows selected SQL> INSERT INTO EMPLOYEES (EMPLOYEE_ID, LAST_NAME) cont> VALUES ('10164', 'Smith'); SQL> INSERT INTO EMPLOYEES (EMPLOYEE_ID, LAST_NAME) cont> VALUES ('10165', 'Frederico'); SQL> INSERT INTO EMPLOYEES (EMPLOYEE_ID, LAST_NAME) cont> VALUES ('10166', 'Watts'); SQL> INSERT INTO EMPLOYEES (EMPLOYEE_ID, LAST_NAME) cont> VALUES ('10167', 'Risley'); SQL> INSERT INTO EMPLOYEES (EMPLOYEE_ID, LAST_NAME) cont> VALUES ('10168', 'Pietryka'); SQL> INSERT INTO EMPLOYEES (EMPLOYEE_ID, LAST_NAME) cont> VALUES ('10169', 'Jussaume'); SQL> COMMIT; SQL> EXIT $ ! $ ! Check that data integrity has been restored: $ ! $ RMU/VERIFY/CONSTRAINTS=(CONSTRAINTS=JOB_HISTORY_FOREIGN1, - _$ TABLE=JOB_HISTORY) MF_PERSONNEL.RDB $ ! $ ! No messages are returned. Data integrity has been restored. Example 7 The following example creates an external function in which the external name is incorrect. When the function is verified, Oracle RMU cannot find the entry point and returns an error. The external function is then dropped and then re-created correctly. The verification now succeeds: $ ! Attach to database and create a function. The external name is $ ! mistyped: $ ! SQL> ATTACH 'filename mf_personnel.rdb'; SQL> create function SQRT (in double precision) returns double precision; cont> external name MTH$SORT location 'SYS$SHARE:MTHRTL' cont> language GENERAL cont> GENERAL PARAMETER STYLE; SQL> COMMIT; SQL> EXIT; $ ! $ ! Verify the function: $ ! $ RMU/VERIFY/ROUTINES MF_PERSONNEL.RDB %RMU-E-NOENTRPT, No entry point found for external routine SQRT. Image name is SYS$SHARE:MTHRTL. Entry point is MTH$SORT. $ ! $ ! Oracle RMU cannot find the entry point. Drop the $ ! function and reenter correctly: $ ! $ SQL SQL> ATTACH 'FILENAME mf_personnel.rdb'; SQL> DROP FUNCTION SQRT; SQL> create function SQRT (in double precision) returns double precision; cont> external name MTH$SQRT location 'SYS$SHARE:MTHRTL' cont> language GENERAL cont> GENERAL PARAMETER STYLE; SQL> COMMIT; SQL> EXIT; $ ! $ ! Verification is now successful: $ ! $ RMU/VERIFY/ROUTINES MF_PERSONNEL.RDB Example 8 The following example demonstrates that the RMU Verify command verifies disabled constraints only when you explicitly specify the disabled constraint. $ SQL SQL> ATTACH 'FILENAME MF_PERSONNEL.RDB'; SQL> -- Disable the EMP_SEX_VALUES constraint. SQL> ALTER TABLE EMPLOYEES DISABLE CONSTRAINT EMP_SEX_VALUES; SQL> COMMIT; SQL> -- Insert a value that violates the EMP_SEX_VALUES constraint. SQL> INSERT INTO EMPLOYEES cont> (EMPLOYEE_ID, LAST_NAME, SEX) cont> VALUES ('99999', 'JICKLING', 'G'); 1 row inserted SQL> COMMIT; SQL> EXIT; $ ! $ ! The following two verify commands do not return an error $ ! because the disabled constraint is not explicitly specified. $ ! $ RMU/VERIFY MF_PERSONNEL.RDB $ RMU/VERIFY MF_PERSONNEL.RDB/CONSTRAINTS $ ! $ ! The following verify command returns an warning message to $ ! inform you that data that violates the disabled constraint $ ! has been inserted into the database. $ ! $ RMU/VERIFY MF_PERSONNEL.RDB/CONSTRAINT=(CONSTRAINT=EMP_SEX_VALUES) %RMU-W-CONSTFAIL, Verification of constraint "EMP_SEX_VALUES" has failed.