#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? Удаление ограничений внешних ключей? Я так не думаю… но я все равно буду держать вас в курсе. Я думаю, люди заслуживают этого.