Oracle mechanics

05.12.2011

sqlplus preliminary connection — как соединиться с бд, если CONNECT AS SYSDBA не возможен

Filed under: Диагностика системы (instance),Oracle,Oracle new features — Игорь Усольцев @ 00:35
Tags: ,

Начиная с Oracle 10.2 доступно и докуметировано sqlplus preliminary connection специально для случаев, когда прочие методы соединения недоступны — How To Connect Using A Sqlplus Preliminary Connection [ID 986640.1]:

$ sqlplus -prelim / as sysdba

или так:

$ sqlplus /nolog
set _prelim on
connect / as sysdba

При этом традиционно стартует клиентский процесс, но сессия не создаётся, доступ к структурам SGA — ограниченный, можно запустить oradebug hanganalyze | dump systemstate — что, собственно и требуется в таких случаях

Кроме того, опция preliminary connection — клиентская и, по словам Tanel Poder — How to log on even when SYSDBA can’t do so?, sqlplus версии 10.2+ может быть использован при соединении со «старыми» версиями — Oracle 9i, например, локально или удалённо:

$ sqlplus -prelim sys/manager@orcl112 as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Mon Dec 5 01:26:28 2011

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

SQL> select sysdate from dual;
select sysdate from dual
*
ERROR at line 1:
ORA-01012: not logged on

SQL> oradebug hanganalyze 3
Statement processed.

P.S. Готовый рецепт использования:

C:\>sqlplus -prelim sys/mann@orcl1123 as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Fri Oct 14 12:13:44 2016

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

Process ID: 0
Session ID: 0 Serial number: 0

SYS@/ SQL> oradebug setorapname diag
Oracle pid: 6, Windows thread id: 2476, image: ORACLE.EXE (DIAG)
SYS@/ SQL> oradebug unlimit
Statement processed.
SYS@/ SQL> oradebug hanganalyze 3
Statement processed.
SYS@/ SQL> oradebug dump ashdumpseconds 30
Statement processed.
SYS@/ SQL> oradebug dump systemstate_global 266
Statement processed.
SYS@/ SQL> oradebug tracefile_name
C:\APP\IGOR\diag\rdbms\orcl1123\orcl1123\trace\orcl1123_diag_2476.trc

2 комментария »

  1. В ноте How to Collect Diagnostics for Database Hanging Issues (Doc ID 452358.1)

    Note: From 11.2.0.2 onwards, hanganalyze will not produce output under a sqlplus «preliminary connection» since it requires a process state object and a session state object. If a hanganalyze is attempted, although the hanganalyze will appear to be successful, the tracefile will contain the following output: ERROR: Can not perform hang analysis dump without a process state object and a session state object.

    комментарий от Wovlerine — 24.04.2014 @ 15:40 | Ответить

    • Хорошее замечание, такая проблема есть, но в том же 2012 году Tanel Poder показал решение
      Проверил на подручном 11.2.0.3/Windows:

      C:>sqlplus -prelim / as sysdba
      
      SQL*Plus: Release 11.2.0.3.0 Production on Thu Apr 24 16:50:39 2014
      
      Copyright (c) 1982, 2011, Oracle.  All rights reserved.
      
      SQL> oradebug setospid 3580                                       -- SPID любого процесса Oracle
      Oracle pid: 23, Windows thread id: 3580, image: ORACLE.EXE (SHAD)
      SQL> ORADEBUG DUMP HANGANALYZE 3
      Statement processed.

      — успешно генерит полный трейс:

      Trace file C:\ORACLE\ORA112\diag\rdbms\orcl112\orcl112\trace\orcl112_ora_3580.trc
      Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
      With the Partitioning, OLAP, Data Mining and Real Application Testing options
      Windows NT Version V6.1 Service Pack 1 
      CPU                 : 4 - type 8664, 2 Physical Cores
      Process Affinity    : 0x0x0000000000000000
      Memory (Avail/Total): Ph:1863M/7932M, Ph+PgF:2309M/11149M 
      Instance name: orcl112
      Redo thread mounted by this instance: 1
      Oracle process number: 23
      Windows thread id: 3580, image: ORACLE.EXE (SHAD)
      
      
      *** 2014-04-24 16:57:22.466
      *** SESSION ID:(142.35621) 2014-04-24 16:57:22.466
      *** CLIENT ID:() 2014-04-24 16:57:22.466
      *** SERVICE NAME:(orcl112) 2014-04-24 16:57:22.466
      *** MODULE NAME:(PL/SQL Developer) 2014-04-24 16:57:22.466
      *** ACTION NAME:(Main session) 2014-04-24 16:57:22.466
       
      Received ORADEBUG command (#1) 'DUMP HANGANALYZE 3' from process 'Windows thread id: 22624, image: <none>'
      
      *** 2014-04-24 16:57:22.467
      ===============================================================================
      HANG ANALYSIS:
      ...

      комментарий от Игорь Усольцев — 24.04.2014 @ 16:13 | Ответить


RSS feed for comments on this post. TrackBack URI

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

Блог на WordPress.com.

%d такие блоггеры, как: