Sequence on Oracle Database column

Hi All,
In my scenario I have to insert data/records into a Oracle Database.The Database table has primary key with Sequence(sequence will generate next unique value for the new record to be inserted). So how can I insert the records into that table. I have created JDBC receiver message type for that particular table.
Please let me know the possible ways.
Thanks
Praveen Kumar

Using Stored Proecdure is one option.Write a stored procedure that takes the rest of the column values as inputs and then uses the sequencne plus these values to insert data into the datbase.
Can you provide an example of how the insert query with the Call to the Sequence looks so that a standard insert option can also be looked into?
Regards
Bhavesh

Similar Messages

  • Oracle Database Columns to PDF

    Hi
      I would like to select some columns from the oracle data base using the select statement and upload into the pdf file. But in Oracle database my columns name  are like SALES_FORECAST,FORECAST_ACCURACY ,....... I dont want use the same names but i would like to give the descriptions like Sales Forecast, Forecast Accuracy,.....
    Where can I give these description for the columns .
    My BLT is like this 1.  PDF actions
                                2. SQL Query
                                3.PDF Table.
    Thanks
    Madhu

    Hi Madhu,
    if you want to use spaces for your PDF table columns, you can use the following method.
    In your BLS, write a MII query to retrieve the values from your DB. Create a MII XML output document with all columns you want to use in your PDF. Here you can use spaces in your columns names that will be displayed in the PDF table.
    Then use a repeater action to run through all output rows of your query. Use a "Row" action from the MII XML Output to add all the query rows to your XML Output document. Finally, use the XML Output document as source for your PDF table.
    This way you can use the column names you like.
    Michael

  • How to extract the contents of ZIP file stored in oracle database column ?

    The file is in ZIP format and it is stored in BLOB databse column . The contents of file is in binary format .
    How to extract those contents from file and thus creating the same ZIP file as output in ODI ?
    Thanks
    Arun

    Perhaps you can something like what is described in the support note "How To Load A PDF File Or Other Binary Files To a BLOB Column From ODI (Doc ID 1412753.1)"

  • How to Use Sequence created in Oracle Database in SQL Ldr Control file

    Hi,
    I created a sequence in oracle database. How will use the sequence in SQL loader Control file.
    Thanks in advance

    Hi,
    You might get a good response to your post in the forum dedicated to data movement , including SQL*Loader . You can find it here Export/Import/SQL Loader & External Tables
    Regards,

  • ORACLE 11g + PHP5 problem: "fetch out of sequence" on remote database link

    Hi!
    I have a new server with oracle 11g (11.1.0.7) database and apache/php5 (actual build) on linux.
    connection type is dedicated.
    when doing a connection to a remote AS/400 database I always get this error:
    "Warning: oci_fetch_array() http://function.oci-fetch-array: ORA-01002: fetch out of sequence ORA-02063: preceding line from..."
    when doing the same simple "select * from database link" at my old server with oracle 9i and apache/php5 no problem occurrs.
    this happens at AS/400 database link only. normal oracle database links work fine.
    Anyone an idea how to solve this problem or where the problem is????
    further info:
    when doing " select * from [ database link ] where rownum < 11 " it works, but when doing the query with more than 10 results I get the error. Any idea?
    bye,
    Oliver
    Edited by: user501548 on 10.10.2008 02:20

    well a fetch out of sequence usually indicates that a cursor has been closed before the process has finished fetching or some such thing.
    I'm not aware of there being a specific problem with the situation you outline, but maybe if you could provide all the connection setup and how you are trying to connect that may give a better idea.
    Also, you may be better asking on the General Database Discussions forum as this isn't really a SQL or PL/SQL problem

  • Encryptind and decrypting database column in oracle 10g

    hi guys...
    i am sai sandeep,i got a doubt how to encrypt a database column in oracle 10g..?
    i am using a table " emp_uid " ,and strtucture as follows,
    create table emp_uid(user_id varchar2(20),pwd varchar2(20));
    i need to encrypt a pwd column in the emp_uid.
    how to do it..?
    thanking u  advance.....

    Ok, here's a basic example...
    SQL> create table myusers (username varchar2(30), password varchar2(40));
    Table created.
    SQL> create or replace procedure add_user(username in varchar2
      2                                      ,password in varchar2) is
      3  begin
      4    insert into myusers (username, password)
      5      values (add_user.username
      6             ,dbms_crypto.hash(utl_raw.cast_to_raw(add_user.username||'!'||add_user.password)
      7                              ,dbms_crypto.hash_sh1)
      8             );
      9    commit;
    10  end;
    11  /
    Procedure created.
    SQL> exec add_user('Fred','Fr3ddy')
    PL/SQL procedure successfully completed.
    SQL> select * from myusers
      2  /
    USERNAME                       PASSWORD
    Fred                           E5C975DB4C0A1CF65683E36421A6305F09F4EA9A
    SQL> set serverout on;
    SQL> create or replace procedure loginuser(username in varchar2
      2                                       ,password in varchar2) is
      3    v_hash     varchar2(40);
      4    v_username varchar2(30);
      5  begin
      6    v_hash := dbms_crypto.hash(utl_raw.cast_to_raw(loginuser.username||'!'||loginuser.password), dbms_crypto.hash_sh1);
      7    select username
      8    into   v_username
      9    from   myusers
    10    where  username = loginuser.username
    11    and    password = v_hash;
    12    dbms_output.put_line('User: '||v_username||' logged in.');
    13  exception
    14    when no_data_found then
    15      dbms_output.put_line('Username/Password is not valid!');
    16  end;
    17  /
    Procedure created.
    SQL> exec loginuser('Fred','Freddy');
    Username/Password is not valid!
    PL/SQL procedure successfully completed.
    SQL> exec loginuser('Fred','Fr3ddy');
    User: Fred logged in.
    PL/SQL procedure successfully completed.
    Ideally you would do the hashing of the password inside the client side application so only the Hashed value goes over the network, but the above demonstrates the principle of using hashes to store passwords.  Because it's a one way algorithm, only a brute force method can be used to try and determine the original password.  There is no way to directly un-hash the value.  To check for a valid login, we don't retrieve the password and try to unhash it to compare against what the user has supplied, we actually take what the user has supplied and hash that in the same way and then compare the hashes.
    The point of including the username or some other data in the hashing process means that if two users have the same password, they will still have different hash values, so it won't be apparent they are the same passwords.  In my example, the point of putting another character between the concatenation of username and password is in case the username and password together would give the same result e.g.
    If we had one user "Fred" with password "Fr3ddy" then just concatenating the strings would give "FredFr3ddy".
    If we had another user "FredF" and he happened to choose a password "r3ddy" then just concatenating those would also give "FredFr3ddy"
    by introducing a known breaking character they would be different e.g. "Fred!Fr3ddy" and "FredF!r3ddy" and hence give different hash values.
    That's the basics of how passwords are stored for security.
    It would take a lot of processing power and brute force methods just to determine a single password for a single user when using hashing methods of security.
    With encryption, a brute force method could be used to find the decryption key, and once found that could be used to decrypt ALL the encyrpted data, hence it is less secure, especially when some clever person will no doubt have written the key down somewhere so they don't forget it.  With hashing there's no key to write down. 

  • Column 'Blocked' of view v$instance in Oracle Database 10g

    Hi All,
    What is the description of column "blocked" of view "v$instance" in Oracle Database 10g?
    I could not find the information in Oracle® Database Reference
    10g Release 2 (10.2)
    Thanks and Regards,
    Vaibhav

    SQL> describe v$instance
    Name Null? Type
    INSTANCE_NUMBER NUMBER
    INSTANCE_NAME VARCHAR2(16)
    HOST_NAME VARCHAR2(64)
    VERSION VARCHAR2(17)
    STARTUP_TIME DATE
    STATUS VARCHAR2(12)
    PARALLEL VARCHAR2(3)
    THREAD# NUMBER
    ARCHIVER VARCHAR2(7)
    LOG_SWITCH_WAIT VARCHAR2(15)
    LOGINS VARCHAR2(10)
    SHUTDOWN_PENDING VARCHAR2(3)
    DATABASE_STATUS VARCHAR2(17)
    INSTANCE_ROLE VARCHAR2(18)
    ACTIVE_STATE VARCHAR2(9)
    BLOCKED VARCHAR2(3)
    SQL> select version from v$instance;
    VERSION
    10.2.0.2.0

  • (Error due to database column of type Number)oracle.jbo.PiggybackException: JBO-28300

    Hi,
    I have deployed a BC4J component as an EJB on OC4J using JDeveloper. The database column of the table is of type Number, because of which I am encountering the eroor below. The application works fine if the database type is varchar or something else.
    I even tried changing the attribute of entity object to an integer, but this doesn't work.
    below is the error:
    oracle.jbo.PiggybackException: JBO-28300: Piggyback read error
    void oracle.jbo.JboException.<init>(java.lang.String)
    void oracle.jbo.PiggybackException.<init>(java.lang.String)
    void oracle.jbo.common.PiggybackInput.<init>(oracle.jbo.common.ObjectMarshaller, byte[])
    void oracle.jbo.client.remote.ApplicationModuleImpl.processPiggyback(byte[])
    void oracle.jbo.client.remote.ApplicationModuleImpl.executeQuery(int, boolean)
    void oracle.jbo.client.remote.RowSetImpl.executeQuery()
    void oracle.jbo.client.remote.ViewUsageImpl.executeQuery()
    void oracle.jbo.uicli.binding.JUIteratorBinding.executeQueryIfNeeded()
    void oracle.jbo.uicli.binding.JUFormBinding.executeIfNeeded()
    void oracle.jbo.uicli.jui.JUPanelBinding.executeIfNeeded()
    void fast.track.LYPanelUsermasterView.<init>(boolean)
    void fast.track.LYPanelUsermasterView.<init>()
    void fast.track.AppletUsermasterView.init()
    void fast.track.AppletUsermasterView.main(java.lang.String[])
    ## Detail 0 ##
    java.io.InvalidClassException: oracle.jbo.domain.Number; Local class not compatible: stream classdesc serialVersionUID=-7730629917230930297 local class serialVersionUID=-6507359405709672486
    void java.io.ObjectStreamClass.validateLocalClass(java.lang.Class)
    void java.io.ObjectStreamClass.setClass(java.lang.Class)
    java.io.ObjectStreamClass java.io.ObjectInputStream.inputClassDescriptor()
    java.lang.Object java.io.ObjectInputStream.readObject(boolean)
    java.lang.Object java.io.ObjectInputStream.readObject()
    int java.io.ObjectInputStream.inputObject(boolean)
    java.lang.Object java.io.ObjectInputStream.readObject(boolean)
    java.lang.Object java.io.ObjectInputStream.readObject()
    void oracle.jbo.common.PiggybackRowEntry.readObject(java.io.ObjectInputStream)
    java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[])
    boolean java.io.ObjectInputStream.invokeObjectReader(java.lang.Object)
    int java.io.ObjectInputStream.inputObject(boolean)
    java.lang.Object java.io.ObjectInputStream.readObject(boolean)
    java.lang.Object java.io.ObjectInputStream.readObject()
    void oracle.jbo.common.PiggybackInput.<init>(oracle.jbo.common.ObjectMarshaller, byte[])
    void oracle.jbo.client.remote.ApplicationModuleImpl.processPiggyback(byte[])
    void oracle.jbo.client.remote.ApplicationModuleImpl.executeQuery(int, boolean)
    void oracle.jbo.client.remote.RowSetImpl.executeQuery()
    void oracle.jbo.client.remote.ViewUsageImpl.executeQuery()
    void oracle.jbo.uicli.binding.JUIteratorBinding.executeQueryIfNeeded()
    void oracle.jbo.uicli.binding.JUFormBinding.executeIfNeeded()
    void oracle.jbo.uicli.jui.JUPanelBinding.executeIfNeeded()
    void fast.track.LYPanelUsermasterView.<init>(boolean)
    void fast.track.LYPanelUsermasterView.<init>()
    void fast.track.AppletUsermasterView.init()
    void fast.track.AppletUsermasterView.main(java.lang.String[])
    Please help me out
    Thanks in advance
    null

    Hi Raman,
    This error is normally occured when there is a attribute mismatch.When you added new field in OAF page, associate this field to the new view attribute of the extended VO. It is always recommended to add this new attribute at the end
    Thanks
    Sandeep

  • Two suggestions regarding table columns in the Oracle database

    Oracle,
    I have two suggestions to make.
    First, it would be of great value to be able to add a new column at an arbitrary position in a table and not simply add it to the end of the column list. Quite frequently we have to drop and recreate tables in order to accomplish this.
    Second, we often add 4 columns to the end of every table's column list (and accompanying triggers in order to keep them updated) which would seem suitable as Oracle pseudo-columns (in the same fashion as ROWID, etc.) These 4 columns would be:
    - Row created date
    - Row created by Oracle user
    - Row updated date
    - Row updated by Oracle user
    Regards,
    Dan D'Andrea
    [email protected]

    Dan,
    I don't work for Oracle, but, just some thoughts/reactions to your ideas.
    I don't think inserting a column in any arbitrary position is feasible, because it doesn't scale. It would require a reorganization of every block in the table. One reasonable workaround is to add the columns at the end of the table, then create a view on top of the table that has the columns in the desired order.
    As to the second suggestion, yes, we do something similar, add the same 4 columns to every table. I think the reason that Oracle doesn't support these types of pseudocolummns, is the overhead this would incur. Not only in terms of the extra resources, to maintain the data, but also storage overhead.
    So, just my unofficial opinion, but, I don't see how either of those suggestions would make it.
    Also, FYI, if you want to officially enter an enhancement request, see Doc ID 214168.1 on MetaLink.
    Hope that helps,
    -Mark

  • How to get JDBC remarks column info oracle database

    How can i add a description to tables in oracle database which describes about the table and retrieve it from JDBC remarks column

    Perform the following ORACLE sql command:
    COMMENT ON TABLE  MyTable IS 'This table is cool'

  • Need to get sequence value in another column in oracle

    Hi ALL,
    I have sql query as below
    select header_id,order_number from oe_order_headers_all.
    and data it is displaying as
    heder_id     order_number
    111            500001
    121            500400
    I need to display  another field with some sequence value like as below
    id     heder_id     order_number
    1      111                    500001
    2      121                    500400
    so how to get sequence value in another column please help me on this.
    Thnaks

    You can just use ROWNUM Pseudocolumn
    select rownum id, header_id,order_number from oe_order_headers_all

  • Using AE(htmldb 2.0)  as for reporting tool for other oracle databases.

    Maybe I was mistaken, but when I first saw the HTMLDB demo's I saw this as a slick way to build a browser based reporting tool for the masses for quasi-ad-hoc reporting on some of our larger databases that currently have limited reporting capability, and also as a possible replacement for the many MSAccess applets we have.
    I just got 2.0 installed and working on a 9i database and went through the basic tutorials, but I can't find much info on how to connect to other oracle databases.
    Are my options as follows?:
    create dblinks from the local database that houses htmldb to all the other databases?
    or
    install htmldb schemas on each database I want to access from htmldb?
    or
    I'll keep looking, but if any of you have any pointers or know of a tutorial that explains the best way to do this it would be greatly appreciated!
    tia

    As for question 1, yep, that's what I mean. Example:
    In a schema in the App Express instance, create a user called "APP1_USER", and then
    create view app1_user.people as select * from people@link_user@remotedb
    As for the next question, using the built-in insert/update/delete processes will give you
    ORA-01461: can bind a LONG value only for insert into a LONG column
    among other errors. Apparently version 2.1 will fix this. See Cannot Update VARCHAR column in Remote DB
    We address this problem by creating pl/sql APIs for DML, and then writing our own insert/update processes. Slows us down a little, but even with that, App Express remains a productive choice for us.
    Another weird problem: auto-row fetch (built-in to HTML DB) doesn't work over db links when you have two columns for a primary key. Many ways around this, e.g. create sequence-populated primary key, create a view with single column that concatenates primary key column values (key1|key2)
    Hope this helps!
    -John

  • Oracle Database Mobile Server 11 sync

    Hi,
    I have two simple tables in the back-end oracle database in order to create a meeting-room android application with and embebbed SQLite database on the client devices. I have written all the functionality to register, authenticate, create a new appointent, show it, and delete it and it works fine on my smartphone, but I did all these steps against the local sqlite db.
    Now I would like to share the reserves info with all the clients by synchronization using Oracle Database Mobile Server 11.
    Tables:
    Employees(ID, username, password, firstname, lastname, phone, email)
    Reserves(ID, subject, firstname, lastname, start_date, end_date, meeting_room, alarm)
    I have configured all the publications required (app , item, users, grants...) with the Workbench tool, like i have read from the official documentation and i added the lines to invoke the sync functionality. My problem is that when i launch the first sync the sqlite database in created on the device but the few records on the back-end are not replicated in the sqlite db. ¿is this process automatic or have I to write some code to catch this info?
    Another problem is that the records of the sqlite database is neither replicated to the back-end database. I have to say that th sync process ends succesfully but I can see nothing on the in-queue and out-queue queues in the mobile manager console. So, what´s about this incomind and outcoming data? Th only thing i can see is a set of dirty records, these records are records on the back-end db, but I dont know what means...
    Could you help me please?
    Thank you very much.

    Hi
    Data Subsetting is to restrict the data each Client sees based on values you specify i.e.
    If you only wanted a Client to see data for a specific Dept you could specify the following in the Publication Item
    Select * from emp where DEPTNO = :DEPTNO
    You can define what DEPTNO should be for each Client in the Mobile Server
    So in your case if you want ALL Client to see ALL records for a Publication Item then you should not specify any Data Subsetting i.e.
    Select * from emp - This would retrieve all rows
    There is no specific need to use Sequences in your Application unless you want to. Obviously you must make sure that any new records created on the Client will not conflict with a record created on a different Client otherwise conflicts will occur after the data is synchronized with the server
    With regards to you actual issue can you confirm the following ( NO NOT CHANGE ANY VALUES )
    1. Check the table mobileadmin.applications in the Repository DB and confirm there is a row there for your Application and that the 'Publication' column contains the correct Publication you created in MDW.
    2. Check the Table C$ALL_CLIENT_ITEMS, this should contain one row for each Publication Item you created in MDW i.e.
    Select PUBLICATION_ITEM, DIRTY, CRR From C$ALL_CLIENT_ITEMS Where CLIENTID = '<Your Client Name>';
    regards
    Richard

  • Auto Increment ID Field Table in the Oracle Database (insert new record)

    I have been using the MySQL. And the ID field of the database table is AUTO INCREMENT. When I insert a new record into a database table, I can have a statement like:
       public void createThread( String receiver, String sender, String title,
                                 String lastPostMemberName, String threadTopic,
                                 String threadBody, Timestamp threadCreationDate,
                                 Timestamp threadLastPostDate, int threadType,
                                 int threadOption, int threadStatus, int threadViewCount,
                                 int threadReplyCount, int threadDuration )
                                 throws MessageDAOSysExceptionand I do not have to put the ID variable in the above method. The table will give the new record an ID number that is equivalent to the ID number of the last record plus one automatically.
    Now, I am inserting a new record into an Oracle database table. I am told that I cannot do what I am used to doing with the MySQL database.
    How do I revise the createThread method while I have no idea about what the next sequence number shall be?

    I am still very confused; in particular, the Java part. Let me try again.
    // This part is for the database table creation
    -- Component primary key sequence
    CREATE SEQUENCE dhsinfo_page_content_seq
        START WITH 0;
    -- Trigger for updating the Component primary key
    CREATE OR REPLACE TRIGGER DHSInfoPageContent_INSERT_TRIGGER
        BEFORE INSERT ON DHSInfoPageContent //DHSInfoPageContent is the table name
        FOR EACH ROW WHEN (new.ID IS NULL) // ID is the column name for auto increment
        BEGIN
            SELECT dhsinfo_page_content_seq.Nextval
            INTO :ID
            FROM DUAL;
        END;/I am uncertain what to do with my Java code. (I have been working with the MySQL. Changing to the Oracle makes me very confused.
       public void updateContent( int groupID, String pageName, int componentID,
                                  String content, Timestamp contentCreationDate )
                                   throws contentDAOSysException
       // The above Java statement does not have a value to insert into the ID column
       // in the DHSInfoPageContent table
          Connection conn = null;
          PreparedStatement stmt = null;
          // what to do with the INSERT INTO below.  Note the paramether ID.
          String insertSQL = "INSERT INTO DHSInfoPageContent( ID, GroupID, Name, ComponentID, Content, CreationDate ) VALUES (?, ?, ?, ?, ?, ?)";
          try
             conn = DBConnection.getDBConnection();
             stmt = conn.prepareStatement( insertSQL );
             stmt.setInt( 1, id ); // Is this Java statement redundant?
             stmt.setInt( 2, groupID );
             stmt.setString( 3, pageName );
             stmt.setInt( 4, componentID );
             stmt.setString( 5, content );
             stmt.setTimestamp( 6, contentCreationDate );
             stmt.executeUpdate();
           catch
           finally

  • How to compare two oracle database schemas

    hi all,
    i want to compare and find out differences between two oracle databases. The comparison should be made on between table definition,table data,primary and foreign keys, packages and functions.
    Is there any management console or tool embedded in the oracle enterprise manger?
    it is really appreciate if anyone can point me towards wright direction asap.

    Hi ,
    This script would help u a lot in comparing 2 schemas and generate a report on them.
    Script:
    This script will compare two Oracle schemas and generate a report of
    discrepencies and this script has been used against Oracle 7.3.4, 8.0.5,
    REM and 8.1.7 databases, but it should also work with other versions.
    REM
    REM Please note that the following schema object types and attributes are
    REM not compared by this script at this time:
    REM
    REM cluster definitions
    REM comments on tables and columns
    REM nesting, partition, IOT, and temporary attributes of tables
    REM snapshots/materialized views, logs, and refresh groups
    REM foreign function libraries
    REM object types
    REM operators
    REM indextypes
    REM dimensions
    REM auditing information
    REM new schema attributes added for Oracle 9i
    REM
    REM Version 02-04-2002
    REM
    PROMPT
    PROMPT Schema Comparison
    PROMPT =================
    PROMPT
    PROMPT Run this script while connected to one Oracle schema. Enter the Oracle
    PROMPT username, password, and SQL*Net / Net8 service name of a second schema.
    PROMPT This script will compare the two schemas and generate a report of
    PROMPT differences.
    PROMPT
    PROMPT A temporary database link and table will be created and dropped by
    PROMPT this script.
    PROMPT
    ACCEPT schema CHAR PROMPT "Enter username for remote schema: "
    ACCEPT passwd CHAR PROMPT "Enter password for remote schema: " HIDE
    ACCEPT tnssvc CHAR PROMPT "Enter SQL*Net / Net8 service for remote schema: "
    PROMPT
    ACCEPT report CHAR PROMPT "Enter filename for report output: "
    SET FEEDBACK OFF
    SET VERIFY OFF
    CREATE DATABASE LINK rem_schema CONNECT TO &schema IDENTIFIED BY &passwd
    USING '&tnssvc';
    SET TRIMSPOOL ON
    SPOOL &report
    SELECT SUBSTR (RPAD (TO_CHAR (SYSDATE, 'mm/dd/yyyy hh24:mi:ss'), 25), 1, 25)
    "REPORT DATE AND TIME"
    FROM SYS.dual;
    COL local_schema FORMAT a35 TRUNC HEADING "LOCAL SCHEMA"
    COL remote_schema FORMAT a35 TRUNC HEADING "REMOTE SCHEMA"
    SELECT USER || '@' || C.global_name local_schema,
    A.username || '@' || B.global_name remote_schema
    FROM user_users@rem_schema A, global_name@rem_schema B, global_name C
    WHERE ROWNUM = 1;
    SET PAGESIZE 9999
    SET LINESIZE 250
    SET FEEDBACK 1
    SET TERMOUT OFF
    PROMPT
    REM Object differences
    REM ==================
    COL object_name FORMAT a30
    PROMPT SUMMARY OF OBJECTS MISSING FROM LOCAL SCHEMA
    SELECT object_type, COUNT (*)
    FROM
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name)
    FROM user_objects@rem_schema
    MINUS
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name)
    FROM user_objects
    GROUP BY object_type
    ORDER BY object_type;
    PROMPT SUMMARY OF EXTRANEOUS OBJECTS IN LOCAL SCHEMA
    SELECT object_type, COUNT (*)
    FROM
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name)
    FROM user_objects
    WHERE object_type != 'DATABASE LINK'
    OR object_name NOT LIKE 'REM_SCHEMA.%'
    MINUS
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name)
    FROM user_objects@rem_schema
    GROUP BY object_type
    ORDER BY object_type;
    PROMPT OBJECTS MISSING FROM LOCAL SCHEMA
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name) object_name
    FROM user_objects@rem_schema
    MINUS
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name) object_name
    FROM user_objects
    ORDER BY object_type, object_name;
    PROMPT EXTRANEOUS OBJECTS IN LOCAL SCHEMA
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name) object_name
    FROM user_objects
    WHERE object_type != 'DATABASE LINK'
    OR object_name NOT LIKE 'REM_SCHEMA.%'
    MINUS
    SELECT object_type,
    DECODE (object_type,
    'INDEX', DECODE (SUBSTR (object_name, 1, 5),
    'SYS_C', 'SYS_C', object_name),
    'LOB', DECODE (SUBSTR (object_name, 1, 7),
    'SYS_LOB', 'SYS_LOB', object_name),
    object_name) object_name
    FROM user_objects@rem_schema
    ORDER BY object_type, object_name;
    PROMPT OBJECTS IN LOCAL SCHEMA THAT ARE NOT VALID
    SELECT object_name, object_type, status
    FROM user_objects
    WHERE status != 'VALID'
    ORDER BY object_name, object_type;
    REM Table differences
    REM =================
    PROMPT TABLE COLUMNS MISSING FROM ONE SCHEMA
    PROMPT (NOTE THAT THIS REPORT DOES NOT LIST DISCREPENCIES IN COLUMN ORDER)
    SELECT table_name, column_name, 'Local' "MISSING IN SCHEMA"
    FROM user_tab_columns@rem_schema
    WHERE table_name IN
    SELECT table_name
    FROM user_tables
    MINUS
    SELECT table_name, column_name, 'Local' "MISSING IN SCHEMA"
    FROM user_tab_columns
    UNION ALL
    SELECT table_name, column_name, 'Remote' "MISSING IN SCHEMA"
    FROM user_tab_columns
    WHERE table_name IN
    SELECT table_name
    FROM user_tables@rem_schema
    MINUS
    SELECT table_name, column_name, 'Remote' "MISSING IN SCHEMA"
    FROM user_tab_columns@rem_schema
    ORDER BY 1, 2;
    COL schema FORMAT a15
    COL nullable FORMAT a8
    COL data_type FORMAT a9
    COL data_length FORMAT 9999 HEADING LENGTH
    COL data_precision FORMAT 9999 HEADING PRECISION
    COL data_scale FORMAT 9999 HEADING SCALE
    COL default_length FORMAT 9999 HEADING LENGTH_OF_DEFAULT_VALUE
    PROMPT DATATYPE DISCREPENCIES FOR TABLE COLUMNS THAT EXIST IN BOTH SCHEMAS
    SELECT table_name, column_name, 'Remote' schema,
    nullable, data_type, data_length, data_precision, data_scale,
    default_length
    FROM user_tab_columns@rem_schema
    WHERE (table_name, column_name) IN
    SELECT table_name, column_name
    FROM user_tab_columns
    MINUS
    SELECT table_name, column_name, 'Remote' schema,
    nullable, data_type, data_length, data_precision, data_scale,
    default_length
    FROM user_tab_columns
    UNION ALL
    SELECT table_name, column_name, 'Local' schema,
    nullable, data_type, data_length, data_precision, data_scale,
    default_length
    FROM user_tab_columns
    WHERE (table_name, column_name) IN
    SELECT table_name, column_name
    FROM user_tab_columns@rem_schema
    MINUS
    SELECT table_name, column_name, 'Local' schema,
    nullable, data_type, data_length, data_precision, data_scale,
    default_length
    FROM user_tab_columns@rem_schema
    ORDER BY 1, 2, 3;
    REM Index differences
    REM =================
    COL column_position FORMAT 999 HEADING ORDER
    PROMPT INDEX DISCREPENCIES FOR INDEXES THAT EXIST IN BOTH SCHEMAS
    SELECT A.index_name, 'Remote' schema, A.uniqueness, A.table_name,
    B.column_name, B.column_position
    FROM user_indexes@rem_schema A, user_ind_columns@rem_schema B
    WHERE A.index_name IN
    SELECT index_name
    FROM user_indexes
    AND B.index_name = A.index_name
    AND B.table_name = A.table_name
    MINUS
    SELECT A.index_name, 'Remote' schema, A.uniqueness, A.table_name,
    B.column_name, B.column_position
    FROM user_indexes A, user_ind_columns B
    WHERE B.index_name = A.index_name
    AND B.table_name = A.table_name
    UNION ALL
    SELECT A.index_name, 'Local' schema, A.uniqueness, A.table_name,
    B.column_name, B.column_position
    FROM user_indexes A, user_ind_columns B
    WHERE A.index_name IN
    SELECT index_name
    FROM user_indexes@rem_schema
    AND B.index_name = A.index_name
    AND B.table_name = A.table_name
    MINUS
    SELECT A.index_name, 'Local' schema, A.uniqueness, A.table_name,
    B.column_name, B.column_position
    FROM user_indexes@rem_schema A, user_ind_columns@rem_schema B
    WHERE B.index_name = A.index_name
    AND B.table_name = A.table_name
    ORDER BY 1, 2, 6;
    REM Constraint differences
    REM ======================
    PROMPT CONSTRAINT DISCREPENCIES FOR TABLES THAT EXIST IN BOTH SCHEMAS
    SET FEEDBACK OFF
    CREATE TABLE temp_schema_compare
    database NUMBER(1),
    object_name VARCHAR2(30),
    object_text VARCHAR2(2000),
    hash_value NUMBER
    DECLARE
    CURSOR c1 IS
    SELECT constraint_name, search_condition
    FROM user_constraints
    WHERE search_condition IS NOT NULL;
    CURSOR c2 IS
    SELECT constraint_name, search_condition
    FROM user_constraints@rem_schema
    WHERE search_condition IS NOT NULL;
    v_constraint_name VARCHAR2(30);
    v_search_condition VARCHAR2(32767);
    BEGIN
    OPEN c1;
    LOOP
    FETCH c1 INTO v_constraint_name, v_search_condition;
    EXIT WHEN c1%NOTFOUND;
    v_search_condition := SUBSTR (v_search_condition, 1, 2000);
    INSERT INTO temp_schema_compare
    database, object_name, object_text
    VALUES
    1, v_constraint_name, v_search_condition
    END LOOP;
    CLOSE c1;
    OPEN c2;
    LOOP
    FETCH c2 INTO v_constraint_name, v_search_condition;
    EXIT WHEN c2%NOTFOUND;
    v_search_condition := SUBSTR (v_search_condition, 1, 2000);
    INSERT INTO temp_schema_compare
    database, object_name, object_text
    VALUES
    2, v_constraint_name, v_search_condition
    END LOOP;
    CLOSE c2;
    COMMIT;
    END;
    SET FEEDBACK 1
    SELECT REPLACE (TRANSLATE (A.constraint_name,'012345678','999999999'),
    '9', NULL) constraint_name,
    'Remote' schema, A.constraint_type, A.table_name,
    A.r_constraint_name, A.delete_rule, A.status, B.object_text
    FROM user_constraints@rem_schema A, temp_schema_compare B
    WHERE A.table_name IN
    SELECT table_name
    FROM user_tables
    AND B.database (+) = 2
    AND B.object_name (+) = A.constraint_name
    MINUS
    SELECT REPLACE (TRANSLATE (A.constraint_name,'012345678','999999999'),
    '9', NULL) constraint_name,
    'Remote' schema, A.constraint_type, A.table_name,
    A.r_constraint_name, A.delete_rule, A.status, B.object_text
    FROM user_constraints A, temp_schema_compare B
    WHERE B.database (+) = 1
    AND B.object_name (+) = A.constraint_name
    UNION ALL
    SELECT REPLACE (TRANSLATE (A.constraint_name,'012345678','999999999'),
    '9', NULL) constraint_name,
    'Local' schema, A.constraint_type, A.table_name,
    A.r_constraint_name, A.delete_rule, A.status, B.object_text
    FROM user_constraints A, temp_schema_compare B
    WHERE A.table_name IN
    SELECT table_name
    FROM user_tables@rem_schema
    AND B.database (+) = 1
    AND B.object_name (+) = A.constraint_name
    MINUS
    SELECT REPLACE (TRANSLATE (A.constraint_name,'012345678','999999999'),
    '9', NULL) constraint_name,
    'Local' schema, A.constraint_type, A.table_name,
    A.r_constraint_name, A.delete_rule, A.status, B.object_text
    FROM user_constraints@rem_schema A, temp_schema_compare B
    WHERE B.database (+) = 2
    AND B.object_name (+) = A.constraint_name
    ORDER BY 1, 4, 2;
    REM Database link differences
    REM =========================
    PROMPT DATABASE LINK DISCREPENCIES
    COL db_link FORMAT a40
    SELECT db_link, 'Remote' schema, username, host
    FROM user_db_links@rem_schema
    MINUS
    SELECT db_link, 'Remote' schema, username, host
    FROM user_db_links
    UNION ALL
    SELECT db_link, 'Local' schema, username, host
    FROM user_db_links
    WHERE db_link NOT LIKE 'REM_SCHEMA.%'
    MINUS
    SELECT db_link, 'Local' schema, username, host
    FROM user_db_links@rem_schema
    ORDER BY 1, 2;
    REM Sequence differences
    REM ====================
    PROMPT SEQUENCE DISCREPENCIES
    SELECT sequence_name, 'Remote' schema, min_value, max_value,
    increment_by, cycle_flag, order_flag, cache_size
    FROM user_sequences@rem_schema
    MINUS
    SELECT sequence_name, 'Remote' schema, min_value, max_value,
    increment_by, cycle_flag, order_flag, cache_size
    FROM user_sequences
    UNION ALL
    SELECT sequence_name, 'Local' schema, min_value, max_value,
    increment_by, cycle_flag, order_flag, cache_size
    FROM user_sequences
    MINUS
    SELECT sequence_name, 'Local' schema, min_value, max_value,
    increment_by, cycle_flag, order_flag, cache_size
    FROM user_sequences@rem_schema
    ORDER BY 1, 2;
    REM Private synonym differences
    REM ===========================
    PROMPT PRIVATE SYNONYM DISCREPENCIES
    SELECT synonym_name, 'Remote' schema, table_owner, table_name, db_link
    FROM user_synonyms@rem_schema
    MINUS
    SELECT synonym_name, 'Remote' schema, table_owner, table_name, db_link
    FROM user_synonyms
    UNION ALL
    SELECT synonym_name, 'Local' schema, table_owner, table_name, db_link
    FROM user_synonyms
    MINUS
    SELECT synonym_name, 'Local' schema, table_owner, table_name, db_link
    FROM user_synonyms@rem_schema
    ORDER BY 1, 2;
    REM PL/SQL differences
    REM ==================
    PROMPT SOURCE CODE DISCREPENCIES FOR PACKAGES, PROCEDURES, AND FUNCTIONS
    PROMPT THAT EXIST IN BOTH SCHEMAS
    SELECT name, type, COUNT (*) discrepencies
    FROM
    SELECT name, type, line, text
    FROM user_source@rem_schema
    WHERE (name, type) IN
    SELECT object_name, object_type
    FROM user_objects
    MINUS
    SELECT name, type, line, text
    FROM user_source
    UNION ALL
    SELECT name, type, line, text
    FROM user_source
    WHERE (name, type) IN
    SELECT object_name, object_type
    FROM user_objects@rem_schema
    MINUS
    SELECT name, type, line, text
    FROM user_source@rem_schema
    GROUP BY name, type
    ORDER BY name, type;
    PROMPT SOURCE CODE DISCREPENCIES FOR PACKAGES, PROCEDURES, AND FUNCTIONS
    PROMPT THAT EXIST IN BOTH SCHEMAS (CASE INSENSITIVE COMPARISON)
    SELECT name, type, COUNT (*) discrepencies
    FROM
    SELECT name, type, line, UPPER (text)
    FROM user_source@rem_schema
    WHERE (name, type) IN
    SELECT object_name, object_type
    FROM user_objects
    MINUS
    SELECT name, type, line, UPPER (text)
    FROM user_source
    UNION ALL
    SELECT name, type, line, UPPER (text)
    FROM user_source
    WHERE (name, type) IN
    SELECT object_name, object_type
    FROM user_objects@rem_schema
    MINUS
    SELECT name, type, line, UPPER (text)
    FROM user_source@rem_schema
    GROUP BY name, type
    ORDER BY name, type;
    REM Trigger differences
    REM ===================
    PROMPT TRIGGER DISCREPENCIES
    SET FEEDBACK OFF
    TRUNCATE TABLE temp_schema_compare;
    DECLARE
    CURSOR c1 IS
    SELECT trigger_name, trigger_body
    FROM user_triggers;
    CURSOR c2 IS
    SELECT trigger_name, trigger_body
    FROM user_triggers@rem_schema;
    v_trigger_name VARCHAR2(30);
    v_trigger_body VARCHAR2(32767);
    v_hash_value NUMBER;
    BEGIN
    OPEN c1;
    LOOP
    FETCH c1 INTO v_trigger_name, v_trigger_body;
    EXIT WHEN c1%NOTFOUND;
    v_trigger_body := REPLACE (v_trigger_body, ' ', NULL);
    v_trigger_body := REPLACE (v_trigger_body, CHR(9), NULL);
    v_trigger_body := REPLACE (v_trigger_body, CHR(10), NULL);
    v_trigger_body := REPLACE (v_trigger_body, CHR(13), NULL);
    v_trigger_body := UPPER (v_trigger_body);
    v_hash_value := dbms_utility.get_hash_value (v_trigger_body, 1, 65536);
    INSERT INTO temp_schema_compare (database, object_name, hash_value)
    VALUES (1, v_trigger_name, v_hash_value);
    END LOOP;
    CLOSE c1;
    OPEN c2;
    LOOP
    FETCH c2 INTO v_trigger_name, v_trigger_body;
    EXIT WHEN c2%NOTFOUND;
    v_trigger_body := REPLACE (v_trigger_body, ' ', NULL);
    v_trigger_body := REPLACE (v_trigger_body, CHR(9), NULL);
    v_trigger_body := REPLACE (v_trigger_body, CHR(10), NULL);
    v_trigger_body := REPLACE (v_trigger_body, CHR(13), NULL);
    v_trigger_body := UPPER (v_trigger_body);
    v_hash_value := dbms_utility.get_hash_value (v_trigger_body, 1, 65536);
    INSERT INTO temp_schema_compare (database, object_name, hash_value)
    VALUES (2, v_trigger_name, v_hash_value);
    END LOOP;
    CLOSE c2;
    END;
    SET FEEDBACK 1
    SELECT A.trigger_name, 'Local' schema, A.trigger_type,
    A.triggering_event, A.table_name, SUBSTR (A.referencing_names, 1, 30)
    referencing_names, SUBSTR (A.when_clause, 1, 30) when_clause,
    A.status, B.hash_value
    FROM user_triggers A, temp_schema_compare B
    WHERE B.object_name (+) = A.trigger_name
    AND B.database (+) = 1
    AND A.table_name IN
    SELECT table_name
    FROM user_tables@rem_schema
    MINUS
    SELECT A.trigger_name, 'Local' schema, A.trigger_type,
    A.triggering_event, A.table_name, SUBSTR (A.referencing_names, 1, 30)
    referencing_names, SUBSTR (A.when_clause, 1, 30) when_clause,
    A.status, B.hash_value
    FROM user_triggers@rem_schema A, temp_schema_compare B
    WHERE B.object_name (+) = A.trigger_name
    AND B.database (+) = 2
    UNION ALL
    SELECT A.trigger_name, 'Remote' schema, A.trigger_type,
    A.triggering_event, A.table_name, SUBSTR (A.referencing_names, 1, 30)
    referencing_names, SUBSTR (A.when_clause, 1, 30) when_clause,
    A.status, B.hash_value
    FROM user_triggers@rem_schema A, temp_schema_compare B
    WHERE B.object_name (+) = A.trigger_name
    AND B.database (+) = 2
    AND A.table_name IN
    SELECT table_name
    FROM user_tables
    MINUS
    SELECT A.trigger_name, 'Remote' schema, A.trigger_type,
    A.triggering_event, A.table_name, SUBSTR (A.referencing_names, 1, 30)
    referencing_names, SUBSTR (A.when_clause, 1, 30) when_clause,
    A.status, B.hash_value
    FROM user_triggers A, temp_schema_compare B
    WHERE B.object_name (+) = A.trigger_name
    AND B.database (+) = 1
    ORDER BY 1, 2, 5, 3;
    REM View differences
    REM ================
    PROMPT VIEW DISCREPENCIES
    SET FEEDBACK OFF
    TRUNCATE TABLE temp_schema_compare;
    DECLARE
    CURSOR c1 IS
    SELECT view_name, text
    FROM user_views;
    CURSOR c2 IS
    SELECT view_name, text
    FROM user_views@rem_schema;
    v_view_name VARCHAR2(30);
    v_text VARCHAR2(32767);
    v_hash_value NUMBER;
    BEGIN
    OPEN c1;
    LOOP
    FETCH c1 INTO v_view_name, v_text;
    EXIT WHEN c1%NOTFOUND;
    v_text := REPLACE (v_text, ' ', NULL);
    v_text := REPLACE (v_text, CHR(9), NULL);
    v_text := REPLACE (v_text, CHR(10), NULL);
    v_text := REPLACE (v_text, CHR(13), NULL);
    v_text := UPPER (v_text);
    v_hash_value := dbms_utility.get_hash_value (v_text, 1, 65536);
    INSERT INTO temp_schema_compare (database, object_name, hash_value)
    VALUES (1, v_view_name, v_hash_value);
    END LOOP;
    CLOSE c1;
    OPEN c2;
    LOOP
    FETCH c2 INTO v_view_name, v_text;
    EXIT WHEN c2%NOTFOUND;
    v_text := REPLACE (v_text, ' ', NULL);
    v_text := REPLACE (v_text, CHR(9), NULL);
    v_text := REPLACE (v_text, CHR(10), NULL);
    v_text := REPLACE (v_text, CHR(13), NULL);
    v_text := UPPER (v_text);
    v_hash_value := dbms_utility.get_hash_value (v_text, 1, 65536);
    INSERT INTO temp_schema_compare (database, object_name, hash_value)
    VALUES (2, v_view_name, v_hash_value);
    END LOOP;
    CLOSE c2;
    END;
    SET FEEDBACK 1
    SELECT A.view_name, 'Local' schema, B.hash_value
    FROM user_views A, temp_schema_compare B
    WHERE B.object_name (+) = A.view_name
    AND B.database (+) = 1
    AND A.view_name IN
    SELECT view_name
    FROM user_views@rem_schema
    MINUS
    SELECT A.view_name, 'Local' schema, B.hash_value
    FROM user_views@rem_schema A, temp_schema_compare B
    WHERE B.object_name (+) = A.view_name
    AND B.database (+) = 2
    UNION ALL
    SELECT A.view_name, 'Remote' schema, B.hash_value
    FROM user_views@rem_schema A, temp_schema_compare B
    WHERE B.object_name (+) = A.view_name
    AND B.database (+) = 2
    AND A.view_name IN
    SELECT view_name
    FROM user_views
    MINUS
    SELECT A.view_name, 'Remote' schema, B.hash_value
    FROM user_views A, temp_schema_compare B
    WHERE B.object_name (+) = A.view_name
    AND B.database (+) = 1
    ORDER BY 1, 2;
    REM Job queue differences
    REM =====================
    COL what FORMAT a30
    COL interval FORMAT a30
    PROMPT JOB QUEUE DISCREPENCIES
    SELECT what, interval, 'Remote' schema
    FROM user_jobs@rem_schema
    MINUS
    SELECT what, interval, 'Remote' schema
    FROM user_jobs
    UNION ALL
    SELECT what, interval, 'Local' schema
    FROM user_jobs
    MINUS
    SELECT what, interval, 'Local' schema
    FROM user_jobs@rem_schema
    ORDER BY 1, 2, 3;
    REM Privilege differences
    REM =====================
    PROMPT OBJECT-LEVEL GRANT DISCREPENCIES
    SELECT owner, table_name, 'Remote' schema, grantee, privilege, grantable
    FROM user_tab_privs@rem_schema
    WHERE (owner, table_name) IN
    SELECT owner, object_name
    FROM all_objects
    MINUS
    SELECT owner, table_name, 'Remote' schema, grantee, privilege, grantable
    FROM user_tab_privs
    UNION ALL
    SELECT owner, table_name, 'Local' schema, grantee, privilege, grantable
    FROM user_tab_privs
    WHERE (owner, table_name) IN
    SELECT owner, object_name
    FROM all_objects@rem_schema
    MINUS
    SELECT owner, table_name, 'Local' schema, grantee, privilege, grantable
    FROM user_tab_privs@rem_schema
    ORDER BY 1, 2, 3;
    PROMPT SYSTEM PRIVILEGE DISCREPENCIES
    SELECT privilege, 'Remote' schema, admin_option
    FROM user_sys_privs@rem_schema
    MINUS
    SELECT privilege, 'Remote' schema, admin_option
    FROM user_sys_privs
    UNION ALL
    SELECT privilege, 'Local' schema, admin_option
    FROM user_sys_privs
    MINUS
    SELECT privilege, 'Local' schema, admin_option
    FROM user_sys_privs@rem_schema
    ORDER BY 1, 2;
    PROMPT ROLE PRIVILEGE DISCREPENCIES
    SELECT granted_role, 'Remote' schema, admin_option, default_role, os_granted
    FROM user_role_privs@rem_schema
    MINUS
    SELECT granted_role, 'Remote' schema, admin_option, default_role, os_granted
    FROM user_role_privs
    UNION ALL
    SELECT granted_role, 'Local' schema, admin_option, default_role, os_granted
    FROM user_role_privs
    MINUS
    SELECT granted_role, 'Local' schema, admin_option, default_role, os_granted
    FROM user_role_privs@rem_schema
    ORDER BY 1, 2;
    SPOOL OFF
    SET TERMOUT ON
    PROMPT
    PROMPT Report output written to &report
    SET FEEDBACK OFF
    DROP TABLE temp_schema_compare;
    DROP DATABASE LINK rem_schema;
    SET FEEDBACK 6
    SET PAGESIZE 20
    SET LINESIZE 80

Maybe you are looking for