Отображение OWB зависает или занимает слишком много времени — возможная блокировка?

#oracle #oracle11g #data-warehouse #oracle-warehouse-builder

#Oracle #oracle11g #хранилище данных #oracle-warehouse-builder

Вопрос:

Я новичок в Oracle Warehouse Builder 11gR2, но мне это уже не нравится! Я использую его на виртуальной машине с 2 ГБ оперативной памяти и 32-битной XP.

У меня есть 9 сопоставлений из плоских файлов в целевые, из исходного реляционного BD в целевой и т.д. Проблема в 3 из этих сопоставлений, похоже, заключается в том, что я соединяю таблицы как из souce, так и из области сцены. Я не знаю, уместно ли это, но моя исходная база данных находится на том же компьютере, что и область сцены (target), но в разных табличных пространствах.

Я могу показать вам:
1- Как я создал пользовательские табличные пространства исходной базы данных:

 CREATE TABLESPACE insrc DATAFILE 'C:INtablespacesin_src.dbf' SIZE 100M;
CREATE TEMPORARY TABLESPACE insrc_temp TEMPFILE 'C:INtablespacesinsrc_temp.dbf' SIZE 50M;
CREATE USER insrc IDENTIFIED BY insrc DEFAULT TABLESPACE insrc TEMPORARY TABLESPACE insrc_temp QUOTA 0 on system;
GRANT ALL PRIVILEGES TO insrc;
-- Grant this role to be able to import a dump file
GRANT IMP_FULL_DATABASE to insrc;
-- Grant this role to be able to export to a dump file
GRANT EXP_FULL_DATABASE to insrc;
  

и затем в строке cmd я импортировал вот так: imp SYSTEM/%PASSWORD_DO_ORACLE% FROMUSER=trab2 TOUSER=insrc file='trab2.DMP'

2- Как я создал табличные пространства для пользовательских табличных пространств и ролей целевой области сцены:

  CREATE TABLESPACE indw DATAFILE 'C:INtablespacesindw.dbf' SIZE 128M AUTOEXTEND ON NEXT 512K MAXSIZE 250M;
