Как разработать после того, как serverror инициировали в Oracle?

То, что вы нашли, это некоторые из ограничений Базовой карты. Давайте переключимся на Cartopy пока. Рабочий код будет другим, но не очень.

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import math

earth_radius = 6371000.
position = [300000., 75., 0.]   # altitude (m), lat, long
radius = math.degrees(math.acos(earth_radius / (earth_radius + position[0])))
print(radius)  # in subtended degrees??

fig = plt.figure(figsize=(12,8))

img_extent = [-180, 180, -90, 90]

# here, cartopy's' `PlateCarree` is equivalent with Basemap's `cyl` you use
ax = fig.add_subplot(1, 1, 1, projection = ccrs.PlateCarree(), extent = img_extent)

# for demo purposes, ...
# let's take 1 subtended degree = 112 km on earth surface (*** you set the value as needed ***)
ax.tissot(rad_km=radius*112, lons=position[2], lats=position[1], n_samples=64, \
             facecolor='red', edgecolor='black', linewidth=0.15, alpha = 0.3)

ax.coastlines(linewidth=0.15)
ax.gridlines(draw_labels=False, linewidth=1, color='blue', alpha=0.3, linestyle='--')
plt.show()

С кодом выше, результирующий сюжет:

enter image description here

Теперь, если мы используем ортографическую проекцию, (заменить соответствующая строка кода с этим)

ax = fig.add_subplot(1, 1, 1, projection = ccrs.Orthographic(central_longitude=0.0, central_latitude=60.0))

вы получите этот участок:

enter image description here

6
задан xocasdashdash 11 February 2009 в 12:14
поделиться

3 ответа

Не запрашивайте v$sql; получите оператор с помощью ora_sql_txt.

CREATE OR REPLACE TRIGGER log_server_errors
AFTER SERVERERROR
ON DATABASE
DECLARE
sql_text ora_name_list_t;
stmt clob;
n number;
BEGIN
  n := ora_sql_txt(sql_text);
  if n > 1000 then n:= 1000; end if ;
  FOR i IN 1..n LOOP
     stmt := stmt || sql_text(i);
   END LOOP;

   INSERT INTO servererror_log
   (error_datetime, error_user, db_name,
    error_stack, captured_sql)
   VALUES
   (systimestamp, sys.login_user, sys.database_name,
   dbms_utility.format_error_stack, stmt);
   commit;
 END log_server_errors;
 /

Затем:

SQL> select * from c;

Это производит:

select * from c
              *
ERROR at line 1:
ORA-00942: table or view does not exist

Это может теперь быть запрошено:

select * from servererror_log;

Произвести:

ERROR_DATETIME
---------------------------------------------------------------------------
ERROR_USER                     DB_NAME
------------------------------ ---------
ERROR_STACK
--------------------------------------------------------------------------------
CAPTURED_SQL
--------------------------------------------------------------------------------
11-FEB-09 02.55.35.591259 PM
SYS                            TS.WORLD
ORA-00942: table or view does not exist
select * from c
3
ответ дан 17 December 2019 в 07:09
поделиться

Чтобы видеть, стреляет ли триггер, добавьте одну или несколько строк к нему как это:

DBMS_OUTPUT.PUT_LINE( 'Got this far' );

В SQLPlus НАБОР SERVEROUTPUT НА затем выполняют команду для генерации ошибки. Вы должны быть произведены как это:

dev> select * from aldfjh;
select * from aldfjh
              *
ERROR at line 1:
ORA-00942: table or view does not exist


ORA-00942: table or view does not exist

Got this far
1
ответ дан 17 December 2019 в 07:09
поделиться

Проверьте состояние своего триггера и/или существование других триггеров с:

select trigger_name, status
from all_triggers
where triggering_event like 'ERROR%' 

Это должно закончиться в:

TRIGGER_NAME        STATUS
------------        -------
LOG_SERVER_ERRORS   ENABLED

Если триггер не будет включен или другой триггер сбои, то он, вероятно, не будет работать.

0
ответ дан 17 December 2019 в 07:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: