CftClub.ru
Клуб специалистов ЦФТ-Банк

rtl.open

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
jamil
Участник - экстремал


Вступление в Клуб: 11.08.2014
СообщениеСр Ноя 18, 2020 11:05   rtl.open Ответить с цитатой
Полезность: Нет оценки
какие действия происходят когда вызывается rtl.open?
во время взаимодействия с внешней системой происходят периодические зависания. Предполагаю, что во время rtl.open что то происходит.
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеСр Ноя 18, 2020 21:02   Re: rtl.open Ответить с цитатой
Полезность: Нет оценки
Цитата:
какие действия происходят когда вызывается rtl.open?
во время взаимодействия с внешней системой происходят периодические зависания. Предполагаю, что во время rtl.open что то происходит.


Точно не знаю, как именно, но при вызове rtl.open текущая сессия регистрируется где-то внутри ЦФТ, как если она работает из-под АРМ Навигатор.
De Mian
Профи


Вступление в Клуб: 26.09.2008
СообщениеПт Ноя 20, 2020 00:22    Ответить с цитатой
Полезность: 1
Регистрация на блокировщике.
jamil
Участник - экстремал


Вступление в Клуб: 11.08.2014
СообщениеПт Ноя 20, 2020 08:23   Re: rtl.open Ответить с цитатой
Полезность: Нет оценки
Цитата:
Цитата:
какие действия происходят когда вызывается rtl.open?
во время взаимодействия с внешней системой происходят периодические зависания. Предполагаю, что во время rtl.open что то происходит.


Точно не знаю, как именно, но при вызове rtl.open текущая сессия регистрируется где-то внутри ЦФТ, как если она работает из-под АРМ Навигатор.



извиняюсь за навязчивость, но кто то может по подробнее объяснить?
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеПт Ноя 20, 2020 09:46   Re: rtl.open Ответить с цитатой
Полезность: Нет оценки
Цитата:
извиняюсь за навязчивость, но кто то может по подробнее объяснить?


Пакет rtl заврапплен, очевидно, что ЦФТ не желает открывать его внутренности.
Для выполнения запросов к типам данных никакой регистрации не нужно. А для выполнения функций, разработанных в ИБСО, нужна регистрация и получения доступа. Это даёт функция rtl.open без пояснений, что она там делает внутри. Просто пользуйтесь.
Вам это зачем?
jamil
Участник - экстремал


Вступление в Клуб: 11.08.2014
СообщениеПт Ноя 20, 2020 10:01   Re: rtl.open Ответить с цитатой
Полезность: Нет оценки
Цитата:
Цитата:
извиняюсь за навязчивость, но кто то может по подробнее объяснить?


Пакет rtl заврапплен, очевидно, что ЦФТ не желает открывать его внутренности.
Для выполнения запросов к типам данных никакой регистрации не нужно. А для выполнения функций, разработанных в ИБСО, нужна регистрация и получения доступа. Это даёт функция rtl.open без пояснений, что она там делает внутри. Просто пользуйтесь.
Вам это зачем?


Периодически, при входе в Навигатор система зависает.
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеСб Ноя 21, 2020 15:56   Re: rtl.open Ответить с цитатой
Полезность: Нет оценки
Цитата:
Периодически, при входе в Навигатор система зависает.

Попробуйте трейс снять.
De Mian
Профи


Вступление в Клуб: 26.09.2008
СообщениеПн Ноя 23, 2020 13:06   Re: rtl.open Ответить с цитатой
Полезность: Нет оценки
Цитата:

Пакет rtl заврапплен, очевидно, что ЦФТ не желает открывать его внутренности.



Это уже по привычке видимо врапят.
Есть ресурс https://codecrete.net/UnwrapIt/ , который всё открывает. Лет 15 назад сделали exe-шники которые и старый и новый формат разврапливают. и даже книжка на инглише попадалась, которая весь процесс раскрывает.

Порылся года 4 назад на форумах англоязычных и нашел пример на JAVA разврапливающий ораклянные пакеты.
И вуаля. Это кощунство конечно, но теперь у меня уже как 4 года есть пакет, написанный на PLSQL разврапливающий заврапленные пакеты PL/SQL.
Very Happy
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеВт Ноя 24, 2020 09:34   Re: rtl.open Ответить с цитатой
Полезность: Нет оценки
Цитата:
Есть ресурс https://codecrete.net/UnwrapIt/