CREATE TEMPORARY TABLESPACE indwtemp TEMPFILE 'C:INtablespacesindwtemp.dbf' SIZE 3M AUTOEXTEND ON NEXT 512K MAXSIZE 200M;
CREATE USER indw IDENTIFIED BY indw DEFAULT TABLESPACE indw TEMPORARY TABLESPACE indwtemp;
ALTER USER indw account unlock;
GRANT CREATE SESSION TO indw;
-- grant all system privileges
GRANT ALL PRIVILEGES TO indw; 
-- grant all ROLES
GRANT "OLAP_XS_ADMIN" TO "INDW" ;
GRANT "WFS_USR_ROLE" TO "INDW" ;
GRANT "DELETE_CATALOG_ROLE" TO "INDW" ;
GRANT "HS_ADMIN_SELECT_ROLE" TO "INDW" ;
GRANT "CWM_USER" TO "INDW" ;
GRANT "SPATIAL_WFS_ADMIN" TO "INDW" ;
GRANT "OLAP_DBA" TO "INDW" ;
GRANT "OWB$CLIENT" TO "INDW" ;
GRANT "RESOURCE" TO "INDW" ;
GRANT "APEX_ADMINISTRATOR_ROLE" TO "INDW" ;
GRANT "OWB_DESIGNCENTER_VIEW" TO "INDW" ;
GRANT "CTXAPP" TO "INDW" ;
GRANT "SPATIAL_CSW_ADMIN" TO "INDW" ;
GRANT "GATHER_SYSTEM_STATISTICS" TO "INDW" ;
GRANT "AUTHENTICATEDUSER" TO "INDW" ;
GRANT "CONNECT" TO "INDW" ;
GRANT "HS_ADMIN_EXECUTE_ROLE" TO "INDW" ;
GRANT "PLUSTRACE" TO "INDW" ;
GRANT "LOGSTDBY_ADMINISTRATOR" TO "INDW" ;
GRANT "JAVADEBUGPRIV" TO "INDW" ;
GRANT "XDB_WEBSERVICES_WITH_PUBLIC" TO "INDW" ;
GRANT "XDBADMIN" TO "INDW" ;
GRANT "XDB_WEBSERVICES_OVER_HTTP" TO "INDW" ;
GRANT "CSW_USR_ROLE" TO "INDW" ;
GRANT "OLAPI_TRACE_USER" TO "INDW" ;
GRANT "JAVAIDPRIV" TO "INDW" ;
GRANT "DBFS_ROLE" TO "INDW" ;
GRANT "ADM_PARALLEL_EXECUTE_TASK" TO "INDW" ;
GRANT "AQ_ADMINISTRATOR_ROLE" TO "INDW" ;
GRANT "JAVA_DEPLOY" TO "INDW" ;
GRANT "OEM_MONITOR" TO "INDW" ;
GRANT "XDB_WEBSERVICES" TO "INDW" ;
GRANT "JAVAUSERPRIV" TO "INDW" ;
GRANT "MGMT_USER" TO "INDW" ;
GRANT "OWB_USER" TO "INDW" ;
GRANT "JAVA_ADMIN" TO "INDW" ;
GRANT "JMXSERVER" TO "INDW" ;
GRANT "EXECUTE_CATALOG_ROLE" TO "INDW" ;
GRANT "SCHEDULER_ADMIN" TO "INDW" ;
GRANT "DATAPUMP_IMP_FULL_DATABASE" TO "INDW" ;
GRANT "WM_ADMIN_ROLE" TO "INDW" ;
GRANT "ORDADMIN" TO "INDW" ;
GRANT "AQ_USER_ROLE" TO "INDW" ;
GRANT "DATAPUMP_EXP_FULL_DATABASE" TO "INDW" ;
GRANT "SELECT_CATALOG_ROLE" TO "INDW" ;
GRANT "RECOVERY_CATALOG_OWNER" TO "INDW" ;
GRANT "OLAP_USER" TO "INDW" ;
GRANT "DBA" TO "INDW" ;
GRANT "JAVASYSPRIV" TO "INDW" ;
GRANT "XDB_SET_INVOKER" TO "INDW" ;
GRANT "HS_ADMIN_ROLE" TO "INDW" ;
GRANT "EJBCLIENT" TO "INDW" ;
GRANT "OEM_ADVISOR" TO "INDW" ;
ALTER USER "INDW" DEFAULT ROLE "EXP_FULL_DATABASE","IMP_FULL_DATABASE";
-- Might be needed ...just in case
-- run plustrace.bat before grant this privilege
-- GRANT plustrace TO indw;
/* To create a database directory, a user requires the CREATE DIRECTORY and DROP DIRECTORY privileges.
When you create a Warehouse Builder user, these privileges are not automatically granted 
to the user. Therefore, the database administrator must explicitly grant these privileges 
to the Warehouse Builder user.*/
GRANT CREATE ANY DIRECTORY TO indw;
GRANT DROP ANY DIRECTORY TO indw;
  

Одним из отображений с проблемами является CLIENTS_MAPPING, которому нужны КЛИЕНТЫ (из src), СТРАНЫ (из src), ДЕМОГРАФИЯ (из target) и CLIENT_LAST_BUY (тоже из target). Предполагается, что вставка состоит из 50 000 строк, и это занимает более 30 минут, а в таблице КЛИЕНТОВ вообще нет данных.

Эта проблема также возникает при других отображениях, которые включают таблицы из источника и назначения. Когда я использую только из того или иного места, проблем нет.

Я оставлю вам свой автоматически сгенерированный Power Designer код для табличных КЛИЕНТОВ, как упоминалось выше:

 create table CLIENTS 
