Conflicts resolution methods in Oracle Lite

Can anyone please provide the answers of the following questions?
1_What Methods are used for Conflict detection and resolution for concurrent updates by multiple clients in Oracle lite databases?
2_ Is there any method that extract semantic relation from the concurrent update transactions and create a global update schedule?
3_ Does oracle lite use conflict avoidance mechanism?
4_ What replication method is used by Oracle Lite Database?

In terms of conflict resolution with oracle lite, which end do you mean? conflict resolution in the client database (ie: oracle lite) or on the server side when processing client uploads (this is just a standard oracle database), also not sure what you are trying to achieve
*1_What Methods are used for Conflict detection and resolution for concurrent updates by multiple clients in Oracle lite databases?*
I assume in the following that you are talking about dealing with uploads
Depending on how the publication items are defined, the process is quite different.
a) fast refresh publication items
When the client synchronises, the upload data is uploaded as a packed binary file which is then unpacked and inserted into in queue tables in the mobileadmin repsitory (table names begin CFM$ followed by the publication item name). This is the only action that happens during the actual sync process.
A second and independent process, not linked to the actual synchronisation - the MGP process, runs on the mobile server, and this has three phases - apply, process logs and compose that run one after the other. You can set the MGP to only do the apply phase, or all three.
during the apply phase the data in the in queue tables for a particular user/transaction will be applied to the server database. Normally the MGP process is set to have three threads (this can be changed, but three is the default), and therefore three client uploads will be processed in parallel, but each of these threads is independant of the others and therefore should be seen as seperate transactions.
It should be noted that even if you have 50 or 100 users synchronising concurrently, only three upload sets will be processed at any one time, and almost certainly a period of time after the synchronisation has completed (may be many hours depending on the MGP cycle time)
As each of the apply threads is a seperate transaction, there is no concept of concurrency built in, and the only conflict resolution by default is based on the server wins/client wins setting of the publication item. where multiple users are updating the the same server record with 'client wins', the first user will update the data, and then the next user will update the data (just a repeat of the previous one). NOTE also that in the case of an update, ALL columns in the record are updated, there is no column level update.
There are customisation options available to provide finer grained control over the apply process, look at the PLSQL callback packages registered against each publication item for beforeapply, afterapply, beforetranapply and aftertranapply, Apply DML procedures against the publication items and also the CUSTOMIZE package at the MGP level
b) complete refresh publication items
where the publication as a whole has a mixture of fast and complete refresh publication items, these normally work in the same way as the fast refresh described above. Where however you just have complete refresh items the data MAY be written directly to the server table on upload
c) queue based publication items
These work in realtime, rather than with a delay for the MGP process to pick up the data.
When the user synchronises, the uploaded data is is written to the in queue tables in the same way, but when this is completed, a package (defined as part of the publication definition) is called, and the procedure upload_complete is run passing in the user and transaction identifiers. This package needs to be hand crafted, but you have full control over what and how all of the uploaded data is processed, but again this is a single transaction for that user. If you want to look at other sessions running, you need to find a way to implement this.
*2_ Is there any method that extract semantic relation from the concurrent update transactions and create a global update schedule?*
As noted above, the uploads may be processed in parallel, but they are seperate transactions, so no built ins
*3_ Does oracle lite use conflict avoidance mechanism?*
Only the basic oracle stuff, unless you use the customisation options to write your own
*4_ What replication method is used by Oracle Lite Database?*
The different types of publication items select data from the server database for download in different ways
a) fast refresh
change logging tables and triggers are created in the server database. These are scanned during the MGP process logs phase to determine what changes have happened since the last MGP compose, and what publication items they affect. The MGP compose then runs and this uses the same three threads to process the users in alphabetical order using the change keys to populate data in out queue tables (prefixed CMP$) in the repository. These have the PK values for the data, plus a transaction types (insert/update/delete). All the MGP process does is populate these out queue tables.
When the user synchronises, the data in the out queue tables is used as a key list to extract the data from the actual server tables into a packed binary file, and this is sent to the client.
b) complete refresh
there is no pre-preparation in this case, the data is streamed directly from the server database into the packed binary download file
c) queue based items
in real time when the user is synchronising after the apply has been done by the uploade_complete procedure, a second procedure download_init is called. Within this you have to code the data extract, and MUST populate tables (you also need to create them) CTM$<publication item name> these are effectively out queue tables, but contain all of the data, not just the PK values. At the end of the procedure, the data is streamed from these into the binary file for download.
Depending on the definition of your apublication, you could have one or more of the above types (VERY bad idea to mix queue based and fast refresh unless you are very sure about what you are doing) and therefore there may be a mix of different actions happening at different times
In conclusion i would say that try and send seperate data to clients so that they do not interfere with each other, and for inserts use uniqueue keys or sequences. If you MUST send the same data to different clients for update, then the queue based approach provides the best control, but as it is real time is not as scalable for large data sets.

Similar Messages

  • Help in config. of Site priority conflict resolution method

    Hi,
    I am testing Materialized View Replication (one master site and one MV site) .To resolve
    conflict I employ Site Priority Conflict Resolution Method but I am not able to insert or update the records. I am getting transaction error while I insert or update the records.
    This is my conflict resolution script i used Please help me out.
    CONNECT repuser/[email protected]
    BEGIN DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (gname => 'rep_repg');END;/
    BEGIN
    DBMS_REPCAT.ALTER_MASTER_REPOBJECT (sname => 'repuser',
    oname => 'Name',type => 'TABLE',ddl_text => 'ALTER TABLE repuser.Name ADD (site VARCHAR2(20))');END;/
    BEGIN
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (sname => 'repuser',oname => 'name',type => 'TABLE',
    min_communication => TRUE);END;/
    BEGIN
    DBMS_REPCAT.CREATE_MASTER_REPOBJECT (gname => 'rep_repg',
    type => 'TRIGGER',oname => 'insert_site',sname => 'repuser',ddl_text => 'CREATE TRIGGER repuser.insert_site
    BEFORE UPDATE ON repuser.name FOR EACH ROW
    BEGIN
    IF DBMS_REPUTIL.FROM_REMOTE = FALSE THEN
    SELECT global_name INTO :NEW.SITE FROM GLOBAL_NAME;
    END IF;END;');END;/
    BEGIN
    DBMS_REPCAT.MAKE_COLUMN_GROUP (sname => 'repuser',
    oname => 'Name',column_group => 'name_sitepriority_cg',
    list_of_column_names => 'S_NO,FIRSTNAME,LASTNAME,site');
    END;/
    BEGIN
    DBMS_REPCAT.DEFINE_SITE_PRIORITY (gname => 'rep_repg',
    name => 'name_sitepriority_pg');END;/
    BEGIN
    DBMS_REPCAT.ADD_SITE_PRIORITY_SITE (gname => 'rep_repg',
    name => 'name_sitepriority_pg',site => 'orcl.world',
    priority => 100);END;/
    BEGIN
    DBMS_REPCAT.ADD_SITE_PRIORITY_SITE (gname => 'rep_repg',
    name => 'name_sitepriority_pg',site => 'mvsite1.world',
    priority => 50);END;/
    BEGIN
    DBMS_REPCAT.ADD_UPDATE_RESOLUTION (sname => 'repuser',
    oname => 'Name',column_group => 'name_sitepriority_cg',
    sequence_no => 1,method => 'SITE PRIORITY',
    parameter_column_name => 'site',
    priority_group => 'name_sitepriority_pg');END;/
    BEGIN
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (sname => 'repuser',oname => 'Name',type => 'TABLE', min_communication => TRUE);END;/
    BEGIN
    DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
    gname => 'rep_repg');END;/

    Hi,
    I am testing Materialized View Replication (one master site and one MV site) .To resolve
    conflict I employ Site Priority Conflict Resolution Method but I am not able to insert or update the records. I am getting transaction error while I insert or update the records.
    This is my conflict resolution script i used Please help me out.
    CONNECT repuser/[email protected]
    BEGIN DBMS_REPCAT.SUSPEND_MASTER_ACTIVITY (gname => 'rep_repg');END;/
    BEGIN
    DBMS_REPCAT.ALTER_MASTER_REPOBJECT (sname => 'repuser',
    oname => 'Name',type => 'TABLE',ddl_text => 'ALTER TABLE repuser.Name ADD (site VARCHAR2(20))');END;/
    BEGIN
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (sname => 'repuser',oname => 'name',type => 'TABLE',
    min_communication => TRUE);END;/
    BEGIN
    DBMS_REPCAT.CREATE_MASTER_REPOBJECT (gname => 'rep_repg',
    type => 'TRIGGER',oname => 'insert_site',sname => 'repuser',ddl_text => 'CREATE TRIGGER repuser.insert_site
    BEFORE UPDATE ON repuser.name FOR EACH ROW
    BEGIN
    IF DBMS_REPUTIL.FROM_REMOTE = FALSE THEN
    SELECT global_name INTO :NEW.SITE FROM GLOBAL_NAME;
    END IF;END;');END;/
    BEGIN
    DBMS_REPCAT.MAKE_COLUMN_GROUP (sname => 'repuser',
    oname => 'Name',column_group => 'name_sitepriority_cg',
    list_of_column_names => 'S_NO,FIRSTNAME,LASTNAME,site');
    END;/
    BEGIN
    DBMS_REPCAT.DEFINE_SITE_PRIORITY (gname => 'rep_repg',
    name => 'name_sitepriority_pg');END;/
    BEGIN
    DBMS_REPCAT.ADD_SITE_PRIORITY_SITE (gname => 'rep_repg',
    name => 'name_sitepriority_pg',site => 'orcl.world',
    priority => 100);END;/
    BEGIN
    DBMS_REPCAT.ADD_SITE_PRIORITY_SITE (gname => 'rep_repg',
    name => 'name_sitepriority_pg',site => 'mvsite1.world',
    priority => 50);END;/
    BEGIN
    DBMS_REPCAT.ADD_UPDATE_RESOLUTION (sname => 'repuser',
    oname => 'Name',column_group => 'name_sitepriority_cg',
    sequence_no => 1,method => 'SITE PRIORITY',
    parameter_column_name => 'site',
    priority_group => 'name_sitepriority_pg');END;/
    BEGIN
    DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (sname => 'repuser',oname => 'Name',type => 'TABLE', min_communication => TRUE);END;/
    BEGIN
    DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
    gname => 'rep_repg');END;/

  • User-Defined Conflict Resolution

    Dear,
    I'm going to design User-Defined Conflict Resolution method. But reference site / documents is very few. It's difficult to find them.
    Have you ever designed that ?
    Do you have any sample scripts for that ?
    Thanks for advance.

    There is an example in the Replication Management API Reference Manual Appendix B. http://technet.oracle.com/doc/oracle8i_816/server.816/a76958/user_con.htm#133

  • Site Priority Conflict Resolution

    I'm using Oracle9i version 9.2.0.1.0 running in Windows Server 2003
    I am testing Materialized View Replication ( 1 Master site and multiple
    materialized view site) for my Advanced Replication setup. To resolve
    conflict I employ Site Priority Conflict Resolution Method.
    I successfully pushed data from mview site-1 to the master site.
    When I pushed data from mview site-2 to the master site with the same
    data previously pushed from mview site-1, unique constraint is violated
    hence a failure in replication. It seems my conflict resolution is not
    working. Can anybody help me resolve my problem?
    Arnel

    master group - MG_SRD_ALL
    exec dbms_repcat.define_site_priority('MG_SRD_ALL', 'SPS BERE');
    exec dbms_repcat.add_site_priority_site('MG_SRD_ALL', 'SPS BERE', 'GISSPCB1.WORLD', 100);
    exec dbms_repcat.add_site_priority_site('MG_SRD_ALL', 'SPS BERE', 'GISPSPE1.WORLD', 90);
    exec dbms_repcat.add_site_priority_site('MG_SRD_ALL', 'SPS BERE', 'GISPSJH1.WORLD', 80);
    exec dbms_repcat.add_site_priority_site('MG_SRD_ALL', 'SPS BERE', 'GISPSCK1.WORLD', 70);
    exec dbms_repcat.add_site_priority_site('MG_SRD_ALL', 'SPS BERE', 'GISPSST1.WORLD', 60);
    exec dbms_repcat.add_site_priority_site('MG_SRD_ALL', 'SPS BERE', 'GISPSPI1.WORLD', 50);
    exec dbms_repcat.add_site_priority_site('MG_SRD_ALL', 'SPS BERE', 'GISPSPT1.WORLD', 40);
    exec dbms_repcat.add_site_priority_site('MG_SRD_ALL', 'SPS BERE', 'GISPSCB1.WORLD', 30);
    exec dbms_repcat.add_site_priority_site('MG_SRD_ALL', 'SPS BERE', 'GISPSTA1.WORLD', 20);
    exec dbms_repcat.add_site_priority_site('MG_SRD_ALL', 'SPS BERE', 'GISHSCB1.WORLD', 10);
    create snapshot log on &datausr..LESPRUSEK with primary key;
    prompt Creating rep. object &datausr..LESPRUSEK in group MG_SRD_ALL
    begin
    dbms_repcat.create_master_repobject(
    gname => '"MG_SRD_ALL"',
    type => 'TABLE',
    oname => '"LESPRUSEK"',
    sname => '"&datausr"',
    use_existing_object => TRUE,
    copy_rows => TRUE);
    end;
    EXECUTE sys.DBMS_REPCAT.make_column_group( -
    sname => '&datausr', -
    oname => 'LESPRUSEK', -
    column_group => 'CG_LESPRUSEK', -
    LIST_OF_COLUMN_NAMES => ' -
    SEMOBJ_ID -
    ,MSLINK -
    ,MAPID -
    ,DATUM -
    ,DURCHID -
    ,K_EC -
    ,EC_OLD -
    ,TEU_ID -
    ,K_TYPPTE -
    ,NNUSEK_ID -
    ,NNKABEL_ID -
    ,USEKVVN_ID -
    ,USEKVN_ID -
    ,KABELVN_ID -
    ,DELKA -
    ,UD_PLOCHA -
    ,POZNAMKA -
    ,K_OJ_INFO -
    ,C_EVSTR -
    ,C_VP -
    ,K_ZAR -
    ,NAZEV_I -
    ,NAZEV_II -
    ,SITE_NAME -
    ,K_PRES_ZAK -
    ,AU_ID -
    begin
    dbms_repcat.add_update_resolution(
    sname => '&datausr',
    oname =>'LESPRUSEK',
    column_group => '"CG_LESPRUSEK"',
    sequence_no => 0 + 2,
    method => 'Site Priority',
    parameter_column_name => '"SITE_NAME"',
    priority_group => '"SPS BERE"');
    end;
    EXECUTE sys.DBMS_REPCAT.generate_replication_support( -
    sname => '&datausr', -
    oname => 'LESPRUSEK', -
    type => 'TABLE');
    column SITE_NAME - is filled by global_name by trigger
    CREATE OR REPLACE TRIGGER &&datausr..TQ_LESPRUSEK
    BEFORE INSERT OR UPDATE ON &&datausr..LESPRUSEK FOR EACH ROW
    BEGIN
    IF NOT (DBMS_SNAPSHOT.I_AM_A_REFRESH OR DBMS_REPUTIL.FROM_REMOTE) THEN
    :NEW.SITE_NAME := glname_pkg.global_name;
    END IF;
    END;
    show err

  • Oracle Lite - in line quiries

    9iLite 5.0.2.8
    Do in-line queries work?
    example
    select level, a.col_a, b.col_b
    from tab_A, (select col_b
    from tab_c
    where col_c = 1 ) b
    where a.col_D = 1
    start with a.col_a = 0
    connect by b.col_b = prior a.col_a
    We have more complex queries that work on an enterprise verison of the DB, but these sql statements all fail when executed on 9iLite.
    Assuimg their are limitations to the complexity of
    the sql that can run on 9iLite, is there a document
    which hi-lites these limitations and possible work-arounds. I have read the SQL Reference for 9iLite - it documents what syntax is allowed very well.
    I am suspecting that temporary objects in 9iLite sql may not be allowed.
    Thanks in advance for any input.

    The actual syntax is ...
    select level, cls.isActive, cls.application_class_id,
    menu.application_class_id_parent, menu.menu_order,
    menu.menu_id
    from application_class cls,
    ( select *
    from application_menu
    where menu_profile = 1 ) menu
    where menu.application_class_id (+) =
    cls.application_class_id
    and isActive = 1
    start with (cls.application_class_id = 0 or
    menu.application_class_id_parent is null )
    connect by menu.application_class_id_parent = prior
    cls.application_class_id
    and cls.application_class_id != 0
    The error from oLite is ...
    Exception:
    java.sql.SQLException: [POL-5185] can't establish a join with CONNECT BY
         at oracle.lite.poljdbc.LiteEmbPreparedStmt.jniPrepare(Native Method)
         at oracle.lite.poljdbc.LiteEmbPreparedStmt.prepare(Unknown Source)
         at oracle.lite.poljdbc.POLJDBCPreparedStatement.(Unknown Source)
         at oracle.lite.poljdbc.POLJDBCPreparedStatement.(Unknown Source)
         at oracle.lite.poljdbc.OraclePreparedStatement.(Unknown Source)
         at oracle.lite.poljdbc.POLJDBCConnection.prepareStatement(Unknown Source)
         at oracle.lite.web.JupConnection.prepareStatement(JupConnection.java:174)
         at hccadi_on._test._select._jspService(_select.java:70)
         at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)
         at oracle.lite.web.JupServlet.service(JupServlet.java:235)
         at oracle.lite.web.JspRunner.service(JspRunner.java:112)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at oracle.lite.web.JupServlet.service(JupServlet.java:235)
         at oracle.lite.web.MimeServletHandler.handle(MimeServletHandler.java:99)
         at oracle.lite.web.JupApplication.service(JupApplication.java:523)
         at oracle.lite.web.JupHandler.handle(JupHandler.java:102)
         at oracle.lite.web.HTTPServer.process(HTTPServer.java:309)
         at oracle.lite.web.HTTPServer.handleRequest(HTTPServer.java:162)
         at oracle.lite.web.JupServer.handle(JupServer.java:308)
         at oracle.lite.web.SocketListener.process(SocketListener.java:178)
         at oracle.lite.web.ClientListener.process(ClientListener.java:64)
         at oracle.lite.web.SocketListener$ReqHandler.run(SocketListener.java:232)
    This sql works on an EE version of the DB. I do agree that
    in-line queries work. I cut this sql up to be just an in-line query and it does work. The problem seems to be around the use of "connect by" with an in-line. I do know that "connect by" works.
    Thanks in advance for any input.

  • Oracle LIte Conflict data table details Needed

    Hai,
    I have a new requirement from client that we have to send mail to user all conflict information between oracle lite and main database after synchronisation. We have taken publication and conclict table details from mobileadmin.C$EQ and wants to know which database table should be used for taking field wise details.
    Regards, Palani.R.

    What do you mean by conflict?
    The publication items will by default have a conflict type of 'server wins' or 'client wins'. This comes into play where updates have happened on both the server and the client, and in these cases the rule will be followed, the data updated accordingly and nothing is stored.
    If there is an ERROR in the upload processing, then the entire transaction will be put into the error queue (C$EQ), which sounds like what you are looking at.
    C$EQ will have a record for each record in the upload transaction, but the first one to cause an error will have the message text as not null (there may be other errors behind this, but only the first one is updated).
    If what you are trying to do is send an email when a transaction errors, then i would suggest you
    select the user (clientid), transaction (tranid$$) and message_text (this is the actual error) from c$eq
    to get the related table then
    select pub.owner||'.'||pub.store
    from c$all_publications pub
    ,c$eq eq
    where pub.name=eq.publication
    This is the schema and object name of the server table the data is going to. The actual error queue table is
    select pub.owner||'.CEQ$'||pub.store
    from c$all_publications pub
    ,c$eq eq
    where pub.name=eq.publication
    ie: object name prefixed by CEQ$ sitting in the main schema
    If you want the actual column data, then just use all tab columns inside a bit of dynamic SQL

  • ORA-23460: missing value for column column name in resolution method

    Hi All,
    We have implemented bi-directional replication via oracle streams..Oracle 10g 10.2.0.4
    We are getting following error in conflict resolution .ORA-23460: missing value for column "ASSIGNED_APPL_USER_ID" in resolution method "<method>" for
    "TMADMIN"."PATIENT_VISITS"."REP_UPDATE" ORA-01403: no data found .
    Above column ASSIGNED_APPL_USER_ID is NULL column ,We are using MAXIMUM resolution method for update conflict handler .We tried many times on toad the same scenarios and working fine.
    We have set supplemental logging on primay and unique columns.
    I found many docs on internet and they all said add supplemental logging on all columns.
    We did set up like this ...:
    DECLARE
    COLS DBMS_UTILITY.NAME_ARRAY;
    BEGIN
    cols(1) := 'STUDY_ID';
    cols(2) := 'KENDLE_STUDY_SUB_ID';
    cols(3) := 'SITE_ID';
    cols(4) := 'PATIENT_ID';
    cols(5) := 'VISIT_NUMBER';
    cols(6) := 'VISIT_TYPE';
    cols(7) := 'VISIT_DATE';
    cols(8) := 'CRF_COLLECTION_DATE';
    cols(9) := 'DT_CREATED';
    cols(10) := 'DT_MODIFIED';
    cols(11) := 'MODIFIED_BY';
    cols(12) := 'MONITOR_VISIT_DATE';
    cols(13) := 'UNSCHEDULED_VISIT_REASON';
    cols(14) := 'LAST_SCHEDULED_VISIT_NUMBER';
    cols(15) := 'VISIT_DATE_IN_TRIALBASE';
    cols(16) := 'PROJECTED_VISIT_DATE';
    cols(17) := 'SEND_CERTIFIED_LETTER_YN';
    cols(18) := 'ASSIGNED_APPL_USER_ID';
    cols(19) := 'DATE_CERTIFIED_LETTER_SENT';
    cols(20) := 'DURATION_OF_CALL_IN_MINUTES';
    cols(21) := 'COMPLETED_APPL_USER_ID';
    cols(22) := 'CALL_STATUS';
    cols(23) := 'VISIT_HYPERLINK';
    cols(24) := 'NEXT_CALL_DATE';
    cols(25) := 'DT_PMNT_REQUESTED_TO_SPONSOR';
    cols(26) := 'VISIT_DATE_NAP_YN';
    cols(27) := 'MONITOR_VISIT_DATE_NAP_YN';
    cols(28) := 'CRF_COLLECTION_DATE_NAP_YN';
    cols(29) := 'IMPORTED_SUBJECT_VISIT_DATE';
    cols(30) := 'REMINDER_SENT_DATE';
    DBMS_APPLY_ADM.SET_UPDATE_CONFLICT_HANDLER(
    OBJECT_NAME =>'TMADMIN.PATIENT_VISITS',
    METHOD_NAME =>'MAXIMUM',
    RESOLUTION_COLUMN =>'DT_MODIFIED',
    COLUMN_LIST =>cols);
    END;
    DT_MODIFIED is our resolution columns......
    Any help would be appreciate...
    Thanks in advance.
    Thanks,
    Nick.

    You should post this question the Oracle Server forums.
    Good luck!
    Warm regards.
    ashok

  • How to query the conflict resolution actually implemente

    Hi all.
    Can anyone tell me an easy way to report the conflict resolution procedures that a replicated object has implemented?
    How do I know if a table has for example, site priority resolution and how it is done?
    In general, is there a script to report all the replication configuration being used?
    Thank you.

    Assuming you are referring to Streams, you can download a Streams health check script at My Oracle Support (be sure to get the correct version, they cover 10gR1, R2, 11gR1, and R2). The output of the script will detail all of your rules and rule sets, process names, users, and so on. If you are calling a procedure to deal with conflict resolution, the action on error should reflect your procedure name, as an example.
    If you are referring to GoldenGate, you can look at the appropriate parameter files (typically Replicat for conflict resolution purposes).
    In either case, there is no setting or parameter that tags one source as the primary (or not). That designation is from a coding perspective. This implies that you capture the source of a record so you can evaluate "if error (whatever it is), then use record from source A."

  • Additional query... on Oracle Lite

    Dear All,
    I have a few additional queries on the question I posted before
    ADditional queries :
    ==================
    1) What software does lie on the Windows CE platform and how do we install it, because if we install Oracle lite for handheld devices it installs it on the PC?
    2) How can the replication be done with the Polite.odb on windows CE device in the simplest possible way?
    3) If I want to connect to this polite.odb how can i do that from my PC?
    Previous question :
    ==================
    I am working on a prototype between Oracle Lite and Oralce 8i database. I have managed to install oracle lite on PC and also manage the replication between the Oracle database and Oracle Lite database. I can also connect to the Oracle Lite database (It is a ODB file) through SQL plus. But I am having a few problems :
    1) While connecting to Oracle Lite database I get a message
    "Server not available or version too low for this feature" without any oracle error number. The versions are as follows : Oracle Open Client Adapter for ODBC 6.0.5.3.0
    Oracle Lite ORDBMS 4.0.0.2.0
    Oracle8i Enterprise Edition Release 8.1.5.0.0 - Production
    With the Partitioning and Java options
    PL/SQL Release 8.1.5.0.0 - Production
    To connect to Oracle Lite database, your give the userid/password@odbc:<<oracle lite dbname>>
    What can be the possible reasons?
    2) I tried to create a database link between the Oracle Lite database and Oracle database and when I try to fire a select on a table in Oracle Lite database I get an error
    "ORA-06401: NETCMN: invalid driver designator"
    so how dow we create a database link between these 2 databases?
    Thanks in advance
    Please send your mails to [email protected] and/or [email protected]
    Regards
    Sohil
    null

    Hi Aman,
    I was going through Oracle® Database Concepts 11g Release 2, Chapter 12 Logical Storage Structures (link below):
    http://docs.oracle.com/cd/E11882_01/server.112/e25789/logical.htm#i19599
    *Automatic Segment Space Management*
    The ASSM method uses bitmaps to manage space. Bitmaps provide the following advantages:
    •Simplified administration
    ASSM avoids the need to manually determine correct settings for many storage parameters. Only one crucial SQL parameter controls space allocation: PCTFREE. This parameter specifies the percentage of space to be reserved in a block for future updates (see "Percentage of Free Space in Data Blocks").
    •Increased concurrency
    Multiple transactions can search separate lists of free data blocks, thereby reducing contention and waits. For many standard workloads, application performance with ASSM is better than the performance of a well-tuned application that uses MSSM.
    •Dynamic affinity of space to instances in an Oracle Real Application Clusters (Oracle RAC) environment
    ASSM is more efficient and is the default for permanent, locally managed tablespaces.Regards,
    Ankit Rathi

  • Oracle Lite 4.01 cannot work??

    I've installed Oracle lite 4.0.1 with JDK 1.1.8,but it seems cannot work.
    When i connect to my consolidator from my consolitor admin,it get conencted my my oracle 8i but with
    oca -30021 :error preparing/executing sql statement
    pol -8035:no such attribute or method
    Can somebody tell me y??
    Please help.

    You require olite40.jar
    Here is a page on how to connect Jdeveloper to Oracle Lite:
    http://www.rekounas.org/olite/2007/02/01/how-to-setup-jdeveloper-to-connect-oracle-lite/

  • Cancel long running statement in Oracle Lite (OLITE_10.3.0.3.0 olite40.jar)

    On JDBC statement, there is the method 'cancel' to instruct the database to cancel an executing statement. This works fine on Oracle server database, but not on Oracle lite database. The method call 'cancel' just blocks and the running statement is never interrupted.
    The example I tried is very simple. There is a thread started which executes a long running statement. I noticed, that when moving the cursor forward by calling rs.next(), it just blocks. That would be ok, if the statement could be canceled from within the main thread by stmt.cancel. But this call blocks as well with no implact on the running statement. Why is that? Do I miss something or is it not possible to cancel a long running statements in Oracle Lite?
    In the following my code snipped:
    public class CancelStatement {
         private static final String PATH_DB = "XX";
         private static final String PATH_LIB = "XX";
         private static final String CON_STRING = "jdbc:polite:whatever;DataDirectory=" + PATH_DB + ";Database=XX;IsolationLevel=Read Committed;Autocommit=Off;CursorType=Forward Only";
         private static final String USER = "XX";
         private static final String PASSWORD = "XX";
         public static void main(String args[]) throws Exception {
              System.setProperty("java.library.path", PATH_LIB);
              Class.forName("oracle.lite.poljdbc.POLJDBCDriver");
              Connection con = DriverManager.getConnection(CON_STRING, USER, PASSWORD);
              Statement stmt = con.createStatement();
              Thread thread = new Thread(new LongStatementRunnable(con, stmt));
              thread.start();
              Thread.sleep(3000);
              // stop long running statement
              System.out.println("cancel long running statement");
              stmt.cancel(); // XXX does not work, as call is blocked until out of memory
              System.out.println("statement canceled");
         private static class LongStatementRunnable implements Runnable {
              private Connection con;
              private Statement stmt;
              public LongStatementRunnable(Connection con, Statement stmt) {
                   this.con = con;
                   this.stmt = stmt;
              @Override
              public void run() {
                   try {
                        System.out.println("start long running statement...");
                        // execute long running statement
                        ResultSet rs = stmt.executeQuery("SELECT * FROM PERSON P1, PERSON P2");
                        while (rs.next()) { // here the execution gets blocked
                             System.out.println("row"); // is never entered
                        rs.close();
                        stmt.close();
                        con.close();
                        System.out.println("long running statement finished...");
                   } catch (Exception e) {
                        e.printStackTrace();
    }I would be very glad if you could help me.
    Thanks a lot
    Daniel
    Edited by: 861793 on 26.05.2011 14:29

    Unfortunately Oracle Lite doesn't have this option. You can call your statement from a second thread as you have done, but you won't be able to kill or cancel this operation. The only way to get fix this is by rebooting. You can use process explorer to find the dll process that is executing the SQL, but the tables will be locked and sync would be locked as well until the process is finished running in shared memory.

  • Data not arriving in oracle lite using qbased syncing

    Hi,
    I am currently having difficulty adding new publication Items to our current queue based syncing in Oracle lite.
    I have set up the Queue using : createQueuePublicationItem
    I have set up the Index using : createPublicationItemIndex
    I have added the publication item using : addPublicationItem(
    I have added the user to the new PI using the screen.  This I think should be everything.  Unfortunately what happens is that the data gets as far as the out queue tables ie mobileadmin.ctm$ppec_pi for my new PI of ppec_pi.  But when I go onto the olite database on the client device, the new table is created, but there is no data.
    Is there something I am missing,
    Thanks,
    Justin.

    I did redefine the table, so all columns that are part of PK index and used in my SQL statement are data type NUMBER.
    My unique index is (dc_nbr, company_nbr, offering_group_id, offering_id), the same columns are used in my WHERE clause.
    Still Oracle Lite always builds the large temporary table before it goes to this temp table and sequentially reads and returns first 19 records.
    Trace File:
    Tid=060c, Statement Text:select dc_nbr, company_nbr, offering_group_id, offering_id
    from uoc.ship_dc_offering
    where dc_nbr = 6
    and company_nbr = 1
    and offering_group_id = '00001'
    and offering_id > '100129'
    and rownum < 20
    Table Order: UOCDB.UOC.SHIP_DC_OFFERING
    Tid=060c, Compilation Time: 0 (mil. sec.)
         Temporary Table Created: POL_WS_1_1
         Table Name: UOC.SHIP_DC_OFFERING
         Access Method:
         Term[0], Index No: 903266475, IndexName: UOC.POL_SYS_CONS20030
         Table Name: POL_WS_1_1
         Access Method: Sequential
    Tid=060c, First Fetch Time: 2323 (mil. sec.)

  • New Platform in Oracle Lite - Custom Installation

    Hi all,
    I read from the Oracle Lite documentation that the Oracle Lite setup can be customized. For trial I was able to modify the ppc60.inf and push my custom cab file, create a custom directory, install a cab file.
    I would actually want to perform the same steps for my custom setup apart from using the same setup as I donot want to disturb that provided by Oracle Lite. I see from the documentation "5.2.2 Installing Standard SDK WinCE 5.0 CAB Files for Your Mobile Client" this can be achieved. I followed the steps in these.
    I created an ini file and registered it with the server repository running the dmloader. I have placed my cab files and the inf file in the appropriate mobile server installation folders. This is my ini file content.
    [PLATFORM]]
    Oracle MCP;US
    [PLATFORM.Oracle MCP;US]
    TYPE=WINCE_ARMV4I_US_OLITE_MCP
    INF=olite_mcp.inf
    BOOTSTRAP=DeviceInfo
    ATTRIBUTES=update=true&enabled=true&app_upgrade=true&dmc=auto
    I got the new platform in the setup screen as Oracle MCP in the US section. But when I click it in a Win32 machine I get an error as "Access Denied: Oracle MCP;US Resource no found: WINCE_ARMV4I_US_OLITE_MCP" and on a WinCE machine the page navigates to an error page showing all the platforms available. I am not sure of the folders to be created for placing the setup.exe are correct, how do we get the setup.exe for the for the custom installation and if there are any other extra steps to be done.
    If anyone has come across this, could you please help me out ? Thanks in advance
    Edited by: AravindSam on Jan 22, 2009 4:15 PM
    Edited by: AravindSam on Jan 22, 2009 4:16 PM

    The server side logs for the above logs
    log1: devmgr: decodeContext -> 0
    log1: devmgr: basic -> JACK
    log1: devmgr: x-omc-omac -> f2d1d54tRQQ4bCAuexgMZQ50fKA/WEWPB190DDOdRXYKHnEaPd1Jlw==::*
    log1: devmgr: deviceId -> 0
    log1: devmgr: userId -> JACK
    log1: devmgr: agent -> setup1981419478
    log1: devmgr: method
    log1: devmgr: decodeContext -> 0
    log1: devmgr: basic -> JACK
    log1: devmgr: x-omc-omac -> f2d1d54tRQQ4bCAuexgMZQ50fKA/WEWPB190DDOdRXYKHnEaPd1Jlw==::*
    log1: devmgr: deviceId -> 0
    log1: devmgr: userId -> JACK
    log1: devmgr: agent -> setup1981419478
    log1: devmgr: method -> GET
    log1: devmgr: hmac -> algorithm=SHA-1, username=JACK, mac=R+f6Hh6Hk0CDyEscGh/pibTRCfM=
    log1: devmgr: hmac-mac[0] -> JACK
    log1: devmgr: hmac-mac[2] -> SHA-1
    log1: devmgr: decodeContext -> 0
    log1: devmgr: basic -> JACK
    log1: devmgr: CTX1 -> QVRDaGtuc9x+X1ta2gI7xVVlLcQcl/L86NNREMzhj1y2Lbb/OAoxUF3ObTWlAJg8nbbfuPectDqAXucbWcdpTpsPf4CVubWGqYljOy8z/1M=
    log1: devmgr: decodeContext -> s0001000000001
    log1: devmgr: x-omc-omac -> f2d1dwUtRQSpbCAs6hgCZ59ycmuuHUsllnt6eqLyS7mbQ38LrF1Huw==:QVRDaGtuc9x+X1ta2gI7xVVlLcQcl/L86NNREMzhj1y2Lbb/OAoxUF3ObTWlAJg8nbbfuPectDqAXucbWcdpTpsPf4CVubWGqYljOy8z/1M=:
    log1: devmgr: deviceId -> 0
    log1: devmgr: userId -> JACK
    log1: devmgr: agent -> setup1981419478
    log1: devmgr: validate -> oracle.lite.resource.User@19c8b6f2
    log1: devmgr: method -> GET
    log1: devmgr: app name -> DMC
    log1: devmgr: file name -> zlibce.dll
    log1: devmgr: language -> US
    log1: devmgr: WINCE_ARMV4I_US_OLITE_60_5.2 -> zlibce.dll
    log1: devmgr: createFile -> wince/ppc60/armv4i/zlibce.dll
    log1: devmgr: decodeContext -> 0
    log1: devmgr: basic -> JACK
    log1: devmgr: CTX1 -> BRN0QGUb7qMqR8CNXpaU0mAODslHN6JXDDjfI8yM0Nvoev6xhiC4VAA502GpxpdOEwxZBQubyG+d6FL0G0toudoQCuknO9B112jToINvfIE=
    log1: devmgr: decodeContext -> s0001000000002
    log1: devmgr: x-omc-omac -> f2d1d+ItRQQAbCCmQxje7TbqrmgHrJcJP6Gm5As9lzsylKNTBW2bAg==:BRN0QGUb7qMqR8CNXpaU0mAODslHN6JXDDjfI8yM0Nvoev6xhiC4VAA502GpxpdOEwxZBQubyG+d6FL0G0toudoQCuknO9B112jToINvfIE=:
    log1: devmgr: deviceId -> 0
    log1: devmgr: userId -> JACK
    log1: devmgr: agent -> setup1981419478
    log1: devmgr: validate -> oracle.lite.resource.User@19c8b6f2
    log1: devmgr: method -> GET
    log1: devmgr: app name -> Oracle MCP;US
    log1: devmgr: file name -> Oracle MCP;US
    log1: devmgr: language -> US
    log1: devmgr: SQL -> SELECT DISTINCT A.ID,A.NAME,A.DIR,A.PLATFORM,A.VP,A.CLASSPATH,A.PAGE,A.ICON,A.MISC,A.DBUSER,A.DBPWD,A.MAX_CON,A.SHARE_CON,A.PUBLISH_TIME FROM APPLICATIONS A,APP_ROL_USR AE where A.ID=AE.APP_ID and AE.PRIVILEGE=1 and AE.USR_ID=?
    log1: devmgr: ID -> 103
    log1: devmgr: SQL -> SELECT DISTINCT A.ID,A.NAME,A.DIR,A.PLATFORM,A.VP,A.CLASSPATH,A.PAGE,A.ICON,A.MISC,A.DBUSER,A.DBPWD,A.MAX_CON,A.SHARE_CON,A.PUBLISH_TIME FROM APPLICATIONS A,APP_ROL_GRP AE where A.ID=AE.APP_ID and GRP_ID=?
    log1: devmgr: ID -> 1100
    log1: devmgr: SQL -> SELECT DISTINCT A.ID,A.NAME,A.DIR,A.PLATFORM,A.VP,A.CLASSPATH,A.PAGE,A.ICON,A.MISC,A.DBUSER,A.DBPWD,A.MAX_CON,A.SHARE_CON,A.PUBLISH_TIME FROM APPLICATIONS A,APP_ROL_GRP AE where A.ID=AE.APP_ID and GRP_ID=?
    log1: devmgr: ID -> 1104
    log1: devmgr: SQL -> SELECT DISTINCT A.ID,A.NAME,A.DIR,A.PLATFORM,A.VP,A.CLASSPATH,A.PAGE,A.ICON,A.MISC,A.DBUSER,A.DBPWD,A.MAX_CON,A.SHARE_CON,A.PUBLISH_TIME FROM APPLICATIONS A,APP_ROL_GRP AE where A.ID=AE.APP_ID and GRP_ID=?
    log1: devmgr: ID -> 1121
    log1: devmgr: apps -> {Sample1=oracle.lite.resource.Application@17079f, Install=oracle.lite.resource.Application@170f5e, Sample7=oracle.lite.resource.Application@1707a3, Sample6=oracle.lite.resource.Application@1707a2, OLTEST=oracle.lite.resource.Application@170b5f, Sample4=oracle.lite.resource.Application@1707a1, APPAPITEST=oracle.lite.resource.Application@170f28, Sample3=oracle.lite.resource.Application@1707a0}

  • Business conflict resolution in Streams

    Hi
    Suppose we have 2 or more instances of some Oracle-based ERP system, the first one located at headquaters, the second one and others - in the regional branches. We need to have bidirectional syncronization for some of the system's business entities. During syncronization we need to detect and resolve business conflicts, which are not defined as database constraints.
    For example:
    some Customer attibute's value can be replicated to the headquaters instance from the branch instance only when it's value in the branch instance is less then existing value in HQ instance
    I wonder is there any functionality in Streams, which can be used for such business conflicts detection and resolution (optionally with human intervention) ?

    10gR2 Docs:
    Conflict Detection in a Streams Environment
    An apply process detects update, uniqueness, delete, and foreign key conflicts as follows:
    An apply process detects an update conflict if there is any difference between the old values for a row in a row LCR and the current values of the same row at the destination database.
    An apply process detects a uniqueness conflict if a uniqueness constraint violation occurs when applying an LCR that contains an insert or update operation.
    An apply process detects a delete conflict if it cannot find a row when applying an LCR that contains an update or delete operation, because the primary key of the row does not exist.
    An apply process detects a foreign key conflict if a foreign key constraint violation occurs when applying an LCR.
    You can code you own conflict handler but you can not change conflict detection. I am not sure if you want to change conclict detection or conflict resolution.
    It is not a problem to create conflict resolition procedure.
    possible workaround for conflict detection:
    It is possible to use DML handler. You can code any bussiness logics to this handler( conflict handler as well).
    I have some experience with DML handlers. You need to use DML handlers very carefully because you will use DML handler for each LCR. Replication performance impact can be very significant.
    Good thing about DML handlers that you can execute LCRs in parallel (so many DML handlers will be executed in parallel).

  • Oracle Lite Performance

    I'm using Oracle Lite 10.3.0.1
    I have a database of 16 Még.
    When I synchronize with the force refresh option it take one hour for synchronization.
    Is it normal ?

    The time that it takes to do a sync, especially a new build/force refresh is mainly governed by a number of factors
    1) the performance of your snapshot queries for the publication items. For force refreshes, therese are executed directly rather then using the out queue tables
    2) the comms speed
    3) the storage media the database is being created on
    you can normally get some clue to where the bottleneck is by looking at the sync progress bars on the client
    for a force refresh/new build, the composing and sending bars should fill up quite quickly
    if the recieving bar takes a long time to complete then the problem is the snapshot performance or comms method (for 16 meg, my guess would be that is is the snapshots). run consperf on the publication items or you may get an idea by looking at the processing stats from the MGP process
    If the recieving is not too bad, but the processing phase is the long one, then i would guess that
    a) you are using a windows mobile device
    b) the database is being created on a storage card
    c) the storage card is very slow
    slow storage cards are a major problem for small devices, but are the default on installation of oracle lite. Try editing the odbc file in orace to point to main storage for both database locations (or take out the SD card and delete the odbc file) and then try a sync. If this is significantly faster (seen a difference between 5 minutes using main storage vs 2 hours for SD card), then the card is the problem

Maybe you are looking for

  • IPod not turning on and not being recognized by PC

    I have got a 2nd gen iPod nano 2gb, and have had it just over 2 weeks. I have used already and it had music on it. I attempt to use it in the morning and it wouldnt turn on. i connected it to my PC (Windows XP Pro) and it wouldnt recognize it. I have

  • Intel based iMac won't recogize external HD anymore

    I have a Seagate external fire wire HD that is no longer recognized by my iMac. It froze while trying to format it and I finally had to unplug it. Now it will not show up on my desktop or in Disk Utility. It does show up in system profiler as an unkn

  • Failed to Load database information - Crystal report with XML as datasource

    Hello Friends: I am getting the attached error when i try to load the Crystal Report with XML as data source. I have designed the crystal report with the sample XML provided with XSD schema (PFA I have attached the XML and XSD). It is working as expe

  • Diplay only z type payment terms

    Hi, I have a requirement saying that system should display only client based payment terms not all payment terms ( standard + client payment terms ) Any possibility of doing this, Your help will be highly appreciated.. Thanks Sankar

  • BOM changes for the FERTs during a month.

    Hi all , I have a requirement from customer BOM changes for the FERTs during a month. Can anyone help me out the following requirement that i.e. customer requires that we wants to see as output the following fields : 1. Material description. 2. FERT