The code does not seem to be valid wrapped PL/SQL code. The binary (Base64 encoded) part is invalid or incomplete.
De Mian
Профи


Вступление в Клуб: 26.09.2008
СообщениеВт Ноя 24, 2020 14:57   Re: rtl.open Ответить с цитатой
Полезность: 1
Цитата:
Цитата:
Есть ресурс https://codecrete.net/UnwrapIt/

The code does not seem to be valid wrapped PL/SQL code. The binary (Base64 encoded) part is invalid or incomplete.


Ну не знаю даже.
Код:
7366 FUNCTION OPEN(P_NAME VARCHAR2 DEFAULT NULL,
 7367               P_INFO VARCHAR2 DEFAULT NULL,
 7368               P_USER_ID PLS_INTEGER DEFAULT NULL,
 7369               P_COMMIT  BOOLEAN DEFAULT TRUE
 7370              ) RETURN PLS_INTEGER IS
 7371     IDX     PLS_INTEGER;
 7372     U_IDX   PLS_INTEGER;
 7373     SELF    BOOLEAN;
 7374     STR     VARCHAR2(2000);
 7375 BEGIN
 7376     IF INIT_LOCK THEN LOCK_INIT; END IF;
 7377     U_IDX := NVL(P_USER_ID, CUR_USER.ID);
 7378
 7379     IF IS_LOCKED THEN
 7380
 7381         
 7382         WRITELOG_ERROR('SESSION_LOCKED', U_IDX);
 7383
 7384         RAISE NULL_PASSWORD;
 7385     END IF;
 7386
 7387     SELF := U_IDX=CUR_USER.ID;
 7388     CURDATE := SYSDATE;
 7389     IF IS_OPEN THEN
 7390         READ(NULL);
 7391     END IF;
 7392     IF SELF THEN
 7393         IF U_IDX=0 THEN
 7394             IF P_NAME='JOB' THEN
 7395                 U_IDX:= P_INFO;
 7396                 DBMS_APPLICATION_INFO.SET_CLIENT_INFO(P_INFO);
 7397                 U_IDX:= -U_IDX;
 7398                 CUR_USER.ID := U_IDX;
 7399                 IF NOT INIT_SELF(CUR_USER,STR) THEN
 7400
 7401                     STR := SUBSTR(CHECK_USER(CUR_USER), 1, 2000);
 7402
 7403                     
 7404                     WRITELOG_ERROR('JOB_NOT_INITIALIZED', STR);
 7405
 7406                     CUR_USER.ID := 0;
 7407                     DBMS_APPLICATION_INFO.SET_CLIENT_INFO(SESSION_ID);
 7408                     MESSAGE.CLEAR;
 7409                     MESSAGE.ERROR_REPEAT(STR);
 7410                 END IF;
 7411             ELSE
 7412                 
 7413                 WRITELOG_ERROR('ILLEGAL_JOB', P_NAME);
 7414
 7415                 DBMS_APPLICATION_INFO.SET_CLIENT_INFO(SESSION_ID);
 7416                 RAISE LOGIN_DENIED;
 7417             END IF;
 7418             SESSION_ID := P_INFO;
 7419             DBMS_SESSION.SET_CONTEXT(RTL_CONTEXT,'ID',U_IDX);
 7420             IF CUR_USER.ORA_USER<>RTL_USER THEN
 7421               RTL_USER := CUR_USER.ORA_USER;
 7422               DBMS_SESSION.SET_CONTEXT(RTL_CONTEXT,'USER',RTL_USER);
 7423               RTL_PROF := NULL;
 7424             END IF;
 7425             UID$ := CUR_USER.ID;
 7426             USR$ := RTL_USER;
 7427             LOCKS_RETURN_PIPE:= RTL_UTILS.PREFIX||U_IDX;
 7428             DBMS_PIPE.PURGE(LOCKS_RETURN_PIPE);
 7429         ELSIF RTL_UTILS.IS_SESSION_3L(U_IDX) AND IS_DBRW THEN
 7430
 7431             
 7432             WRITELOG_ERROR('ILLEGAL_SESSION_TYPE', '3L', U_IDX);
 7433
 7434             RAISE NO_PRIVILEGES;
 7435         ELSIF NOT INIT_SELF(CUR_USER,STR) THEN
 7436             MESSAGE.CLEAR;
 7437             MESSAGE.ERROR_REPEAT(CHECK_USER(CUR_USER));
 7438         END IF;
 7439         LAST_USER := CUR_USER;
 7440     ELSIF CAN_OPEN THEN
 7441       IF IS_OPEN THEN
 7442         LAST_USER.ID := U_IDX;
 7443         LAST_USER.SID:= NULL;
 7444         IF NOT INITUSER(LAST_USER) THEN
 7445             MESSAGE.CLEAR;
 7446             MESSAGE.ERROR_REPEAT(CHECK_USER(LAST_USER));
 7447         END IF;
 7448         LOG_INFO(CUR_USER,'OPENING '||U_IDX,'-'||RTL_SRV,UID$,TRUE);
 7449       ELSE
 7450         
 7451         WRITELOG_ERROR('SESSION_NOT_OPENED', U_IDX);
 7452
 7453         RAISE LOGIN_DENIED;
 7454       END IF;
 7455     ELSE
 7456         
 7457         WRITELOG_ERROR('CANNOT_OPEN_SESSION', U_IDX);
 7458
 7459         RAISE NO_PRIVILEGES;
 7460     END IF;
 7461
 7462     IF P_NAME='JOB' THEN
 7463        CHECK_OPTION_JGS(P_INFO);
 7464     END IF;
 7465     IF NOT SESSION_REGISTERED(U_IDX, SES_CONTEXT_WRITE = CW_ENABLE) THEN
 7466         LAST_USER.LOGONTIME := SYSDATE;
 7467         BEGIN
 7468             REG_SESSION(LAST_USER, CASE WHEN P_NAME LIKE 'CHECK$%' THEN SUBSTR(P_NAME, 7) ELSE '' END);
 7469         EXCEPTION WHEN NOT_LOGGED_ON OR LOGIN_DENIED THEN
 7470             ACTIVATE_REFRESH_SERVICE;
 7471             RAISE;
 7472         END;
 7473     END IF;
 7474
 7475     IF SELF THEN
 7476       IS_OPEN := TRUE;
 7477       DBMS_SESSION.SET_CONTEXT(RTL_CONTEXT,'STATUS',CASE WHEN IS_DBRW THEN '1' ELSE '5' END);
 7478
 7479       
 7480       IF IS_DBRW THEN
 7481           CHECK_HELD;
 7482       END IF;
 7483     ELSE
 7484       IF MAX_SERVERS > 0 THEN
 7485         IDX := TRUNC(RANDOM(MAX_SERVERS+1));
 7486       ELSE
 7487         IDX := 0;
 7488       END IF;
 7489       DBMS_PIPE.RESET_BUFFER;
 7490       DBMS_PIPE.PACK_MESSAGE(OPEN_ANS);
 7491       DBMS_PIPE.PACK_MESSAGE(IDX);
 7492       EVENT_SERVICE.SEND(RTL_UTILS.PREFIX||U_IDX, IS_DBRW);
 7493     END IF;
 7494     RETURN U_IDX;
 7495 END;
 7496
De Mian
Профи


Вступление в Клуб: 26.09.2008
СообщениеВт Ноя 24, 2020 15:01   Re: rtl.open Ответить с цитатой
Полезность: Нет оценки
Цитата:
Цитата:
Есть ресурс https://codecrete.net/UnwrapIt/

The code does not seem to be valid wrapped PL/SQL code. The binary (Base64 encoded) part is invalid or incomplete.


Ну если есть необходимость старые заврапленные пакеты разврапить. то ищите rewrap.exe и unwrap10.exe. Но они не совместимы с 64-х разрядной ОС.
Эмиралька
Эксперт


Вступление в Клуб: 09.11.2015
СообщениеСр Ноя 25, 2020 19:51   Re: rtl.open Ответить с цитатой
Полезность: Нет оценки
Цитата:
Ну если есть необходимость старые заврапленные пакеты разврапить. то ищите rewrap.exe и unwrap10.exe. Но они не совместимы с 64-х разрядной ОС.

Да мне-то нужды в том нет Smile Это вон джамилю пригодится Smile
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru