![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
разный результат запросов напрямую к 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 - случайно выбрал