прямой доступ к SGA / получение shmid
Узнать текущий shmid можно двумя способами:
- Запустив утилиту sysresv, которая может находиться в $ORACLE_HOME/bin.
Вот её результат работы:oracle9i@utest:~$ sysresv IPC Resources for ORACLE_SID "o9i" : Shared Memory: ID KEY 131074 0x65b06258 Semaphores: ID KEY 753668 0x75c5ba84 Oracle Instance alive for sid "o9i"
131074 и есть нужный нам Shared Memory ID. - Однако, sysresv может не быть для Вашей платформы или версии Oracle.
Тогда можно воспользоваться альтернативным вариантом -- oradebug.
SQL> oradebug setmypid Statement processed. SQL> oradebug ipc Information written to trace file. SQL> oradebug tracefile_name /export/app/oracle/admin/o9i/udump/o9i_ora_2123.trc SQL>
Заглянув в файл /export/app/oracle/admin/o9i/udump/o9i_ora_2123.trc можно найти такие строчки:Area #0 `Fixed Size' containing Subareas 0-0 Total size 000000000006e104 Minimum Subarea size 00000000 Area Subarea Shmid Stable Addr Actual Addr 0 0 131074 0x00000050000000 0x00000050000000 Subarea size Segment size 000000000006f000 0000000016400000
Здесь мы видим не только нужный нам shmid (131074), но и базовый адрес SGA (0x00000050000000).