View creating Cartesian Product.. why....
i am joining 5 tables in a view.. dont know exactly why it is creating Cartesian product.
Below is the query:
PROMPT CREATE OR REPLACE VIEW xxpd_ozf_aff_err_int_v
CREATE OR REPLACE VIEW xxpd_ozf_aff_err_int_v (
row_id,
source_system,
source_process_id,
source_process_date,
ora_process_id,
soa_instance_id,
customer_record_id,
process_status,
insert_update_flag,
process_stage,
process_start_time,
process_end_time,
error_code,
error_message,
error_type,
customer_process_status,
supplier_process_status,
customer_level,
source_customer_ref,
customer_class_code,
customer_type,
business_model_code,
source_parent_cust_ref,
source_parent_cust_type,
customer_name,
account_status,
customer_alias,
person_flag,
person_first_name,
person_last_name,
tax_reg_number,
tax_reg_type,
customer_id,
account_number,
party_id,
party_type,
party_number,
supplier_id,
affiliate_type,
check_payable_name,
payable_flag,
approved_flag,
primary_site,
site_status,
purpose,
address1,
address2,
address3,
address4,
city,
county,
state,
province,
postal_code,
country,
cust_acct_site_id,
party_site_id,
location_id,
reportable_1099,
tax_type_1099,
primary_contact,
contact_role,
contact_status,
first_name,
last_name,
salutation,
job_title,
email_address,
phone_line_type,
phone_number,
phone_extension,
phone_area_code,
phone_country_code,
preferred_language,
customer_profile_class,
profile_acct_status,
profile_active_status,
account_status_reason,
invoice_type
) AS
SELECT acct.ROWID row_id,
CTRL.SOURCE_SYSTEM,
CTRL.SOURCE_PROCESS_ID,
CTRL.SOURCE_PROCESS_DATE,
CTRL.ORA_PROCESS_ID,
CTRL.SOA_INSTANCE_ID,
ACCT.CUSTOMER_RECORD_ID,
CTRL.PROCESS_STATUS,
CTRL.INSERT_UPDATE_FLAG,
CTRL.PROCESS_STAGE,
CTRL.PROCESS_START_TIME,
CTRL.PROCESS_END_TIME,
CTRL.ERROR_CODE,
CTRL.ERROR_MESSAGE,
--ACCOUNT TABLE
ACCT.ERROR_TYPE,
ACCT.CUSTOMER_PROCESS_STATUS,
ACCT.SUPPLIER_PROCESS_STATUS,
ACCT.CUSTOMER_LEVEL,
ACCT.SOURCE_CUSTOMER_REF,
ACCT.CUSTOMER_CLASS_CODE,
ACCT.CUSTOMER_TYPE,
ACCT.BUSINESS_MODEL_CODE,
ACCT.SOURCE_PARENT_CUST_REF,
ACCT.SOURCE_PARENT_CUST_TYPE,
ACCT.CUSTOMER_NAME,
ACCT.ACTIVE_STATUS ACCOUNT_STATUS,
ACCT.CUSTOMER_ALIAS,
ACCT.PERSON_FLAG,
ACCT.PERSON_FIRST_NAME,
ACCT.PERSON_LAST_NAME,
ACCT.TAX_REG_NUMBER,
ACCT.TAX_REG_TYPE,
ACCT.CUSTOMER_ID,
ACCT.ACCOUNT_NUMBER,
ACCT.PARTY_ID,
ACCT.PARTY_TYPE,
ACCT.PARTY_NUMBER,
ACCT.SUPPLIER_ID,
ACCT.AFFILIATE_TYPE,
ACCT.CHECK_PAYABLE_NAME,
ACCT.PAYABLE_FLAG,
ACCT.APPROVED_FLAG,
--SITE TABLE
SITE.PRIMARY_FLAG PRIMARY_SITE,
SITE.ACTIVE_STATUS SITE_STATUS,
SITE.PURPOSE,
SITE.ADDRESS1,
SITE.ADDRESS2,
SITE.ADDRESS3,
SITE.ADDRESS4,
SITE.CITY,
SITE.COUNTY,
SITE.STATE,
SITE.PROVINCE,
SITE.POSTAL_CODE,
SITE.COUNTRY,
SITE.CUST_ACCT_SITE_ID,
SITE.PARTY_SITE_ID,
SITE.LOCATION_ID,
SITE.REPORTABLE_1099,
SITE.TAX_TYPE_1099,
--CONTACT
CONT.PRIMARY_FLAG PRIMARY_CONTACT,
CONT.CONTACT_ROLE,
CONT.ACTIVE_STATUS CONTACT_STATUS,
CONT.FIRST_NAME,
CONT.LAST_NAME,
CONT.SALUTATION,
CONT.JOB_TITLE,
CONT.EMAIL_ADDRESS,
CONT.PHONE_LINE_TYPE,
CONT.PHONE_NUMBER,
CONT.PHONE_EXTENSION,
CONT.PHONE_AREA_CODE,
CONT.PHONE_COUNTRY_CODE,
CONT.PREFERRED_LANGUAGE,
--PRO
PRFL.CUSTOMER_PROFILE_CLASS,
PRFL.ACCOUNT_STATUS PROFILE_ACCT_STATUS,
PRFL.ACTIVE_STATUS PROFILE_ACTIVE_STATUS,
PRFL.ACCOUNT_STATUS_REASON,
PRFL.INVOICE_TYPE
FROM XXEX_AR_CUST_INT_CTRL_T CTRL,
XXEX_AR_CUST_ACCT_INT_T ACCT,
XXEX_AR_CUST_SITE_INT_T SITE,
XXEX_AR_CUST_CONTACT_INT_T CONT,
XXEX_AR_CUST_PROFILE_INT_T PRFL
WHERE CTRL.ORA_PROCESS_ID = ACCT.ORA_PROCESS_ID
AND ACCT.CUSTOMER_RECORD_ID = SITE.CUSTOMER_RECORD_ID
AND SITE.CUSTOMER_RECORD_ID = CONT.CUSTOMER_RECORD_ID
AND CONT.CUSTOMER_RECORD_ID = PRFL.CUSTOMER_RECORD_ID
AND acct.Supplier_process_status = 'E'
How i should join the 6 tables..
Rashmi Gupta wrote:
No all table have records corresponding to each customer ID... But what if one of the table has 1 row..?
I checked the result.. there is a Cartesian product.
Customer_Record_ID is unique identifier in 4 tables -
XXEX_AR_CUST_ACCT_INT_T ACCT,
XXEX_AR_CUST_SITE_INT_T SITE,
XXEX_AR_CUST_CONTACT_INT_T CONT,
XXEX_AR_CUST_PROFILE_INT_T PRFL
XXEX_AR_CUST_INT_CTRL_T CTRL and XXEX_AR_CUST_ACCT_INT_T ACCT tables have ora_process_id column common so joined between them.
We dont use primary keys in Interface tables.. we are just using unique indentifier
Edited by: Rashmi Gupta on Jan 30, 2012 5:58 AMAbove is a very well worded version of what I was getting around to, but in the mean time I've been distracted by your "we don't use primary keys"...when you say "unique identifier" please tell me you mean "unique constraint" ?
Similar Messages
-
What is a cartesian product why we need it and where we need it
Hi,
One of my interview they asked this question
Can any one please tell detail about it.
Thanks
Kalpana>
what is a cartesian product
>
A cartesian join is when you do not specify any join condition between tables.
So for two tables A and B the result is that every row of table B is appended to every row of table A.
If there are 10 rows in Table A and 20 rows in Table b there will be 200 rows in the result set and each row will contain every column from table A and every column from table b unless you specify specific columns.
See Cartesian Products in the SQL Language doc
http://docs.oracle.com/cd/B28359_01/server.111/b28286/queries006.htm
>
Cartesian Products
If two tables in a join query have no join condition, then Oracle Database returns their Cartesian product. Oracle combines each row of one table with each row of the other. A Cartesian product always generates many rows and is rarely useful. For example, the Cartesian product of two tables, each with 100 rows, has 10,000 rows. Always include a join condition unless you specifically need a Cartesian product. If a query joins three or more tables and you do not specify a join condition for a specific pair, then the optimizer may choose a join order that avoids producing an intermediate Cartesian product.
>
As for when? In earlier versions of Oracle I would use a cartesian join when creating report ready data tables and there needed to be data for every report period. One example is writing a Crystal Report (now business objects) to report sales for 2011 and you want the report to have a section for each month even if there was no data for that month.
Then we would use a cartesian join on a date table that had 12 records (one for each month) with totals of zero. This would make sure that there was at lease one summary record for each month so that every month would show up on the report even if we only had data for March. -
Joining DB VIEW and Command result in cartesian product
hello,
My SQL query is joining a DB view and a Command(=ad hoc query).
Nonetheless from the results it appears that CR didn't join the views correctly, it returns a cartesian product.
Any idea what the issue could be, I'm using very simple queries.
Thanks in advance#1 make sure you are linking everything together properly in the "Links" tab of the Database Expert
#2 In my experience, it's just a bad idea to join SQL commands and other tables. I had poor performance issues in my case. (It prevents server side filtering and grouping) My suggestion is to write out the entire thing in the command. If you are pulling from multiple database, write a separate command for each database and link them. -
Error while creating a production order
Dear PP gurus
I am trying to create a production order of a material through CO01 , I am getting a error 05.05.2016 date comes after end of valid factory calendar. (Please correct
Although for all other material , no error is coming.
My factory calender is till 2015, but i am not able to understand why and how it is capturing the above date.
please help me how to correct it?
Thanks in advance
RegardsDear Aadi,
When your in operations screen
Extras > Scheduling > Schedule > operation overview = operation segments > Click on Gang chat icon
it should show you the days for ur base qty
then click on scheduling results then click on update material master & save
then Go to CA96
input plant
then mark a tick for ur material & click on update material master icon
then check in material master work scheduling view
Regards
Madhu -
Hi all!
I need help.
I have this function that launches a Select. My Oracle Grid tells me, when I tune the Select of this function, that there is a Cartesian Product. I understand what a Cartesian Product is, but I fail to find it. Can you help me by pointing out WHERE is the misteke? Thank you!!
P.s. Oracle EE 10.2.0.4 on windows Server 2003 R2 SP2 64Bit
[code]
create or replace
FUNCTION "ANA_GETVERBALE"
v_VerbaleId IN NUMBER DEFAULT NULL,
v_Sezione IN VARCHAR2 DEFAULT NULL,
v_NumeroVerbale IN VARCHAR2 DEFAULT NULL,
v_DataVerbale IN DATE DEFAULT NULL,
v_TargaVeicolo IN VARCHAR2 DEFAULT NULL,
v_Serie IN VARCHAR2 DEFAULT NULL,
v_LoggedUser IN VARCHAR2 DEFAULT NULL
RETURN SYS_REFCURSOR
AS
cv_1 SYS_REFCURSOR;
BEGIN
OPEN cv_1 FOR
SELECT
ANA_M.VerbaleId,
ANA_M.Sezione,
ANA_M.NumeroVerbale,
ANA_M.DataVerbale,
ANA_M.TargaVeicolo,
ANA_M.Serie,
SCH_C.StatoCartellinoId,
LOV_StatoCartellino.ListOfValueName StatoCartellino,
sch_c.cartellinoid
FROM ANA_Materia_Verbale ANA_M
INNER JOIN SCH_Cartellini SCH_C ON SCH_C.SoggettoId=ana_m.verbaleid AND SCH_C.TipoSoggettoId = SIS_CONSTANTS_PKG.VB
INNER JOIN SIC_PROFILO_STATO SIC_PSC ON SIC_PSC.STATOID=SCH_C.STATOCARTELLINOID
INNER JOIN SIC_PROFILI_USERS SIC_PUC ON SIC_PUC.PROFILOID=SIC_PSC.PROFILOID AND SIC_PUC.PERSONALID=v_LoggedUser
LEFT JOIN TYP_ListOfValues LOV_StatoCartellino ON LOV_StatoCartellino.ListOfValueId = SCH_C.StatoCartellinoId
WHERE ( v_VerbaleId = SIS_CONSTANTS_PKG.AnyBigint OR ANA_M.VerbaleId = v_VerbaleId )
AND ( v_Sezione = SIS_CONSTANTS_PKG.AnyString OR REGEXP_LIKE(ANA_M.Sezione, '^' || v_Sezione || '$', 'i') )
AND ( v_serie = SIS_CONSTANTS_PKG.AnyString OR REGEXP_LIKE(ANA_M.Serie, '^' || v_Serie || '$', 'i') )
AND ( v_NumeroVerbale = SIS_CONSTANTS_PKG.AnyString OR ANA_M.NumeroVerbale = v_NumeroVerbale )
AND ( v_DataVerbale = SIS_CONSTANTS_PKG.AnyDateTime OR ANA_M.DataVerbale = v_DataVerbale )
AND ( v_TargaVeicolo = SIS_CONSTANTS_PKG.AnyString OR REGEXP_LIKE(ANA_M.TargaVeicolo,'^' || v_TargaVeicolo || '$', 'i') );
RETURN cv_1;
END;
[/code]....ouch... well that explains a LOT!! The real problem was the Oracle Grid SQL_TUNING that warned me that the SELECT contained a CARTESIAN PRODUCT:
Ristruttura SQL
An expensive cartesian product operation was found at line ID 4 of the execution plan.
Consider removing the disconnected table or view from this statement or add a join condition which refers to it.
A cartesian product should be avoided whenever possible because it is an expensive operation and might produce a large amount of data.
with this EXECUTION PLAN:
Operazione
ID riga
Oggetto
Object type
Ordine
Righe
Dimensione (KB)
Costo
Tempo (sec)
Costo CPU
Costo I/O
SELECT STATEMENT
0
13
1
0,091
460
6
116.852.560
452
NESTED LOOPS OUTER
1
12
1
0,091
460
6
116.852.560
452
NESTED LOOPS
2
9
1
0,079
459
6
116.843.328
451
NESTED LOOPS
3
7
2
0,141
457
6
116.826.984
449
MERGE JOIN CARTESIAN
4
4
2
0,102
451
6
116.781.136
443
INDEX FAST FULL SCAN
5
DOCARK.PK_SIC_PROFILI_USERS
INDEX (UNIQUE)
1
1
0,010
2
1
81.903
2
BUFFER SORT
6
3
2
0,082
449
6
116.699.232
441
TABLE ACCESS FULL
7
DOCARK.ANA_MATERIA_VERBALE
TABLE
2
2
0,082
449
6
116.699.232
441
TABLE ACCESS BY INDEX ROWID
8
DOCARK.SCH_CARTELLINI
TABLE
6
1
0,020
3
1
22.924
3
INDEX RANGE SCAN
9
DOCARK.IDX_SCH_CARTELLINI_SOG_TIPO
INDEX
5
1
2
1
15.493
2
INDEX RANGE SCAN
10
DOCARK.PK_SIC_PROFILO_STATO
INDEX (UNIQUE)
8
1
0,009
1
1
8.171
1
TABLE ACCESS BY INDEX ROWID
11
DOCARK.TYP_LISTOFVALUES
TABLE
11
1
0,012
1
1
9.231
1
INDEX UNIQUE SCAN
12
DOCARK.PK_TYP_LISTOFVALUES
INDEX (UNIQUE)
10
1
0
1
1.900
0
So I started trying to REMOVE the Cartesian Product. But first I had to find it! So apparently I shouldn't worry too much...
The real problem is that I have to work with funtions and DBs created by others, so I am not sure what to expect from most of the Functions. Apparently this execution is correct no matter what that the Tunig Advisor says!
Thanks! -
Ora 00918 normalizing problem using cartesian product
I am using a cartesian product to normalise a table. Is there a better way of doing this to avoid the 00918 error?
Thanks in advance ...
select
/* select clause */
from
z_dvo_proj_milestone_summary t1,
z_dvo_proj_milestone_summary t2
where
/* where clause */
create or replace view z_dvo_proj_milestone_summary as
select
query1.projid
,query1.projname
,query1.projtype
,query1.projcode
,query1.report_month
,query1.report_year
,query1.SubProjID
,query1.DVONUM
,query1.measure_type
,query1.MEASURE
,hier.level0_vosa_prj_type
from
(select
score.project as projid
,srm.name as projname
,hier.level0_vosa_prj_type as projtype
,score.code as projcode
,score.report_month as report_month
,score.report_year as report_year
,CASE
when (subprojtab.subprojid = 1) then score.sub_project_1
when (subprojtab.subprojid = 2) then score.sub_project_2
End as SubProjID
,dvonumtab.dvonum as DVONUM
,typetab.measure_type as measure_Type
,CASE
WHEN (subprojtab.subprojid = 1) then
CASE
when typetab.measure_type = 'baseline' then
CASE
when (dvonumtab.dvonum = 1) then score.proj1_dvo1_baseline
when (dvonumtab.dvonum = 2) then score.proj1_dvo2_baseline
End
when typetab.measure_type = 'planned' then
CASE
when (dvonumtab.dvonum = 1) then score.proj1_dvo1_planned
when (dvonumtab.dvonum = 2) then score.proj1_dvo2_planned
End
End
WHEN (subprojtab.subprojid = 2) then
CASE
when typetab.measure_type = 'baseline' then
CASE
when (dvonumtab.dvonum = 1) then score.proj2_dvo1_baseline
when (dvonumtab.dvonum = 2) then score.proj2_dvo2_baseline
End
when typetab.measure_type = 'planned' then
CASE
when (dvonumtab.dvonum = 1) then score.proj2_dvo1_planned
when (dvonumtab.dvonum = 2) then score.proj2_dvo2_planned
End
End
End as MEASURE
from
ODF_CA_PROJSCORE score
left outer join
srm_projects srm on (srm.id = score.project)
left outer join
Z_PROJECT_HIERARCHY hier on (srm.id = hier.level0)
Join
(select 1 as subprojid from dual
union
select 2 as subprojid from dual) subprojtab on (1=1)
/* There will be 11 measures here eventually */
Join
(select 'baseline' as measure_type from dual
union
select 'planned' as measure_type from dual) typetab on (1=1)
Join
(select 1 as dvonum from dual
union
select 2 as dvonum from dual) dvonumtab on (1=1)
WHERE
(CASE
when (subprojtab.subprojid = 1) then score.sub_project_1
when (subprojtab.subprojid = 2) then score.sub_project_2
End) IS NOT NULL) query1
left outer join Z_PROJECT_HIERARCHY hier
on (query1.SubProjID = hier.level0)I am using a cartesian product to normalise a table. Is there a better way of doing this to avoid the 00918 error?
Thanks in advance ...
select
/* select clause */
from
z_dvo_proj_milestone_summary t1,
z_dvo_proj_milestone_summary t2
where
/* where clause */
create or replace view z_dvo_proj_milestone_summary as
select
query1.projid
,query1.projname
,query1.projtype
,query1.projcode
,query1.report_month
,query1.report_year
,query1.SubProjID
,query1.DVONUM
,query1.measure_type
,query1.MEASURE
,hier.level0_vosa_prj_type
from
(select
score.project as projid
,srm.name as projname
,hier.level0_vosa_prj_type as projtype
,score.code as projcode
,score.report_month as report_month
,score.report_year as report_year
,CASE
when (subprojtab.subprojid = 1) then score.sub_project_1
when (subprojtab.subprojid = 2) then score.sub_project_2
End as SubProjID
,dvonumtab.dvonum as DVONUM
,typetab.measure_type as measure_Type
,CASE
WHEN (subprojtab.subprojid = 1) then
CASE
when typetab.measure_type = 'baseline' then
CASE
when (dvonumtab.dvonum = 1) then score.proj1_dvo1_baseline
when (dvonumtab.dvonum = 2) then score.proj1_dvo2_baseline
End
when typetab.measure_type = 'planned' then
CASE
when (dvonumtab.dvonum = 1) then score.proj1_dvo1_planned
when (dvonumtab.dvonum = 2) then score.proj1_dvo2_planned
End
End
WHEN (subprojtab.subprojid = 2) then
CASE
when typetab.measure_type = 'baseline' then
CASE
when (dvonumtab.dvonum = 1) then score.proj2_dvo1_baseline
when (dvonumtab.dvonum = 2) then score.proj2_dvo2_baseline
End
when typetab.measure_type = 'planned' then
CASE
when (dvonumtab.dvonum = 1) then score.proj2_dvo1_planned
when (dvonumtab.dvonum = 2) then score.proj2_dvo2_planned
End
End
End as MEASURE
from
ODF_CA_PROJSCORE score
left outer join
srm_projects srm on (srm.id = score.project)
left outer join
Z_PROJECT_HIERARCHY hier on (srm.id = hier.level0)
Join
(select 1 as subprojid from dual
union
select 2 as subprojid from dual) subprojtab on (1=1)
/* There will be 11 measures here eventually */
Join
(select 'baseline' as measure_type from dual
union
select 'planned' as measure_type from dual) typetab on (1=1)
Join
(select 1 as dvonum from dual
union
select 2 as dvonum from dual) dvonumtab on (1=1)
WHERE
(CASE
when (subprojtab.subprojid = 1) then score.sub_project_1
when (subprojtab.subprojid = 2) then score.sub_project_2
End) IS NOT NULL) query1
left outer join Z_PROJECT_HIERARCHY hier
on (query1.SubProjID = hier.level0) -
How to create an incremental key in a Matrialized View created from Union?
I am trying to create some sort of incremental key in a materialized view that is formed from several Select and Union statements.
Why? My materialized view has a composite inteligent key of 5 columns. So, when I want to find a particular records, I don't want to have to do a select statement with some many WHERE and AND clauses.
The ROWNUM I tried didn't work (as I thought) because my Materialized view is made out of several union and each select statement of the UNION generates a new set of incremental numbers.
I also tried creating a SEQUENCE (I understand the sequence number will keep growing each time I do a refresh ) but it doesn't look like I can create a SEQUENCE on Matrialized View.
Anyone has any suggestion as how do I create some kind of incremental number in a materilized view created from an Union.
Thank you.
HI'm assuming that this is a continusation of your earlier message
Re: Can I create Sequence on Materialized Views?
It doesn't seem to make sense, as others mentioned in that thread, to try to add this sort of key to a materialized view. Since the key would change every time you refreshed the materialized view, I'm having difficulty understanding how this will simplify your life. Your code would still have to refer to all 5 columns of the composite key since that would be the only constant.
Justin -
Error while creating a product group--Batch input error 9
Hi,
While creating a product group in T-code MC84, getting the error message" Product group can not be created (Batch input error 9)". Would appreciate providing yr help to resolve above issue.
Thks,
NileshHi Neel,
As ponited by you, the material type "PROD" is realted with creation of product group.I am able to resolve the error, "actually the work schedulling & MRP views were not activated for "PROD" resulting in the above error.
Thks for yr help.
Regards,
Nilesh -
Error while creating the product group by MC84
Hello Friends,
I am creating the product group by MC84, and in product group field i have given the product group name i.e P2345, and its description i.e product group for waluj, plant i.e cw01 and Base unit i.e KG.Now when i press enter system is throwing the error"The field is defined as the required field;it doesnot contain an entry."Message no.MG144.And with this error system is placing the cursor on product group field.As i have already given product group name than also system is throwing the error.
Though i know the alternative method to create product group by MMO1 and selecting the material type PROD, then also i want to know why system is throwing the error while creating the product group by MC84.
Please guide.Dear,
This message says that you have not entered a mandatory field.Enter proper values for all mandatory fields and then you will not get this error.
Try to create the product group as material of material type"PROD"
Then you go on adding the memebers in SOP Transaction.
In some of the versions of SAP it is the problem.
I have also faced this problem in some versions.
Regards,
R.Brahmankar -
Getting a error while creating a product
hi
I am getting a error "please check the user set up" while creating and updating a product in iStore Administrator. System Admin user is able to create a product and also to update.Even assigned the all the roles and enrollments as such as for system admin user. Still i am getting the error.
please help me out to get red of this error.
regards
NafisaHi Neel,
As ponited by you, the material type "PROD" is realted with creation of product group.I am able to resolve the error, "actually the work schedulling & MRP views were not activated for "PROD" resulting in the above error.
Thks for yr help.
Regards,
Nilesh -
Grant access to all the views created in user schema to another schema
How to grant access for all the views created in own HAGGIS schema to comqdhb schema on the HAGGIS database.
Oracle Grant Privileges
===============
Object privileges assign the right to perform a particular operation on a specific object
I read that we can use select 'grant select on' ||view_name||'HAGGIS' user_views where owner='COMQDHB'
Is this right
Oracle System Privileges
===============
System privileges should be used in only cases where security isnt important,because a single grant statement could remove all security from the table
Role based security
============
Role security allows you to gather related grants into a collection-since the role is a predefined collection of privileges that are grouped together.privileges are easier to assign to users.
[http://www.dba-oracle.com/art_builder_grant_sec.htm]
can we grant select update to all the views at a time to the other schema.
Are there any other ways to secure the data other than creating users and assigning roles.
Thank you
Edited by: Trooper on Dec 23, 2008 9:24 AMI think what was suggested was that you use SQL to generate the grants on each and every view, that is, you use SQL to generate SQL where the SQL being generated is "grant select on view_name to role'"
If you users to connect to Oracle you have to create usernames for them though if the users only connect via an application the application might run just as one user and access to the application is controled via application security. The control on the application can be via Directory Services such as OID or MS Active Directory. User access to Oracle can also be controlled via OID.
To connect to Oracle you can use OS authenication (not recommended), usernames with passwords, or via Advanced Security Option which supports single sign-on products like Kebros or Oracle Internet Directory etc....
Example using SQL to generate SQL
How do I find out which users have the rights, or privileges, to access a given object ?
http://www.jlcomp.demon.co.uk/faq/privileges.html
HTH -- Mark D Powell -- -
Create a product catalog from flat fiile
Hello All,
I have a requirement to create a product catalog from a flat file. Basic requirement is to add products under product catalog. Further requirement can be extended to add views and add images to product catalog.
I want to know steps or function modules which will be used in order to achieve basic requirement first and then extended requirement.
Any sample example explaining the same will be more useful.
Thanks in advance
MadhuraBy uploading images to a Product Catalog, the program below will also add the item to the catalog area specified.
SE38 - Run Program COM_PCAT_MASS_DOC_IMPORT
It has it's own Program Information to explain how it works.
Here's the first portion of the that information:
Title
Mass Import of Multimedia Documents for Product Catalogs
Purpose
This report enables you to automatically import multimedia documents that are already available in a file system and assign these documents to product catalog items. The items are identified using a product number. An item is created if a corresponding one is not available.
A simple text file, which can be created using the normal spreadsheet programs or simple text editors, is used as a basis for the import.
We have used this in the past, but it has some performance issues, so experiment to be sure you don't try to upload too many images at once...it can bog down after a few batches and begin crawling. -
Particular sales order of the same line item hv created multiple production
sir,
I am having a problem in MD04. A particular sales order of the same line item hv created multiple production order.and continously planning is going on... I didn't get why it happens.
Will u please suggest me what should i do in this case?
Regards
MeenuHello sir,
yes, ofcourse, for the finished material have the BOM with some semifinished productes which are to be produced .
In co02 , we can go through the collective production order.
One more thing is that, in the multiple production order date(scheduling date) shows in forward(future dates).
For ex:09-05-2010.
Regards
Meenu -
Urgent plz help me out about cartesian product
plz...its urgent,can anyone help in the following query where iam getting cartesian product,so how to get result without cartesian product
this is the query
SELECT DISTINCT MIS.segment1 "ITEM CODE",
MIS.DESCRIPTION "DESCRIP"
,MIS.Primary_uom_code "UOM",
MTL.LOT_NUMBER "LOT NUMBER"
,A.PARTY_NUMBER "CUSTOMER NUMBER",
A.PARTY_NAME "CUSTOMER NAME",
(A.ADDRESS1||A.ADDRESS2||A.ADDRESS3||A.ADDRESS4) "SHIP TO",
B.DELIVERY_DETAIL_ID "DO NO",B.SHIPPED_QUANTITY "SHIPPED QUANTITY"
,C.ULTIMATE_DROPOFF_DATE "ISSUED DATE"
,D.ORDER_NUMBER "SALES ORDER NUMBER"
,E.LINE_NUMBER "SALES ORDER LINE"
FROM MTL_SYSTEM_ITEMS MIS
,MTL_TRANSACTION_LOT_NUMBERS MTL
,HZ_PARTIES A,
WSH_DELIVERY_DETAILS B,
WSH_NEW_DELIVERIES C,
OE_ORDER_HEADERS_ALL D,
OE_ORDER_LINES_ALL E
WHERE MIS.INVENTORY_ITEM_ID=MTL.INVENTORY_ITEM_ID
AND B.INVENTORY_ITEM_ID=MIS.INVENTORY_ITEM_ID
AND A.PARTY_ID=B.CUSTOMER_ID
AND B.DELIVERY_DETAIL_ID=C.DELIVERY_ID
AND MIS.INVENTORY_ITEM_ID=E.INVENTORY_ITEM_ID
AND D.HEADER_ID=E.HEADER_IDA lot of times when I get duplicate results, I'll do a select * and see why. Often one of those tables will have a sequenced value that could repeat several times for a combination of values.
If thats the case, you may need to add something like:
...and a.id = (select min(id)
from b
where a.col = b.col) -
Materialized view (creating and complete refresh)
Good day.
I have a huge query that is used to create a materialized view. The query consist of 9 joins, a lot of aggregations, some subqueries, so we can say it is rather huge. The query itself executes for about 30 seconds and returns about 200 rows. The materialized view creates and refreshes for more than 30 minutes. Can someone please explain me the mechanism of materialized view creation which causes such bad performance.
We use Oracle Database 9.2.0.4.
Thank you in advance.I've fount the solution. May be it will be useful for someone not regarding that 9.2 database is less used today than 10.2.
I studied carefully the plan of the query and the plan of insert statement that is used when creating materialized view and found the cause of trouble. Insert statements generates VIEW PUSHED PREDICATE and BITMAP CONVERSION FROM ROWIDS when parsing. Bitmap conversion can be removed by setting environment parameter btree_bitmap_plans to false (a well-known issue), but I decided not ot change the production environment. The pushed predicate can be removed by using hint NO_PUSH_PRED to each subquery used in a materialized view. This step reduced the time of materialized view creation and execution to about a minute.
Thank everyone who tried to help.
Maybe you are looking for
-
How I can arrange my audiobooks on ipod classic by itunes?
hello everyone I got iPod classic 80 GB and I have old mp3 audiobbok "10 chapters", so I converted it to m4b "10 m4b files" then I put it in the right place on the itunes and sync with my ipod without ant problems. _So my problem is :_ my audiobook h
-
Tigerdirect & pdf don't work with foxfire
I was having trouble getting a rebate info pdf to display from tigerdirect.com. only half the page displayed and the links therein did not work. after calling the company, they said to try internet explorer. it worked with IE. just thought you should
-
TS4062 My iphone wont connect to itunes
My Iphone when plugged in wont show a device button to sync any of my music or anything. The device button should be in the upper right corner but is not.
-
[Bash] Automated symlinking question
Hey all, I've been struggling getting a tedious task of recreating symlinks automated... Let me justgive you an example of what I'd be doing by hand: [~/.icons/my-theme/scalable/apps/ $] ls -l total 8464 -rw-r--r-- 1 rob rob 3781 2008-06-05 12:08 abi
-
How to save garage band as mp3
how can I save a GarageBand file it as an MP3 directly into an iPad