(
   CLIENT_ID            NUMBER               not null,
   CLIENT_ID_SRC        NUMBER,
   COUNTRY_ID_SRC       CHAR(2 BYTE),
   DEMOG_ID             NUMBER               not null,
   CLIENT_NAME          VARCHAR2(70),
   CLIENT_BIRTH_YEAR    NUMBER(4),
   CLIENT_PHONE         VARCHAR2(25),
   CLIENT_CREDIT_LIMIT  NUMBER,
   CLIENT_EMAIL         VARCHAR2(30),
   CLIENT_STREET_ADDRESS VARCHAR2(40),
   CLIENT_LAST_BUY      DATE,
   CLIENT_COUNTRY       VARCHAR2(40),
   CLIENT_STATE_PROVINCE VARCHAR2(50),
   CLIENT_CITY          VARCHAR2(50),
   constraint PK_CLIENTS primary key (CLIENT_ID)
);

/*==============================================================*/
/* Index: CLIENT_INFO_FK                                        */
/*==============================================================*/
create index CLIENT_INFO_FK on CLIENTS (
   DEMOG_ID ASC
); 

alter table CLIENTS
   add constraint FK_CLIENTS_INFO foreign key (DEMOG_ID)
      references DEMOGRAPHY (DEMOG_ID);
  

Я вхожу в OWB GUI как rep_owner (со всеми разрешениями). Странно то, что у моего коллеги именно такое отображение запущено на его компьютере в OWB 11gR1 и без проблем. Но он импортировал исходную базу данных целевому пользователю…и это единственное отличие, которое он сделал.

Кто-нибудь, пожалуйста, может мне помочь?

Ответ №1:

Проверьте DBA_RESUMABLE, возможно, у вас заканчивается временное табличное пространство.

Возможно, вы захотите попытаться максимально объединить свои табличные пространства. Чем больше вы разделяете свое хранилище, тем проще для Oracle исчерпать пространство.

Комментарии:

1. Вы хотите сказать, что я должен попытаться, например, иметь одинаковые временные файлы как для исходного, так и для целевого.. Я попробую использовать значение по умолчанию, просто чтобы посмотреть, будет ли так работать лучше. Спасибо

2. Я изменил пользователей из исходного и целевого, чтобы использовать временное табличное пространство по умолчанию. Каждый пользователь использует свое табличное пространство, но файлы данных не находятся в папке oradata / sid, созданной моим коллегой. Может ли это иметь такое огромное влияние, как это? Что я могу сделать еще, чтобы прервать выполнение сопоставления? Потому что это не выдает мне ошибок или таймаута … но прошло больше часа, а у меня все еще вставлено 0 строк : (

3. Если ваши схемы находятся в одной базе данных, обычно лучшее, что можно сделать, это по возможности использовать для них одни и те же табличные пространства. Например, при вашей текущей настройке вы не смогли отсортировать результирующий набор размером более 200 МБ. Если объединить два временных табличных пространства, максимальный размер увеличивается до 250 МБ. В 11g хороший способ увидеть, что происходит с выполняемым запросом, — посмотреть на активный отчет: select dbms_sqltune.report_sql_monitor(sql_id=>'[YOUR SQL ID]', type=>'active') from dual;

4. Хорошо, итак, я собираюсь попробовать поместить те же схемы, исходную и целевую, в те же табличные пространства и использовать temp по умолчанию. Как вы думаете, максимальный размер является проблемой? Или я должен использовать другой способ создания табличного пространства (

5. Просто чтобы дать вам всем некоторую обратную связь: я разделил табличные пространства (обычное и временное, которые я создал) для исходного и целевого, и одно из этих 3 сопоставлений, которые используют src и target, уже отображается должным образом. Но мне пришлось отказаться от ограничений fk, потому что они создают мне проблемы, но я не знаю как, потому что сначала я заполнил дочерние таблицы. Как вы думаете, это критично в DW? Удаление ограничений внешних ключей? Я так не думаю… но я все равно буду держать вас в курсе. Я думаю, люди заслуживают этого.