--- task: Check PROCESS Service with opcdbg (database check, classes, objects, performance) version: R1.03 source: IM 36K10L10-01EN §4; practiced on the test system with CI-Eng-Sample 2026-09-30 status: verified (read-only actions and Reset class) --- # PROCESS Service checks with `opcdbg` `opcdbg` is interactive. Answers can be piped in, one per line, in Bash; always add a time-out and end with `-1` lines, because on end of input it repeats the last prompt forever. `opcdbg 0 ` starts in a menu on node 0 (this node). Times are printed in **GMT**. Only the actions below are read-only. Do not use insert/modify/delete, *Database repair*, *Reset* (utilities) or *Modify attribute value* without the user's approval. | Check | Command (Bash) | Output | |---|---|---| | Database consistency | `printf '5\n-1\n-1\n' \| timeout 60 opcdbg 0 5` | Counts per store (trigger groups, classes, sources, code, objects, signals, attributes), then checks; warnings such as `No compiled code found for class (cls_id = …)` | | Class details | `printf '2\n5\nN\n\n-1\n-1\n' \| timeout 20 opcdbg 0` | Language, priority, modified/compiled times, cls_id, objects derived / reset, hidden | | Class by id (from a warning) | `printf '2\n5\nI\n\n\n-1\n-1\n' \| timeout 20 opcdbg 0` | Same; `Compiled at : 0` = never compiled | | Object details | `printf '3\n4\nN\n\n-1\n-1\n' \| timeout 20 opcdbg 0` | Priority, control item id, times, cls_id/obj_id | | Object status | `printf '3\n18\n\n-1\n-1\n' \| timeout 20 opcdbg 0` | Total runs, executor (`Running in : 1, OPCEXE1`) | | Object signals / attributes | `3` then `14` / `12`, object name | Signal → item id; attribute → type (LOCAL/GLOBAL) | | Executor statistics | `printf '0\nOPCEXE1\n1\n-1\n-1\n' \| timeout 20 opcdbg 0 4` | Active classes/objects/trigger groups/items, number of executions; times stay 0 unless `STATISTICS = YES` in `opc.sup` | Executor names on R1.03: `OPCEXE1`…`OPCEXE4` (Traditional, priority ranges 0–249 … 750–999) and `OPCJEXE` (Java). The prompt's default `OPCEXE` does not exist. Easier for names: the datasets `OBJECT_SIGNAL_DF` (object:signal → item name) and `OBJECT_ATTR_VAL` / `CLASS_ATTR_VAL` (attribute values) via `dssqld -e` with a filter — see `traditional-class.md` §3. ## Dumps *Utilities* 3 / 4 (`printf '3\nclasses.qli\n4\nobjects.qli\n-1\n-1\n' | timeout 30 opcdbg 0 5`) write all class sources / objects to files in the current folder. The format is an old one (`NAME,"description",priority` then source lines starting with `- `) and **`dssqld -i` rejects it** (`DSS-E-UNK_DS_NM`, ISS-027). To move classes and objects to another system, export `CLASS_DF` and `OBJECT_DF` with `dssqld -e` instead (task `load-class-object.md`; migration in `knowledge/manuals/IM36K10J10-01EN.md` §5.6). ## Observed on the test system The database check reported one warning for a class `SINUS` (not from this repo) that was never compiled; everything else was consistent. A class like that is harmless but can be compiled or removed by its owner.