Oracle 9i - rule based settings

How can change the cost based setting to rule based in oracle 9i? Could anybody help me?

ALTER SYSTEM SET OPTIMIZER_MODE=RULE SCOPE=BOTH;
Won't work, you'll have to change your parameter file and then restart the DB to change optimizer mode at instance level.
For a session you can change it using the command
ALTER SESSION SET OPTIMIZER_MODE=RULE;
Sudhanshu Bhandari

Similar Messages

  • Partitioning on Oracle 8i (Rule Based vs. Cost Based)

    At my current engagement, we are using Oracle Financials 11.0.3 on Oracle 8.0.6. The application uses rule-based optimizer. The client wants to implement Oracle partitioning. With this in mind, we are concerned about possible performance issues that the implementation of partitioning may cause since RBO does not recognize it.
    We agree that the RBO will see a non-partitioned table the same as a partitioned. In this scenario where you gain the most is with backup/recoverability and general maintenance of the partitioned table.
    Nevertheless, we have a few questions:
    When implementing partitions, will the optimizer choose to go with Cost base vs. Rule base for these partitioned tables?
    Is it possible that the optimizer might get confused with this?
    Could it degrade performance at the SQL level?
    If this change from RBO to CBO does occur, the application could potential perform poorly because of the way it has been written.
    Please provide any feedback.
    Thanks in advance.

    If the CBO is invoked when accessing these tables, you may run into problems.
    - You'll have to analyze your tables & ensure that the statistics are kept up to date.
    - It's possible that any SQL statements which invoke the CBO rather than the RBO will have different performance characteristics. The SYSTEM data dictionary tables, for example, must use the RBO or their performance suffers dramatically. Most of the time, the CBO beats the RBO, but applications which have been heavily tuned with the RBO may have problems with the CBO.
    - Check your init.ora to see what optimizer mode you're in. If you're set to CHOOSE, the CBO will be invoked whenever statistics are available on the table(s) involved. If you choose RULE, you'll only invoke the CBO when the RBO encounters situations it doesn't have rules for.
    Justin

  • Re: Oracle 8i (8.1.7.4) Rule based v/s Cost based

    Hi,
    I would like to know the advantages/disadvantages of using RULE based optimizer v/s COST based optimizer in Oracle 8i. We have a production RULE based database and are experiencing performance issues on some queries sporadically.
    TKPROF revealed:
    call       count       cpu    elapsed             disk                  query                current              rows
    Parse        0      0.00       0.00                0                      0                      0                      0
    Execute      3     94.67    2699.16            1020421            5692711            51404               0
    Fetch       13    140.93    4204.41             688482             4073366            0                      26896
    total       16       235.60    6903.57           1708903            9766077            51404               26896
    Please post your expert suggestions as soon as possible.
    Thanks and Regards,
    A

    I think the answer you are looking for is that Rule Based optimizer is predictive, but Cost Based optimizer results may vary depending on statistics of rows, indexes, etc. But at the same time, you can typically get better speed for OLTP relational databases with CBO, assuming you have correct statistics, and correct optimizer settings set.

  • Not able to access the web based RuleAuthor of Oracle Business Rules

    Hi ,
    I have Installed Oracle SOA Suite (11g) version from here .
    I have followed the steps in the Installation guide .
    I was able to install it successfully. At present I need to Work on the oracle Business Rules.
    As per the documentation I have tried to access the Rules author at the following URL
    http://localhost:7001/ruleauthor/
    But I was not able to access it.
    Please let me know if I need to install any other component to access Rule Author. please let me know if you need any more information.
    Thanks in advance for your time,
    Raja Kumar

    Back up all data.
    Launch the Keychain Access application in any of the following ways:
    ☞ Enter the first few letters of its name into a Spotlight search. Select it in the results (it should be at the top.)
    ☞ In the Finder, select Go ▹ Utilities from the menu bar, or press the key combination shift-command-U. The application is in the folder that opens.
    ☞ Open LaunchPad. Click Utilities, then Keychain Access in the icon grid.
    Select the login keychain from the list on the left side of the Keychain Access window. If your default keychain has a different name, select that.
    If the lock icon in the top left corner of the window shows that the keychain is locked, click to unlock it. You'll be prompted for the keychain password, which is the same as your login password, unless you've changed it.
    Right-click or control-click the login entry in the list. From the menu that pops up, select Change Settings for Keychain "login". In the sheet that opens, uncheck both boxes, if not already unchecked.
    From the menu bar, select
    Keychain Access ▹ Preferences ▹ First Aid
    If the box marked Keep login keychain unlocked is not checked, check it.
    Select
    Keychain Access ▹ Keychain First Aid
    from the menu bar and repair the keychain. Quit Keychain Access.

  • Rule-based or 'expert' system in Oracle

    Hi,
    Has anyone implemented a rule-based system in Oracle? E.g. based upon a decision tree?
    I have a feeling that the algorithm will involve 'tree-walking' within a heirarchy of rules but I'm not quite sure how to structure it. I have a couple of ideas such as storing pointers to the next rule with the columns holding things like the name of the parameter, the condition, the comparison value and the outcome.
    The program has to choose a carrier (such as UPS or Fed-Ex) based upon rules such as the weight (<1kg?>, the intrinsic value (> #100), the addressee postcode and whether the package is hazardous or not. There can be any permutaion of these conditions apart from those that are direct opposites (such as greatr than or lower than 1kg).
    I would be grateful for any advice on this, or a web address that might help (I have googled and found something calld the 'reme algorithm' but cannot find any elaboration of it! grrr.....).
    Thanks for your time,
    Regards,
    Jim.

    thanks for your reply, but need different thing,
    suppose we prepare a report in report builder and when we want to print it, it always print in windows gui fonts like times new roman, arial , tahoma etc..
    I WANT TO PRINT IT IN TEXT-BASED FONTS NOT WINDOWS FONT WHICH GAIN HIGH QUANTITY OF TONER . I want to print like IBM COBOL, FOXPRO, GWBASIC, PASCAL TEXT MODE REPORTS

  • Rule based ATP is not working for Components

    Hi All,
    Our requirement is to do availability check through APO for Sales order created in ECC,so we are using gATP.
    Requirement: We are creating salesorder for BOM header (Sales BOM) and avaialbility check should happen for components i.e. Product avalaibility & Rule based substitution.
    Issue: Product availiabilty is working for components but rules based substituion is working,  mean Rules are not getting determind for components.
    Settings:
    - Header doesnot exist in APO and compnents do exist in APO
    - Availability check is not enabled for header item category and enabled for Item category for components
    - Rules have been created for Components in APO
    - Rule base ATP is activated in Check instructions
    We have also tried MATP for this i.e. PPM created in APO but still didn't get the desired result.
    If we create salesorder for the component material directly then Rule based ATP is happening, so for components Rule based ATP is not working.
    How do we enable enable Rulesbased ATP for components, i mean is there any different way to do the same.
    Thanks for help.
    Regards,
    Jagadeesh

    Hi Jagdeesh,
    If you are creating BOM in ECC and CIFing PPM of FG/Header material to APO, I think you need to CIF Header material, too, with material integration model.
    Please include header material in you integration models for material, SO and ATP check as well.
    For component availability check, you can use MATP; but for MATP, FG should be in APO. You need not to CIF any receipts of FG (stock, planned orders, POs etc), so that MATP will be triggered directly. Then maintaining Rules for RMs will enable to select available RMs according to the rule created.
    Regards,
    Bipin

  • Dynamic Rule based implementation in PL/SQL

    Hi,
    We are trying to implement a dynamic rule based application in Oracle 9i. Its simple logic where we store expressions as case statments and actions seperated by commas as follows.
    Rule: 'Age > 18 and Age <65'
    True Action: 'Status = ''Valid'' , description = ''age in range'''
    False Action: 'Status =''Invalid'', Description=''Age not in range'''
    Where Age,Status, description are all part of one table.
    One way of implementing this is fire rule for each record in the table and then based on true or false call action as update.
    i.e
    select (case when 'Age > 18 and Age <65' then 1 else 0 end) age_rule from tableX
    (above query will in in a cursor xcur)
    Then we search for
    if age_rule = 1 then
    update tablex set Status = ''Valid'' , description = ''age in range'' where id=xcur.id;
    else
    update tablex set Status =''Invalid'', Description=''Age not in range'' where id=xcur.id;
    end if;
    This method will result in very slow performance due to high i/o. We want to implement this in collection based method.
    Any ideas on how to dynamically check rules and apply actions to collection without impact on performance. (we have nearly 3million rows and 80 rules to be applied)
    Thanks in advance

    Returning to your original question, first of all, there is a small flaw in the requirements, because if you apply all the rules to the same table/cols, than the table will have results of only last rule that was processed.
    Suppose rule#1:
    Rule: 'Age > 18 and Age <65'
    True Action: 'Status = ''Valid'' , description = ''age in range'''
    False Action: 'Status =''Invalid'', Description=''Age not in range'''
    and Rule#2:
    Rule: 'Name like ''A%'''
    True Action: 'Status = 'Invalid'' , description = ''name begins with A'''
    False Action: 'Status =''Invalid'', Description=''name not begins with A'''
    Then after applying of rule#1 and rule#2, results of the rule#1 will be lost, because second rule will modify the results of the first rule.
    Regarding to using collections instead of row by row processing, I think that a better approach would be to move that evaluating cursor inside an update statement, in my tests this considerably reduced processed block count and response time.
    Regarding to the expression filter, even so, that you are not going to move to 10g, you still can test this feature and see how it is implemented, to get some ideas of how to better implement your solution. There is a nice paper http://www-db.cs.wisc.edu/cidr2003/program/p27.pdf that describes expression filter implementation.
    Here is my example of two different methods for expression evaluation that I've benchmarked, first is similar to your original example and second is with expression evaluation moved inside an update clause.
    -- fist create two tables rules and data.
    drop table rules;
    drop table data;
    create table rules( id number not null primary key, rule varchar(255), true_action varchar(255), false_action varchar(255) );
    create table data( id integer not null primary key, name varchar(255), age number, status varchar(255), description varchar(255) );
    -- populate this tables with information.
    insert into rules
    select rownum id
    , 'Age > '||least(a,b)||' and Age < '||greatest(a,b) rule
    , 'Status = ''Valid'', description = ''Age in Range''' true_action
    , 'Status = ''Invalid'', description = ''Age not in Range''' false_action
    from (
    select mod(abs(dbms_random.random),60)+10 a, mod(abs(dbms_random.random),60)+10 b
    from all_objects
    where rownum <= 2
    insert into data
    select rownum, object_name, mod(abs(dbms_random.random),60)+10 age, null, null
    from all_objects
    commit;
    -- this is method #1, evaluate rule against every record in the data and do the action
    declare
    eval number;
    id number;
    data_cursor sys_refcursor;
    begin
    execute immediate 'alter session set cursor_sharing=force';
    for rules in ( select * from rules ) loop
    open data_cursor for 'select case when '||rules.rule||' then 1 else 0 end eval, id from data';
    loop
    fetch data_cursor into eval, id;
    exit when data_cursor%notfound;
    if eval = 1 then
    execute immediate 'update data set '||rules.true_action|| ' where id = :id' using id;
    else
    execute immediate 'update data set '||rules.false_action|| ' where id = :id' using id;
    end if;
    end loop;
    end loop;
    end;
    -- this is method #2, evaluate rule against every record in the data and do the action in update, not in select
    begin
    execute immediate 'alter session set cursor_sharing=force';
    for rules in ( select * from rules ) loop
    execute immediate 'update data set '||rules.true_action|| ' where id in (
    select id
    from (
    select case when '||rules.rule||' then 1 else 0 end eval, id
    from data
    where eval = 1 )';
    execute immediate 'update data set '||rules.false_action|| ' where id in (
    select id
    from (
    select case when '||rules.rule||' then 1 else 0 end eval, id
    from data
    where eval = 0 )';
    end loop;
    end;
    Here are SQL_TRACE results for method#1:
    call count cpu elapsed disk query current rows
    Parse 37 0.01 0.04 0 0 0 0
    Execute 78862 16.60 17.50 0 187512 230896 78810
    Fetch 78884 3.84 3.94 2 82887 1 78913
    total 157783 20.46 21.49 2 270399 230897 157723
    and this is results for method#2:
    call count cpu elapsed disk query current rows
    Parse 6 0.00 0.00 0 0 0 0
    Execute 6 1.93 12.77 0 3488 170204 78806
    Fetch 1 0.00 0.00 0 7 0 2
    total 13 1.93 12.77 0 3495 170204 78808
    You can compare this two methods using SQL_TRACE.

  • Document rule based classification

    from the example in oracle text developers guide i tried to build a rule based document classification, using the code given below:
    create or replace package classifier as
    procedure this;
    end;
    show errors
    create or replace package body classifier as
    procedure this
    is
    v_document     blob;
    v_item          number;
    v_doc           number;
    begin
    for doc in (select document_id, content from documents)
         loop
              v_document :=doc.content;
              v_item:=0;
              v_doc:=doc.document_id;
              for c in (select category_id, category_name from docs_cats_rule_based_class
                   where matches(query,v_document)>0)
              loop
                   v_item:=v_item +1;
                   insert into doc_cat_rule_based_class values (doc.document_id, category_id);
              end loop;
         end loop;
    end this;
    end;
    show errors
    exec classifier.this
    this gives the following errors:
    package classifier Compiled.
    line 5: SQLPLUS Command Skipped: show errors
    package body Compiled.
    line 32: SQLPLUS Command Skipped: show errors
    Error starting at line 33 in command:
    exec classifier.this
    Error report:
    ORA-04063: package body "STARDOC.CLASSIFIER" has errors
    ORA-06508: PL/SQL: could not find program unit being called: "STARDOC.CLASSIFIER"
    ORA-06512: at line 1
    i think i am missing some grant to package. please help!

    What version of Oracle are you using? Did you create the required tables and index in the earlier steps? What did you run it from? It appears that you did not run it from SQL*Plus. Please see the following demonstration that shows that it works fine on Oracle 10g when run from SQL*Plus with minimal privileges. I did not use any data.
    SCOTT@10gXE> CREATE USER stardoc IDENTIFIED BY stardoc
      2  /
    User created.
    SCOTT@10gXE> GRANT CONNECT, RESOURCE TO stardoc
      2  /
    Grant succeeded.
    SCOTT@10gXE> CONNECT stardoc/stardoc
    Connected.
    STARDOC@10gXE>
    STARDOC@10gXE> create table news_table
      2    (tk    number primary key not null,
      3       title varchar2(1000),
      4       text  clob)
      5  /
    Table created.
    STARDOC@10gXE> create table news_categories
      2    (queryid  number primary key not null,
      3       category varchar2(100),
      4       query      varchar2(2000))
      5  /
    Table created.
    STARDOC@10gXE> create table news_id_cat
      2    (tk         number,
      3       category_id number)
      4  /
    Table created.
    STARDOC@10gXE> create index news_cat_idx on news_categories (query)
      2  indextype is ctxsys.ctxrule
      3  /
    Index created.
    STARDOC@10gXE> create or replace package classifier
      2  as
      3    procedure this;
      4  end classifier;
      5  /
    Package created.
    STARDOC@10gXE> show errors
    No errors.
    STARDOC@10gXE> create or replace package body classifier
      2  as
      3    procedure this
      4    is
      5        v_document    clob;
      6        v_item        number;
      7        v_doc            number;
      8    begin
      9        for doc in (select tk, text from news_table)
    10        loop
    11          v_document := doc.text;
    12          v_item := 0;
    13          v_doc  := doc.tk;
    14          for c in
    15            (select queryid, category from news_categories
    16             where matches (query, v_document) > 0)
    17          loop
    18             v_item := v_item + 1;
    19             insert into news_id_cat values (doc.tk,c.queryid);
    20          end loop;
    21        end loop;
    22    end this;
    23  end classifier;
    24  /
    Package body created.
    STARDOC@10gXE> show errors
    No errors.
    STARDOC@10gXE> exec classifier.this
    PL/SQL procedure successfully completed.
    STARDOC@10gXE>

  • Oracle RDF and Oracle Business Rules & Protege

    A couple of questions:
    1.) Has anyone used Protege to create frame-based ontologies which can somehow be used with Oracle Business Rules?
    2.) Has anyone used Protege along with the RDF storage functionality in Oracle?
    Thanks.

    Melli,
    I just started with semantic so won't have many useful ideas for at least some time.
    mostly there will be bugs and misunderstanding on my part.
    At this point i do see that the supplied library is not working properly . see my other thread. Fixing that would be really helpful.
    Let me know
    As of Composer - well let's just say its cost ineffective for organization to use on pilot project..

  • Improving performace for a Rule Based Optimizer DB

    Hi,
    I am looking for information on improving the current performance of an ancient 35GB Oracle 7.3.4 using RULE based optimizer mode. It is using 160 MB SGA and the physical memory on the system is 512MB RAM.
    As of now, all the major tasks which take time, are run after peak hours so that the 130 user sessions are not affected significantly.
    But recently am told some procedures take too long to execute ( procedure has to do with truncating tables and re-populating data into it ) and I do see 54% of the pie chart for WAITS are for "sequential reads" followed by "scattered reads" of 36%. There are a couple of large tables of around 4GB in this DB.
    Autotrace doesn't help me much in terms of getting an explain plan of slow queries since COST option doesnt show up and am trying to find ways of improving the performance of DB in general.
    Apart from the "redo log space requests" which I run into frequently (which btw is something I am trying to resolve ..thanks to some of you) I dont see much info on exactly how to proceed.
    Is there any info that I can look towards in terms of improving performance on this rule based optimizer DB ? Or is identifying the top sql's in terms of buffer gets the only way to tune ?
    Thank you for any suggestions provided.

    Thanks Hemant.
    This is for a 15 minute internal under moderate load early this morning.
    Statistic                   Total        Per Transact Per Logon    Per Second 
    CR blocks created                    275          .95         5.19          .29
    Current blocks converted fo           10          .03          .19          .01
    DBWR buffers scanned               74600       258.13      1407.55        78.44
    DBWR free buffers found            74251       256.92      1400.96        78.08
    DBWR lru scans                       607          2.1        11.45          .64
    DBWR make free requests              607          2.1        11.45          .64
    DBWR summed scan depth             74600       258.13      1407.55        78.44
    DBWR timeouts                        273          .94         5.15          .29
    OS Integral shared text siz   1362952204   4716097.59  25716079.32   1433177.92
    OS Integral unshared data s    308759380   1068371.56   5825648.68    324668.12
    OS Involuntary context swit       310493      1074.37      5858.36       326.49
    OS Maximum resident set siz       339968      1176.36      6414.49       357.48
    OS Page faults                      3434        11.88        64.79         3.61
    OS Page reclaims                    6272         21.7       118.34          6.6
    OS System time used                19157        66.29       361.45        20.14
    OS User time used                 195036       674.87      3679.92       205.09
    OS Voluntary context switch        21586        74.69       407.28         22.7
    SQL*Net roundtrips to/from         16250        56.23        306.6        17.09
    SQL*Net roundtrips to/from           424         1.47            8          .45
    background timeouts                  646         2.24        12.19          .68
    bytes received via SQL*Net        814224      2817.38     15362.72       856.18
    bytes received via SQL*Net         24470        84.67        461.7        25.73
    bytes sent via SQL*Net to c       832836      2881.79     15713.89       875.75
    bytes sent via SQL*Net to d        42713        147.8       805.91        44.91
    calls to get snapshot scn:         17103        59.18        322.7        17.98
    calls to kcmgas                      381         1.32         7.19           .4
    calls to kcmgcs                      228          .79          4.3          .24
    calls to kcmgrs                    20845        72.13        393.3        21.92
    cleanouts and rollbacks - c           86           .3         1.62          .09
    cleanouts only - consistent           40          .14          .75          .04
    cluster key scan block gets         1051         3.64        19.83         1.11
    cluster key scans                    376          1.3         7.09           .4
    commit cleanout failures: c           18          .06          .34          .02
    commit cleanout number succ         2406         8.33         45.4         2.53
    consistent changes                   588         2.03        11.09          .62
    consistent gets                   929408      3215.94        17536        977.3
    cursor authentications              1746         6.04        32.94         1.84
    data blocks consistent read          588         2.03        11.09          .62
    db block changes                   20613        71.33       388.92        21.68
    db block gets                      40646       140.64       766.91        42.74
    deferred (CURRENT) block cl          668         2.31         12.6           .7
    dirty buffers inspected                3          .01          .06            0
    enqueue conversions                  424         1.47            8          .45
    enqueue releases                    1981         6.85        37.38         2.08
    enqueue requests                    1977         6.84         37.3         2.08
    execute count                      20691         71.6        390.4        21.76
    free buffer inspected               2264         7.83        42.72         2.38
    free buffer requested             490899      1698.61      9262.25       516.19
    immediate (CR) block cleano          126          .44         2.38          .13
    immediate (CURRENT) block c          658         2.28        12.42          .69
    logons cumulative                     53          .18            1          .06
    logons current                         1            0          .02            0
    messages received                    963         3.33        18.17         1.01
    messages sent                        963         3.33        18.17         1.01
    no work - consistent read g       905734      3134.03     17089.32        952.4
    opened cursors cumulative           2701         9.35        50.96         2.84
    opened cursors current               147          .51         2.77          .15
    parse count                         2733         9.46        51.57         2.87
    physical reads                    490258      1696.39      9250.15       515.52
    physical writes                     2265         7.84        42.74         2.38
    recursive calls                    37296       129.05        703.7        39.22
    redo blocks written                 5222        18.07        98.53         5.49
    redo entries                       10575        36.59       199.53        11.12
    redo size                        2498156      8644.14     47135.02      2626.87
    redo small copies                  10575        36.59       199.53        11.12
    redo synch writes                    238          .82         4.49          .25
    redo wastage                      104974       363.23      1980.64       110.38
    redo writes                          422         1.46         7.96          .44
    rollback changes - undo rec            1            0          .02            0
    rollbacks only - consistent          200          .69         3.77          .21
    session logical reads             969453      3354.51     18291.57       1019.4
    session pga memory              35597936    123176.25    671659.17     37432.11
    session pga memory max          35579576    123112.72    671312.75      37412.8
    session uga memory               2729196      9443.58     51494.26      2869.82
    session uga memory max          20580712     71213.54    388315.32     21641.13
    sorts (memory)                      1091         3.78        20.58         1.15
    sorts (rows)                       12249        42.38       231.11        12.88
    table fetch by rowid               57246       198.08      1080.11         60.2
    table fetch continued row            111          .38         2.09          .12
    table scan blocks gotten          763421       2641.6     14404.17       802.76
    table scan rows gotten          13740187      47543.9    259248.81     14448.15
    table scans (long tables)            902         3.12        17.02          .95
    table scans (short tables)          4614        15.97        87.06         4.85
    total number commit cleanou         2489         8.61        46.96         2.62
    transaction rollbacks                  1            0          .02            0
    user calls                         15266        52.82       288.04        16.05
    user commits                         289            1         5.45           .3
    user rollbacks                        23          .08          .43          .02
    write requests                       331         1.15         6.25          .35Wait Events :
    Event Name                       Count         Total Time    Avg Time    
    SQL*Net break/reset to client                7             0             0
    SQL*Net message from client              16383             0             0
    SQL*Net message from dblink                424             0             0
    SQL*Net message to client                16380             0             0
    SQL*Net message to dblink                  424             0             0
    SQL*Net more data from client                1             0             0
    SQL*Net more data to client                 24             0             0
    buffer busy waits                          169             0             0
    control file sequential read                55             0             0
    db file scattered read                   74788             0             0
    db file sequential read                 176241             0             0
    latch free                                6134             0             0
    log file sync                              225             0             0
    rdbms ipc message                           10             0             0
    write complete waits                         4             0             0I did enable the timed_stats for the session but dont know why the times are 0's. Since I cant bounce the instance until weekend, cant enable the parameter in init.ora as well.

  • Rule based system in SQL

    we have an airline pricing system whose rules change often, and rather than re-designing tables and the client application code everytime that happens, we would like to develop a rule-based system to dynamically store the rules in a rule-based system that doesn't require re-design and code modification.
    any ideas ?
    here is an example of the data that we would like to store
    if seasonality is LOW
    and passenger is CHILD
    and carrier is TRW
    and origination is COS
    and destination is PIT
    and ticket code is Y
    then price is 908
    seasonality for carrier TRW is LOWfor travel between 01/15/06 to 04/15/06
    seasonality for carrier JAR is LOW for travel between 02/01/06 to 05/01/06
    age for carrier TRW is CHILD for passenger age betwen 2 and 12
    age for carrier JAR is CHILD for passenger age between 6 and 14
    .. and another price can be given with an entirely different set of rules
    reason is ask in this forum is I read a blog of someone who praises the set-based nature of the SQL language for developing exactly this kind of system, rather than trying to implement it on the client (for example using JRules)

    What version of Oracle are you on? 10g introduced a rules engine into the database (Oracle Rules Manager and/or Oracle Expression Filter) which would seem to be right up your alley.
    Justin

  • Syntax errors in Oracle Business Rules carrental ruleset

    Hi,
    I'm using Oracle Business Rules Rule Author on Windows, version 10.1.3.0.0.
    I'm working with the OTN carrental sample. If i load the supplied file-based repository CarRepository from the %HOWTO_HOME%/dict directory, navigate to the RL tab -> Generate RL-code and select the 'Check RL-Syntax' button I always get the same error message:
    Error:'5}' is undefined at line ... column ... in [DM or vehicleRent]
    If I navigate to 'Test Rulesets' i get the same error, no matter what testfunction i use with the vehicleRent ruleset.
    When i test the sample with the supplied java code i don't get any errors.
    However, if I follow the steps in chapter 2 (javaFact) or 4 (XMLFact) of the Business Rules user guide and setup everything from scratch for a filebased repository i get the same error at runtime.
    I based the filebased repository on the supplied emptyrepository file.
    Seems to make no difference whether I use a filebased or a webdav repository.
    any help on this would be appreciated.
    Rob
    Message was edited by:
    [email protected]

    There are two problems here. First, there is a bug that causes this error string to be displayed incorrectly when using the RuleAuthor in any browser language other than English. If you change the browser language to English, you should see:
    <p>
    A syntax error is found. <br>
    Error:'carrental.Driver' is undefined at line 4 column 14 in DM
    <p>
    The cause of this problem is that carrental.Driver class is not in the classpath for Rule Author. This isn't covered in the how-to. See section 3.10 in the Oracle® Business Rules User’s Guide (B15986-01) (available from here).
    <p>
    From this doc:
    <p>
    Create a rule set you want to test. If the data model includes any Java classes, the
    Java classes must be included in the OC4J classpath. The easiest way to do this is
    to put the JAR files in the following directory, then restart OC4J:
    $ORACLE_HOME/j2ee/home/applications/ruleauthor/lib
    <p>
    or add it as a shared library using EM (specific instructions follow in the doc) and then add that shared library to RuleAuthor.
    Message was edited by:
    philvarner

  • JHeadstart, Oracle Business Rules and BPEL Process Manager

    Dear JHeadstart Team,
    I have some questions regarding integration of JHeadstart and Oracle Business Rules and Oracle BPEL Process Manager. As a matter of fact I don't have any work expriences with these tools so my questions may not be good and precise.
    1- Using a business rule engine can dramatically increase speed of development and ease of maintenance.I had a very good exprience in using JHeadstart and Headstart in the past but I wanted to know if it is possible to use Oracle Business Rules in conjunction with the JHeadstart ? If so, What steps should be taken? Is there any known issue about this integration? Does Oracle Business Rules have any interference with JHeadstart or it is only used in model layer during insert,update,delete?
    2- Is it possible to develope a system based on oracle work flow engine (Oracle BPEL Process Manager) using JHeadstart ? If so, What steps should be taken and how the changes in the flow of work would by applyed in a system developed by JHeadstart. Is there any known issue about this integration?
    Any help,link to documents or general guidelines would be highly appreciated.
    Thanks in advance,
    Navid

    Couple of things I would like to add, are the following.
    In the context of an ADF application usage of Oracle Business Rules most likely is in the business logic layer, but mind that it does not need to be restricted to that.
    Oracle Business Rules takes so called 'facts' as input, evaluates some rules based on that and change those facts or return some result. That might be checking a business rule as defined in the JHeadstart Developers Guide. But it might also return some value that is used in a navigation rule.
    Think about a page flow where after page A normally page C is presentend, but in case of some situation (like a customer ordered something and you want to present some special offering based on that) you want page B presented in between (i.e. A -> B -> C). Oracle Rules could be used to determine this page flow. This would be an example of using it in the controller layer (probably in combination with using facts that come from the model layer).
    Another remark that I would like to make, is that in my opinion it does not make much sense to use Oracle Rules for business rules that logically more or less are part of your data model (like end date must be on or after begin date). You typically use Oracle Rules to implement business rules that are of a volatile nature, meaning that day-to-day business may require a change of the rules. One example is the navigation case that I mentioned before. Another (typical) example would be a rule that defines when a customer is a Gold customer.
    Jan Kettenis

  • Implementing roles and rules based authorisation with Azure AD

    Hi all,
    I would greatly appreciate some input on feasibility and patterns I should look at for a complex technical requirement that I am currently tasked with designing.
    We have a system that comprises a web and mobile app. In the past we have implemented session based authentication through ADAM and authorisation through custom business rules contained within the applications. The authentication mechanism is in the process
    of being migrated to Azure AD and authorisation is planned to be moved to Azure AD for our next release.
    Existing authorisation within our web application is already complex. We have users that belong to different groups with a range of permissions such as read, write or admin. Additionally each user is granted access to N customers and also N locations within
    each customer. We have a requirement that any number of combinations of customers and locations be supported. Users also need to have different permissions for each entity, i.e. read access to customer 1 location 2, write access to customer 4 and administer
    customer 7. Currently these privileges are maintained within a relational database and enforced as part of each PageLoad(). Essentially this is a combination of roles and rules based authorisation.
    We are struggling to represent this complex matrix structure within Azure AD and efficiently implement the authorisation decision in Azure AD. The driver for this technical requirement is to provide re-usability of the authorisation component to other (as
    yet unidentified) applications.
    Currently the best option we have come up with is implementing custom attributes for each class of permissions and storing within this 2048 bit field a bitmask that represents whether this permission is granted for a given location (which has a many to one
    relationship with customer).
    Any help or comment would be gratefully received,
    Phil

    Hi
    When "Advance routing" is used for Task assignment; the task service asserts the folllowing fact types : Task, PreviousOutcome and TaskAction to the rules engine. These facts gives all the reqd info about the task (like outcome of the participant, task stage .. etc)
    Now in the defined ruleset; we can have rules as per our requirement that can extract info from the asserted fact types and assign task to the required/next participant.
    Also note that we write the advance rules for exception cases only.
    For example; let's say all participants have 2 possible Outcomes [COMPLETE, RECHECK]. We have defined the ideal task routing flow as :
    Participant A -> Participant B -> Participant C. This is the flow when all participant selects "COMPLETE"
    Now suppose B selects outcome as "RECHECK" then the task shld move back to A. So for this case only we need to write a advance rule.
    Pls refer to the code sample at : http://download.oracle.com/technology/sample_code/hwf/workflow-106-IterativeDesign.zip
    Also dev guide : refer to section 28.3.7.2 http://download.oracle.com/docs/cd/E14571_01/integration.1111/e10224/bp_hwfmodel.htm#BABBFEJJ
    Thanks
    Edited by: Kania on May 19, 2010 2:41 AM

  • Rules based ATP not working

    Hi Experts,
    We are facing couple of issues with Rules based ATP . The scenario is we are using only location based  substitution
    1) We are creating an order for a material in ECC . This material is GATP relevant & the settings are made for rules based ( if no stock available at Plant 1 it would check for stock  at plant 2 and confirm the requested quantity if available )   , ATP check is happening after creation of order for plant1  , but it is not checking for quantity at plant 2  eventhough quantity is available at Plant 2 .
    I am checking the rules, it says no rule was found ,it is not possible to dispaly the rules , But for the sameif i am doing a ATP simulation in APO , it is working fine , the susbstitutions are happening & confirmations are being done.
    2) IS it possible to use both checking horizon & rules based ATP ? The situation is if we use Checking horizon  in check control , any SO will get confirmed based on checking horizon , if no receipts or stock is available before the CH . If the rules based ATP is present along with CH  for plants 1 & 2, the system is still confirming the quantity at the CH on Plant1 , even though there is enough quantity to be confirmed at Plant 2.
    Thanks for your help
    Regards
    Surendra

    The first issue  is solved . There was discrepancy in the data format between APO & ECC . The data when transferred to APO from ECC has been converted to a  format  which APO uses & when a SO is created in ECC the data that was entered in the SO is not being recognised by APO  so the error .
    Regards
    Surendra

