-
Пишу запрос к БД 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 примерно. )
какая-то известная вещь/трабла?
-
MySQL - случайно выбрал
-
EL.EXPORT_END_DATE - тип столбца в oracle DATE, nullable
-
1. Убедиться, что db_link и linked server настроены на одну и ту же базу/схему; 2. Заменить * на count(1), результаты сравнить; 3. Привести ddl создания таблицы; 4. create table tmp_OMS_EXPORT_LOG as select * from OMS_EXPORT_LOG. Повторить (2) для новой таблицы.
-
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;
-
> 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 © (26.05.11 08:56) [5]как согласуется: >для линка есть специальный пользователь SDMRD, у него нет своих таблиц с:
select *
from SDMRD.OMS_EXPORT_LOG EL
where EL.EXPORT_END_DATE IS NOT NULL
?
-
>OW © (26.05.11 08:52) [4]
>2) также также - результаты равны?
>4) одинаково одинаково - результаты равны?
-
> как согласуется: > >для линка есть специальный пользователь SDMRD, у него нет > своих таблиц > с > select * > from SDMRD.OMS_EXPORT_LOG EL > where EL.EXPORT_END_DATE IS NOT NULL > ?
у него есть гранты на эти таблицы. И данные видны. Но не все, получается
> Кщд (26.05.11 09:11) [7]
да да
-
похоже, опять из-за интерпретации 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 записей
-
> or EL.EXPORT_END_DATE = ''
не, это вообще ни к чему, просто is null - те же результаты
-
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 © (26.05.11 10:22) [11] темните в условиях: для линка есть специальный пользователь SDMRD, у него нет своих таблиц
запрос:
select * from SDMRD.OMS_EXPORT_LOG EL where EL.EXPORT_END_DATE IS NOT NULL
не будет выполняться.
Покажите реальные запросы и озвучьте инструмент(ы), из которого(ых) эти запросы выполняете.
-
>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
?
-
> Кщд (26.05.11 10:54) [12] > > >OW © (26.05.11 10:22) [11] > темните
нет. Все исходные данные привел правильные. http://zalil.ru/31124452За исключением тех, о которых не знал, а именно: Разобрался с вопросом, на самом деле. Там был на логон именно этого юзера повешен админами БД триггер, который менял одну переменную, которая участвует в полайсах запроса. т.е. некоторые записи для этого юзера были не видны.
-
> одну переменную, которая участвует в полайсах запроса.
ну не так, разумеется, а в полайсах на таблицу, но суть не меняется, именно ему,SDMRD, "секретные" записи, определенные неким полем в таблице, не доступны
-
либо на logon для пользователя SDMRD меняется текущая схема(на OMS1), либо на схеме SDMRD создан синоним для OMS_EXPORT_LOG.
без вариантов.
-
> либо на схеме SDMRD создан синоним для OMS_EXPORT_LOG
есть такое дело
|