Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

разный результат запросов напрямую к Ora и через линк [D7, MySQL]


OW ©   (2011-05-25 17:38:00) 

Пишу запрос к БД MSSQL

 SELECT*
 FROM openquery (SDMRD, '  --SDMRD - линк на oracle-сервер
select *
from SDMRD.OMS_EXPORT_LOG EL
where EL.EXPORT_END_DATE IS NOT NULL
 ');
1274 rows

пишу к Oracle
select *
from SDMRD.OMS_EXPORT_LOG EL
where EL.EXPORT_END_DATE IS NOT NULL
1311 записей выбрано

и так по нескольку раз - оба результата со временем меняются (+ одна две записи в минуту, это нормально, т.к. работа идет,
НО!
через линк их стабильно меньше на 50 примерно.
)

какая-то известная вещь/трабла?


OW   (2011-05-26 12:47:00) [1]


>  либо на схеме SDMRD создан синоним для OMS_EXPORT_LOG

есть такое дело


Кщд   (2011-05-26 12:45:00) [2]

либо на logon для пользователя SDMRD меняется текущая схема(на OMS1), либо на схеме SDMRD создан синоним для OMS_EXPORT_LOG.

без вариантов.


OW   (2011-05-26 12:40:00) [3]


> одну переменную, которая участвует в полайсах запроса.

ну не так, разумеется, а в полайсах на таблицу, но суть не меняется, именно ему,SDMRD, "секретные" записи, определенные неким полем в таблице, не доступны


OW   (2011-05-26 12:33:00) [4]


> Кщд   (26.05.11 10:54) [12]
>
> >OW ©   (26.05.11 10:22) [11]
> темните

нет. Все исходные данные привел правильные.
http://zalil.ru/31124452
За исключением тех, о которых не знал, а именно:

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


Кщд   (2011-05-26 10:57:00) [5]

>OW ©   (26.05.11 10:22) [11]
ещё раз
запрос

select *   from OMS_EXPORT_LOG

выполненный под ползователем Oracle SDMRD, вернет данные из таблицы, расположенной в схеме SDMRD, а не OMS1.

каковы результаты на

select *
from OMS1.OMS_EXPORT_LOG EL
where EL.EXPORT_END_DATE IS NOT NULL

?


Кщд   (2011-05-26 10:54:00) [6]

>OW ©   (26.05.11 10:22) [11]
темните
в условиях: для линка есть специальный пользователь SDMRD, у него нет своих таблиц

запрос:

select *
from SDMRD.OMS_EXPORT_LOG EL
where EL.EXPORT_END_DATE IS NOT NULL

не будет выполняться.

Покажите реальные запросы и озвучьте инструмент(ы), из которого(ых) эти запросы выполняете.


OW   (2011-05-26 10:22:00) [7]

MSSQL
 SELECT *  FROM openquery (SDMRD, ' select *   from OMS_EXPORT_LOG ');
 1304 записи
 EXEC ('select *  from OMS_EXPORT_LOG ') AT SDMRD;
 1304 записи

ORACLE
 select * from OMS_EXPORT_LOG
 1346 записей

пора админов грузить, это маразм какой то


OW   (2011-05-26 10:10:00) [8]


> or EL.EXPORT_END_DATE = ''

не, это вообще ни к чему,
просто is null - те же результаты


OW   (2011-05-26 10:01:00) [9]

похоже, опять из-за интерпретации NULL все..

к MSSQL
 SELECT*
 FROM openquery (SDMRD, '
select *
     from OMS_EXPORT_LOG EL
where (EL.EXPORT_END_DATE IS NULL or EL.EXPORT_END_DATE = '''')
');
21 запись

к ORA
select *
     from OMS_EXPORT_LOG EL
where (EL.EXPORT_END_DATE IS NULL or EL.EXPORT_END_DATE = '')
27 записей


OW   (2011-05-26 09:38:00) [10]


> как согласуется:
> >для линка есть специальный пользователь SDMRD, у него нет
> своих таблиц
> с
> select *
> from SDMRD.OMS_EXPORT_LOG EL
> where EL.EXPORT_END_DATE IS NOT NULL
> ?


у него есть гранты на эти таблицы. И данные видны.
Но не все, получается


> Кщд   (26.05.11 09:11) [7]

да
да


Кщд   (2011-05-26 09:11:00) [11]

>OW ©   (26.05.11 08:52) [4]

>2) также
также - результаты равны?

>4) одинаково
одинаково - результаты равны?


Кщд   (2011-05-26 09:09:00) [12]

>OW ©   (26.05.11 08:56) [5]
как согласуется:
>для линка есть специальный пользователь SDMRD, у него нет своих таблиц

с:

select *
from SDMRD.OMS_EXPORT_LOG EL
where EL.EXPORT_END_DATE IS NOT NULL


?


OW   (2011-05-26 08:56:00) [13]


> 1. Убедиться, что db_link и linked server настроены на одну
> и ту же базу/схему;

хотя, нет
для линка есть специальный пользователь SDMRD, у него нет своих таблиц

у него есть
 GRANT DELETE ON "OMS1"."OMS_EXPORT_LOG" TO "SDMRD";

 GRANT INSERT ON "OMS1"."OMS_EXPORT_LOG" TO "SDMRD";

 GRANT SELECT ON "OMS1"."OMS_EXPORT_LOG" TO "SDMRD";

 GRANT UPDATE ON "OMS1"."OMS_EXPORT_LOG" TO "SDMRD";


OW   (2011-05-26 08:52:00) [14]

1) да
2) также
3) forward
4) одинаково

3)
CREATE TABLE "OMS1"."OMS_EXPORT_LOG"
  ( "ID" NUMBER NOT NULL ENABLE,
"REQUEST_ID" NUMBER NOT NULL ENABLE,
"ROLE_ID" NUMBER NOT NULL ENABLE,
"EXT_SYSTEM_ID" NUMBER NOT NULL ENABLE,
"EXPORT_START_DATE" DATE NOT NULL ENABLE,
"EXPORT_END_DATE" DATE,
"IMPORT_START_DATE" DATE,
"IMPORT_END_DATE" DATE,
"WORKING_ID" NUMBER,
 CONSTRAINT "EXPORT_LOG_PK" PRIMARY KEY ("ID")
 USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
 TABLESPACE "USERS"  ENABLE,
 SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS,
 SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS,
 SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS
  ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
 TABLESPACE "USERS" ;

 CREATE UNIQUE INDEX "OMS1"."EXPORT_LOG_PK" ON "OMS1"."OMS_EXPORT_LOG" ("ID")
 PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
 TABLESPACE "USERS" ;

 ALTER TABLE "OMS1"."OMS_EXPORT_LOG" ADD CONSTRAINT "EXPORT_LOG_PK" PRIMARY KEY ("ID")
 USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
 TABLESPACE "USERS"  ENABLE;

 ALTER TABLE "OMS1"."OMS_EXPORT_LOG" MODIFY ("ID" NOT NULL ENABLE);

 ALTER TABLE "OMS1"."OMS_EXPORT_LOG" MODIFY ("REQUEST_ID" NOT NULL ENABLE);

 ALTER TABLE "OMS1"."OMS_EXPORT_LOG" MODIFY ("ROLE_ID" NOT NULL ENABLE);

 ALTER TABLE "OMS1"."OMS_EXPORT_LOG" MODIFY ("EXT_SYSTEM_ID" NOT NULL ENABLE);

 ALTER TABLE "OMS1"."OMS_EXPORT_LOG" MODIFY ("EXPORT_START_DATE" NOT NULL ENABLE);

 ALTER TABLE "OMS1"."OMS_EXPORT_LOG" ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;

 ALTER TABLE "OMS1"."OMS_EXPORT_LOG" ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;

 ALTER TABLE "OMS1"."OMS_EXPORT_LOG" ADD SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS;


Кщд   (2011-05-26 07:35:00) [15]

1. Убедиться, что db_link и linked server настроены на одну и ту же базу/схему;
2. Заменить * на count(1), результаты сравнить;
3. Привести ddl создания таблицы;
4. create table tmp_OMS_EXPORT_LOG as select * from OMS_EXPORT_LOG. Повторить (2) для новой таблицы.


OW   (2011-05-25 17:40:00) [16]

EL.EXPORT_END_DATE - тип столбца в oracle DATE, nullable


OW   (2011-05-25 17:38:00) [17]

MySQL - случайно выбрал


Наверх

Титульная страница Поиск, карта сайта Написать письмо