Maybe you are looking for

  • Mac Pro 5,1 mid 2010 motherboard memory module pins damaged

    Hi everyone, This morning, after another computer crash I've decided to get rid of the dust inside of the tower. When I put back the bottom, memory bodule I've noticed that it wasn't going in very smoothly - to realise that I've damanged some pins co

  • JSP very slow

    hi there, I was just wondering on this. I set up tomcat and it is running on a 200Mhz machine with only 64mb of ram, running apache 9.0 (which is a little ram hungry!) it is running painfully slow, just wondering what the key factor is with jsp is it

  • Photoshop Touch and Cloud

    i just purchased the Adobe Photoshop Touch.  It says it comes with a free Creative Cloud 2GB account.  I don't know how to activate this, and there doesn't apear to an option inside the app.  Any ideas?

  • Oracle Tools - Oracle SQL Work Sheet

    Hi; I was wondering if anyone knew where I could get a copy of oracle sql work sheet. I saw someone use it. It sort of looks like what sqlplus would be like if it was nice :) I tried looking in products and downloads and I just couldnt find it null

  • Making "bootable" disk

    Norton's Disk Utility (V8.x) has OS9 and OsX boot images on the disk to boot into either system for their respective disk utilities. I would like make a "backup" copy of the OS9 version to a separate disk to keep with my OS9 software collection. I ha