ORA 7 & temp tables?

Used migration workbench to migrate an MSS database into ORA 8i and all is well after a bit of re-jiggering. Migration Workbench modified MSS temporary table references to ORA Global Temporary Tables.
May need to implement same database structure in ORA 7 for some customers. Does ORA 7 also support temporary tables? In the same manner as 8i? Can't find any reference to them in the ORA 7 docs.
Thanks

So I just create ordinary tables and flush them out manually in ORA 7 ?
If that is correst, any techniques you can suggest when doing a "DELETE FROM" on these working tables to eliminate filling up the transaction log when these tables may be quite big? Is TRUNCATE TABLE supported within the bounds of a transaction in a Trigger or Procedure in ORA 7?

Similar Messages

  • Mod_plsql: ORA-942 Execute(Temp BLOB) ORA-00942: table or view does not exi

    mod_plsql: ORA-942 Execute(Temp BLOB) ORA-00942: table or view does not exist
    This is the error I get in the Apache log. On the page:
    "The requested URL /pls/apex/wwv_flow.accept was not found on this server."
    I am sure this is just a configuration issue. I installed v1.6 with the http server off the companion cd with the db (10.2.0.1). After I had it working (did not test everything) I upgraded to 3.0.1.
    I get this message when I am trying to import an application that I just exported! I am testing this for pushing code up to our production environment.
    My dads.conf file looks like:
    Alias /i/ /oracle/product/apps/htmldb/images/
    AddType text/xml xbl
    AddType text/x-components htc
    <Location /pls/apex>
    SetHandler pls_handler
    Order deny,allow
    Allow from all
    AllowOverride None
    PlsqlDatabaseUsername APEX_PUBLIC_USER
    PlsqlDatabasePassword xxxxxx
    PlsqlDatabaseConnectString 192.168.2.195:1521:idpdev ServiceNameFormat
    PlsqlDefaultPage apex
    PlsqlDocumentTablename wwv_flow_file_object$
    PlsqlDocumentPath docs
    PlsqlDocumentProcedure wwv_flow_file_mgr.process_download
    PlsqlAuthenticationMode Basic
    PlsqlNLSLanguage AMERICAN_AMERICA.WE8ISO8859P1
    </Location>
    marvel.conf file is empty
    There is a log file for pl/sql.... it has the following text in it that seemed pertinent: Attempting to logon with '(unknown)'
    Also a log that says this and seems to have a "special character" in it that may be causing an issue:
    <1133864024 ms>6565646261636b206f6e a70726f6d707420202e2e2e646f6e65 a
    <1133864024 ms>-----------------------------2444716671664
    <1133864024 ms>^M
    <1133864024 ms>UploadBlobDoc: readahead 27 bytes into 82f5e5c
    <1133864024 ms>UploadBlobDoc : Inserting piece OCI_NEXT_PIECE
    <1133864024 ms>UploadBlobDoc:Attempt to write 2048 bytes(offset 249857)
    <1133864024 ms>UploadBlobDoc:OCILobWrite for 2048 bytes (offset 249857)
    <1133864024 ms>UploadBlobDoc: Read-Ahead buf 82f5e5c has 27 bytes
    <1133864024 ms>UploadBlobDoc : Inserting piece OCI_LAST_PIECE
    <1133864024 ms>UploadBlobDoc:Attempt to write 27 bytes(offset 251905)
    <1133864024 ms>UploadBlobDoc:OCILobWrite finished for 27 bytes
    <1133864024 ms>ORA-942 Execute(Temp BLOB) ORA-00942: table or view does not exist
    <1133864024 ms>Stale Connection due to Oracle error 942
    <1133864024 ms>/pls/apex/wwv_flow.accept HTTP-404 ORA-00942: table or view does not exist
    <1133864024 ms>(wpu.c,594) longjumping back to the beginning
    <1133864024 ms>(wpu.c,457) cleaning up before longjmp
    <1133864024 ms>(wpu.c,461) doing a rollback
    <1133864024 ms>(wpcs.c, 76) Executed 'rollback' (rc=0)
    <1133864024 ms>(wpcs.c, 76) Executed 'begin dbms_session.reset_package; end;' (rc=0)
    <1133864024 ms>(wpd.c,1816) Going to close cursor
    <1133864024 ms>Freed BLOB
    <1133864024 ms>DeinitCursor
    <1133864024 ms>(wpx.c,690) Shutdown has been called
    <1133864024 ms>(wpx.c,702) Going to logoff
    <1133864024 ms>Logoff: Closing connection due to stale connection
    <1133864034 ms>[ReqEndtime: 2/Oct/2007:15:38:11]
    <1133864034 ms>[ReqExecTime: 80 ms]
    I did go in and update the permissions to the wwv_flow_file_objects$ table to give PUBLIC full access to that table to see if that was the problem... it wasn't.
    Probably information overload, but just wanted to be thorough. Anyone have any ideas?

    I also have another issue... probably more of a clarification....
    I run the following to stop the process:
    "/oracle/product/apps/opmn/bin/opmnctl stopproc ias-component=HTTP_Server"
    then
    "/oracle/product/apps/opmn/bin/opmnctl startproc ias-component=HTTP_Server"
    But, at that point, it says that opmn is not running.
    So I try:
    "/oracle/product/apps/opmn/bin/opmnctl stopall"
    then
    "/oracle/product/apps/opmn/bin/opmnctl start"
    then
    "/oracle/product/apps/opmn/bin/opmnctl startproc ias-component=HTTP_Server" and it still says that opmn is not running.
    Once I start running the stops and starts, it will eventually start correctly.
    I think that I am trying the steps too fast and that I probably need to wait a bit between steps since that seems to work better that way.

  • Table or Object type - like #temp table in SQL Server

    Hi
    I need to create a temp table to hold certain data and then validate. What is the best way to do this oracle. Something similar to #temp tables in SQL Server.
    Thanks

    IN Oracle, you create the temporary table once, before you start your program. Then anyone can use that definition, but the system keeps the data isolated to eachr/session.
    The difference in using Oracle: all DDL, including creating temp tables, performs commits and aquires locks that you want to avoid. It creates unnecessary serialization, causes transactional consistency issues and puts Oracle's Read Consistent model at risk (of ORA-01555 errors).
    So, you (or the DBA) would "CREATE GLOBAL TEMPORARY TABLE ..." with the appropriate definition you want, and indicate whether you want the data deleted on commit, or on logoff.
    Then you write your procedure, similar to the way you would do it in SQL Server, but you would not bracket it with creating/dropping the temp table - no need.

  • Global Temp table with BLOB causing session crash

    Hi,
    i have a table as follows:
    create global temporary table spg_file_import (
    name varchar2 (128) constraint sfi_nam_ck not null,
    mime_type varchar2 (128),
    doc_size number,
    dad_charset varchar2 (128),
    last_updated date,
    content_type varchar2 (128),
    content long raw,
    blob_content blob
    on commit delete rows
    this is my 9ias 'document' table thats used to receive uploaded files which i modified to be global temporary.
    what i want to do is:
    a)upload a text file (xml)
    b) convert that file to clob
    c) store that file in new permanent table as clob
    d) commit (hence delete temp table rows as they are no longer necessary)
    to test it i have:
    CREATE OR REPLACE procedure daz_html
    as
    begin
    htp.p(' <FORM enctype="multipart/form-data" action="daz_fu" method="POST">');
    htp.p(' <p>');
    htp.p(' File to upload: <INPUT type="file" name="p_file_in"><br>');
    htp.p(' <p><INPUT type="submit">');
    htp.p(' </form>');
    htp.p('</body>');
    htp.p('</html>');
    end;
    CREATE OR REPLACE procedure daz_fu (
    p_file_in varchar2
    as
    -- BLOB Stream locator
    v_raw blob;
    v_clob clob;
    v_blob_length number;
    v_length number;
    v_buffer varchar2(32767);
    v_pos number := 1;
    begin
    -- Get xml document from transient 9iAs data store.
    select blob_content
    into v_raw
    from spg_file_import
    where name = p_file_in;
    -- create temp LOB
    dbms_lob.createtemporary(v_clob, false);
    -- get BLOB length
    v_blob_length := dbms_lob.getlength(v_raw);
    loop
    -- get length to read. this is set as a max length of 32767
    v_length := least((v_blob_length - (v_pos-1)),32767);
    -- assign BLOB to a varchar2 buffer in preparation to convert to CLOB
    v_buffer := utl_raw.cast_to_varchar2(dbms_lob.substr(v_raw, v_length, v_pos));
    -- now write out to the CLOB
    dbms_lob.writeappend(v_clob, v_length, v_buffer);
    -- increment our position.
    v_pos := v_pos + v_length;
    -- exit when we are done.
    exit when v_pos >= v_blob_length;
    end loop;
    commit;
    htp.p('commit done!');
    end;
    now if i upload a small text file (about 5kb) it works with no problem.
    however if I upload a large text file (say about 1Mb) it crashes oracle with:
    Fri, 26 Jul 2002 11:49:24 GMT
    ORA-03113: end-of-file on communication channel
    DAD name: spgd1
    PROCEDURE : daz_fu
    USER : spg
    URL : http://www.bracknell.bt.co.uk/pls/spgd1/daz_fu
    PARAMETERS :
    ============
    p_file_in:
    F22210/Document.txt
    this produces a large trc file.. the trace file indicates the crash occured on the commit; line
    Current RBA:[0x4eb0.117.10]
    *** 2002-07-26 12:35:11.857
    ksedmp: internal or fatal error
    ORA-00600: internal error code, arguments: [kcblibr_user_found], [4294967295], [2], [12583564], [65], [], [], []
    Current SQL statement for this session:
    declare
    rc__ number;
    begin
    owa.init_cgi_env(:n__,:nm__,:v__);
    htp.HTBUF_LEN := 255;
    null;
    daz_fu(p_ref_in=>:p_ref_in,p_type_in=>:p_type_in,p_file_in=>:p_file_in);
    if (wpg_docload.is_file_download) then
    rc__ := 1;
    wpg_docload.get_download_file(:doc_info);
    null;
    commit;
    else
    rc__ := 0; null;
    commit;
    owa.get_page(:data__,:ndata__);
    end if;
    :rc__ := rc__;
    end;
    ----- PL/SQL Call Stack -----
    object line object
    handle number name
    812b1998 42 procedure SPG.DAZ_FU
    819dff90 7 anonymous block
    ----- Call Stack Trace -----
    If i reaplce the temporary table with a non-temp table of the same structure i get no problems what-so-ever. Am I doing something that I shouldnt be with global temporary tables?
    Thanks.

    This is on Oracle 8.1.7.2

  • Use global temp table for DML error logging

    our database is 11.2.0.4 enterprise edition on solaris 10
    we are wondering if anyone has an opinion of or has done this before, to use a global temp table for DML error logging. We have a fairly busy transactional database with 2 hot tables for inserts. The regular error table created with dbms_errlog has caused many deadlocks which we don't quite understand yet. we have thought using global temp table for the purpose, and that seemed to work, but we can't read error from the GTT, the table is empty even reading from the same session as inserts. Does anyone have an idea why?
    Thanks

    The insert into the error logging table is done with a recursive transaction therefore it's private from your session which is doing the actual insert.
    Adapted from http://oracle-base.com/articles/10g/dml-error-logging-10gr2.php
    INSERT INTO dest
    SELECT *
    FROM  source
    LOG ERRORS INTO err$_dest ('INSERT') REJECT LIMIT UNLIMITED;
    99,998 rows inserted.
    select count(*) from dest;
      COUNT(*)
        99998
    SELECT *
    FROM  err$_dest
    WHERE  ora_err_tag$ = 'INSERT';
    1400    "ORA-01400: cannot insert NULL into ("E668983_DBA"."DEST"."CODE")"        I    INSERT    1000        Description for 1000
    1400    "ORA-01400: cannot insert NULL into ("E668983_DBA"."DEST"."CODE")"        I    INSERT    10000        Description for 10000
    1400    "ORA-01400: cannot insert NULL into ("E668983_DBA"."DEST"."CODE")"        I    INSERT    1000        Description for 1000
    1400    "ORA-01400: cannot insert NULL into ("E668983_DBA"."DEST"."CODE")"        I    INSERT    10000        Description for 10000
    rollback;
    select count(*) from dest;
      COUNT(*)
            0
    SELECT *
    FROM  err$_dest
    WHERE  ora_err_tag$ = 'INSERT';
    1400    "ORA-01400: cannot insert NULL into ("E668983_DBA"."DEST"."CODE")"        I    INSERT    1000        Description for 1000
    1400    "ORA-01400: cannot insert NULL into ("E668983_DBA"."DEST"."CODE")"        I    INSERT    10000        Description for 10000
    1400    "ORA-01400: cannot insert NULL into ("E668983_DBA"."DEST"."CODE")"        I    INSERT    1000        Description for 1000
    1400    "ORA-01400: cannot insert NULL into ("E668983_DBA"."DEST"."CODE")"        I    INSERT    10000        Description for 10000

  • Physical attributes for index on temp tables (using physical model)

    I need create index on temp tables.
    When I generate DDL, it includes physical attributes like ‘LOGGING NOCOMPRESS NOPARALLEL’.
    I get error "ORA – 14451 (unsupported feature w/temporary tables)"
    I’ve to use physical model in OSDM. How do I get rid of physical attributes in DDL for index?

    Hi,
    Thanks for reporting this problem.
    You can remove the LOGGING clause by opening the Properties dialog for the Index in the Physical model and setting its Logging property to the blank option.
    However it's not possible to suppress the NOCOMPRESS and NOPARALLEL at the moment.
    I've logged a bug on this.
    As a workaround, you could do a global edit on the DDL file to remove all instances of NOCOMPRESS and NOPARALLEL.
    David

  • Dropping Temp Tables

    We are currently converting our student information system from Sybase to Oracle. My task is to convert our existing sql scripts. A number of them use temp tables and I have successfully got them to run except that I cannot drop the tables at the end of the script because they are still in use *[Error Code: 14452, SQL State: 72000] ORA-14452: attempt to create, alter or drop an index on temporary table already in use*. For example:
    /* Oracle Version */
    -- Select Cactus ID ------------------------------------------------------------
    CREATE GLOBAL TEMPORARY TABLE tch1
    (name Varchar(45), tid Int, CactusID Varchar(12))
    ON COMMIT PRESERVE ROWS;
    INSERT INTO tch1
    SELECT
    t.lastfirst,
    t.id teacherid,
    c.value
    FROM
    teachers t
    INNER JOIN customvarchars c ON t.id = c.KeyNo
    AND fieldno = 148;
    -- Select Core Codes ---------------------------------------------------------------
    CREATE GLOBAL TEMPORARY TABLE crs1
    (name Varchar(45), cid Int, CactusCd Varchar(12))
    ON COMMIT PRESERVE ROWS;
    INSERT INTO crs1
    SELECT
    cs.course_name,
    cs.id courseid,
    c.value
    FROM
    Courses cs
    INNER JOIN customvarchars c ON cs.id = c.KeyNo
    AND fieldno = 146;
    -- Put it all together ---------------------------------------------------------
    SELECT
    t.lastfirst AS Teacher,
    ct.CactusID,
    s.schoolid AS Sch#,
    s.TermID,
    c.course_number AS Crs#,
    s.section_number AS Sec#,
    c.course_name AS Course,
    cr.CactusCd,
    COUNT(*) AS Enroll
    FROM
    cc
    INNER JOIN sections s ON cc.sectionid = s.id
    INNER JOIN courses c ON s.course_number = c.course_number
    LEFT JOIN crs1 cr ON c.id = cr.cid
    INNER JOIN teachers t ON s.teacher = t.id
    LEFT JOIN tch1 ct ON t.id = ct.tid
    WHERE s.schoolid NOT IN (701,711)
    GROUP BY
    s.schoolid,
    t.lastfirst,
    ct.CactusID,
    c.course_number,
    s.section_number,
    c.course_name,
    cr.CactusCd,
    s.TermID
    ORDER BY
    s.schoolid,
    t.lastfirst,
    ct.CactusID,
    c.course_number,
    s.section_number,
    c.course_name,
    cr.CactusCd,
    s.TermID;
    -- Drop Tables -----------------------
    DROP TABLE tch1;
    DROP TABLE crs1;
    I have an Oracle PL/SQL reference guide at hand, but I don't see any mention of dropping the tables when completed. I'm also curious if I'm using the terminator (;) correctly. MS SQL Server and Sybase did not require one.
    Thanks.

    Christopher Soza wrote:
    you need to issue a
    COMMIT;
    prior to issueing the drop table commands
    COMMIT will not help since GTT is ON COMMIT PRESERVE ROWS:
    Session 1:
    SQL> CREATE GLOBAL TEMPORARY TABLE tch1
      2  (name Varchar(45), tid Int, CactusID Varchar(12))
      3  ON COMMIT PRESERVE ROWS;
    Table created.
    SQL> insert into tch1 values('A',1,'B');
    1 row created.
    SQL> commit;
    Commit complete.
    SQL> Session 2:
    SQL> drop table tch1;
    drop table tch1
    ERROR at line 1:
    ORA-14452: attempt to create, alter or drop an index on temporary table already
    in use
    SQL> SY.

  • Temp tables left behind by SDO_PC_PKG methods?

    I have a bunch of MDPCE tables after playing with SDO_PC_PKG last week.
    Are these temp tables left behind by SDO_PC_PKG methods? Is it safe to drop them?
    What circumstances could have left them behind, and why were they committed when the call to the PL/SQL method crashed the client program? (copy/paste error in my OCI code).
    Thanks, --DD
    SQL> select table_name from user_tables;
    TABLE_NAME
    MDPCE_1_12565$$$
    MDPCP_1_12565$$$
    MDPCE_1_125BC$$$
    MDPCP_1_125BC$$$
    MDPCE_1_12653$$$
    MDPCP_1_12653$$$
    MDPCE_1_1266A$$$
    MDPCP_1_1266A$$$
    MDPCE_1_12681$$$
    MDPCP_1_12681$$$
    MDPCE_1_12698$$$
    MDPCP_1_12698$$$
    MDPCE_1_126AF$$$
    MDPCP_1_126AF$$$
    MDPCE_1_126C6$$$
    MDPCP_1_126C6$$$
    MDPCE_1_126DD$$$
    MDPCP_1_126DD$$$
    MDPCE_1_126F4$$$
    MDPCP_1_126F4$$$
    MDPCE_1_1270B$$$
    MDPCP_1_1270B$$$
    VSET_TAB
    VSET_TAB$BLK
    VSET_POINT_TAB
    MDRT_136E4$
    SQL> desc MDPCE_1_12565$$$
    Name                                            Null?    Type
    PTN_ID                                                   NUMBER
    MIN_D1                                                   NUMBER
    MAX_D1                                                   NUMBER
    MIN_D2                                                   NUMBER
    MAX_D2                                                   NUMBER
    MIN_D3                                                   NUMBER
    MAX_D3                                                   NUMBER
    SQL>

    I tried the test on 11.2.0.4.  On that release I get an error during a rename:
    ERROR at line 1:
    ORA-13199: Invalid Parameters for Partition_Table
    ORA-13199: Invalid Parameters for Partition_Table
    ORA-13249: Stmt-Execute Failure: RENAME "MDPCI_a_26062$$$" TO "M3_A_26062$$"
    ORA-29400: data cartridge error
    ORA-04043: object MDPCI_a_26062$$$ does not exist
    ORA-06512: at "MDSYS.PRVT_PC", line 3
    ORA-06512: at "MDSYS.PRVT_PC", line 157
    ORA-06512: at "MDSYS.SDO_PC_PKG", line 74
    ORA-06512: at line 17

  • Global temp table throwing error

    Hi,
    I am trying to create global temp table throwing error
    please help
    SQL> create global temporary table test_glb as ( select col1 from test1) on commit delete rows;
    create global temporary table test_glb as ( select col1 from test1) on commit delete rows
    ORA-00933: SQL command not properly ended
    Thanks
    Rangan S

    CREATE GLOBAL TEMPORARY TABLE test_glb ON COMMIT DELETE ROWS
    AS SELECT * FROM test1;btw I'm assuming you are just using the SELECT statement to copy the definition of test1. Since DDL statements commit, there will be no rows in test_glb after creating it.
    Edited by: William Robertson on Feb 23, 2009 7:31 AM

  • PL/SQL to create a temp table that will be dropped after session ends

    Is it possible in PL/SQL to create a temp table that will be dropped after the session ends? Please provide example if possible. I can create a global temp table in PL/SQL but I am not sure how (if possible) to have it 'drop' once the session ends.
    DB: 10g
    OS: Wiindoze 2003 Server
    :-)

    As others have mentioned (but probably not clearly explained), Oracle treats temporary tables differently to SQL Server.
    In SQL Server you create a temporary table and it gets dropped (automatically I assume, I dont do SQL Server) after the session finishes. This will obviously allow each session to "request" a temporary table to use, then use it, and not have to worry about cleaning up the database after the session has finished.
    Oracle takes a different approach...
    On the assumption that each session is likely to be creating a temporary table for the same purposes, with the same structure, Oracle let's you create a Global Temporary Table a.k.a. GTT (which you've already come across). You only have to create this table once and you leave it on the database. This then means that any code written to use that table doesn't have to be dynamic code and can be verified and checked at compile time, just like code written for any other table. The difference of a GTT from a regular table is that any data you put into that table can only be seen by that session and will not interfere with any data of other sessions and, when you either commit, or end the session (depending on the "on commit delete rows" or "on commit preserve rows" option used when creating the GTT), that data from your own session will automatically be removed and hence the table is cleaned up that way, whilst the actual table itself remains.
    Some people from SQL Server backgrounds try and create and drop tables dynamically in their PL/SQL code, but this leads to problems...
    SQL> ed
    Wrote file afiedt.buf
      1  begin
      2    execute immediate 'create table my_temp (x number)';
      3    insert into my_temp values (1);
      4    execute immediate 'drop table my_temp';
      5* end;
    SQL> /
      insert into my_temp values (1);
    ERROR at line 3:
    ORA-06550: line 3, column 15:
    PL/SQL: ORA-00942: table or view does not exist
    ORA-06550: line 3, column 3:
    PL/SQL: SQL Statement ignoredi.e. the code will not compile for direct DML statements trying to use that table.
    They then try and get around this issue by making their DML statements dynamic too...
    SQL> ed
    Wrote file afiedt.buf
      1  create or replace procedure my_proc is
      2  begin
      3    execute immediate 'create table my_temp (x number)';
      4    execute immediate 'insert into my_temp values (''A'')';
      5    execute immediate 'drop table my_temp';
      6* end;
    SQL> /
    Procedure created.... which looks great and it compiles ok... but... when they try and run it...
    SQL> exec my_proc;
    BEGIN my_proc; END;
    ERROR at line 1:
    ORA-01722: invalid number
    ORA-06512: at "SCOTT.MY_PROC", line 4
    ORA-06512: at line 1... oops the code has a bug in it. Our DML statement was invalid.
    This is really something that would have been caught at compile time, if the statement had been a direct DML statement rather than dynamic. And thus we see the problem with people trying to write all their code as dynamic SQL... it's more likely to contain bugs that won't be detected at compile time and only come to light at run time... sometimes only under certain conditions and sometimes once it's got into a production environment. Bad Idea!!!! ;)
    Far better to never create tables (or most other database objects) at run time. Just create them once as part of the database design/implementation and use them as required, allowing you to catch the most common coding errors up front before they get anywhere near a test environment or worse still, a production environment.

  • Multiple users accessing the same data in a global temp table

    I have a global temp table (GTT) defined with 'on commit preserve rows'. This table is accessed via a web page using ASP.NET. The application was designed so that every one that accessed the web page could only see their data in the GTT.
    We have just realized that the GTT doesn't appear to be empty as new web users use the application. I believe it has something to do with how ASP is connecting to the database. I only see one entry in the V$SESSION view even when multiple users are using the web page. I believe this single V$SESSION entry is causing only one GTT to be available at a time. Each user is inserting into / selecting out of the same GTT and their results are wrong.
    I'm the back end Oracle developer at this place and I'm having difficulty translating this issue to the front end ASP team. When this web page is accessed, I need it to start a new session, not reuse an existing session. I want to keep the same connection, but just start a new session... Now I'm losing it.. Like I said, I'm the back end guy and all this web/connection/pooling front end stuff is magic to me.
    The GTT isn't going to work unless we get new sessions. How do we do this?
    Thanks!

    DGS wrote:
    I have a global temp table (GTT) defined with 'on commit preserve rows'. This table is accessed via a web page using ASP.NET. The application was designed so that every one that accessed the web page could only see their data in the GTT.
    We have just realized that the GTT doesn't appear to be empty as new web users use the application. I believe it has something to do with how ASP is connecting to the database. I only see one entry in the V$SESSION view even when multiple users are using the web page. I believe this single V$SESSION entry is causing only one GTT to be available at a time. Each user is inserting into / selecting out of the same GTT and their results are wrong.
    I'm the back end Oracle developer at this place and I'm having difficulty translating this issue to the front end ASP team. When this web page is accessed, I need it to start a new session, not reuse an existing session. I want to keep the same connection, but just start a new session... Now I'm losing it.. Like I said, I'm the back end guy and all this web/connection/pooling front end stuff is magic to me.
    The GTT isn't going to work unless we get new sessions. How do we do this?
    Thanks!You may want to try changing your GTT to 'ON COMMIT DELETE ROWS' and have the .Net app use a transaction object.
    We had a similar problem and I found help in the following thread:
    Re: Global temp table problem w/ODP?
    All the best.

  • Temp Tables - Best Practice

    Hello,
    I have a customer who uses temp tables all over their application.
    This customer is a novice and the app has its roots in VB6. We are converting it to .net
    I would really like to know the best practice for using temp tables.
    I have seen code like this in the app.
    CR2.Database.Tables.Item(1).Location = "tempdb.dbo.[##Scott_xwPaySheetDtlForN]"
    That seems to work, though i do not know why the full tempdb.dbo.[## is required.
    However, when i use this in the new report I am doing I get runtime errors.
    i also tried this
    CR2.Database.Tables.Item(1).Location = "##Scott_xwPaySheetDtlForN"
    I did not get errors, but I was returned data i did not expect.
    Before i delve into different ways to do this, i could use some help with a good pattern to use.
    thanks

    Hi Scott,
    Are you using the RDC still? It's not clear but looks like it.
    We had an API that could piggy back the HDBC handle in the RDC ( craxdrt.dll ) but that API is no longer available in .NET. Also, the RDC is not supported in .NET since .NET uses the framework and RDC is COM.
    Work around is to copy the temp data into a data set and then set location to the data set. There is no way that I know of to get to the tempdb from .NET. Reason being is there is no CR API to set the owner of the table to the user, MS SQL Server locks the tempdb to that user has exclusinve rights on it.
    Thank you
    Don

  • Difference between Temp table and Variable table and which one is better performance wise?

    Hello,
    Anyone could you explain What is difference between Temp Table (#, ##) and Variable table (DECLARE @V TABLE (EMP_ID INT)) ?
    Which one is recommended to use for better performance?
    also Is it possible to create CLUSTER and NONCLUSTER Index on Variable table?
    In my case: 1-2 days transactional data are more than 3-4 Millions. I tried using both # and table variable and found table variable is faster.
    Is that Table variable using Memory or Disk space?
    Thanks Shiven:) If Answer is Helpful, Please Vote

    Check following link to see differences b/w TempTable & TableVariable: http://sqlwithmanoj.com/2010/05/15/temporary-tables-vs-table-variables/
    TempTables & TableVariables both use memory & tempDB in similar manner, check this blog post: http://sqlwithmanoj.com/2010/07/20/table-variables-are-not-stored-in-memory-but-in-tempdb/
    Performance wise if you are dealing with millions of records then TempTable is ideal, as you can create explicit indexes on top of them. But if there are less records then TableVariables are good suited.
    On Tables Variable explicit index are not allowed, if you define a PK column, then a Clustered Index will be created automatically.
    But it also depends upon specific scenarios you are dealing with , can you share it?
    ~manoj | email: http://scr.im/m22g
    http://sqlwithmanoj.wordpress.com
    MCCA 2011 | My FB Page

  • Benefit and limitation of temp table in sql server 2008

    I have a datagrid in front end of asp.net . when user select a row it shows another gridview (multiple row ) where user have to put some data. when user click CLOSE button  i have to keep all data of 2nd gridview in reference with 1st gridview row id. 
    Same process for each row of 1st gridview. If i will keep all the record in a datatable in view state and finally save the data in database table when final save is clicked then the process may be very slow due to large data in view state. So i think to store
    data in temp datable in database for each CLOSE click. For this porpose which temp table i should use
    1. Local temporary tables
    2. Global temporary tables
    3. Normal tables.
    Multiple user may do the same thing same time.  Please help me.
    Thanks

    >1. Local temporary tables
    >2. Global temporary tables
    >3. Normal tables.
    When used in stored procedures, local temporary tables (#table) are automatically multi-user.
    For global temp (##table) & normal tables, you need to develop your own mult-user logic.
    Kalman Toth Database & OLAP Architect
    SQL Server 2014 Design & Programming
    New Book / Kindle: Exam 70-461 Bootcamp: Querying Microsoft SQL Server 2012

  • PL/SQL: ORA-00942: table or view does not exist

    Hi
    i have logged into my schema and trying to access the database "DAD" which has the table name "SCHOOL"
    i wrote a function which should give me new_sno when i give it the old_sno
    and i have this errors , pls help
    CREATE OR REPLACE FUNCTION ORIG_SN(OSNO in Number,OTN in Number)
    RETURN Number IS
    NEW_SNO Number:=0;
    BEGIN
    SELECT new_sno AS NEW_SNO
    FROM DAD.SCHOOL
    WHERE ORIG_SNO = OSNO AND ORIG_TN = OTN;
    RETURN NEW_SNO;
    END ORIG_SN;
    Warning: Function created with compilation errors.
    Errors for FUNCTION ORIG_SN:
    LINE/COL ERROR
    5/1 PL/SQL: SQL Statement ignored
    6/15 PL/SQL: ORA-00942: table or view does not exist
    Thanks in advance ..

    Try this,
    CREATE VIEW SCHOOL_VIEW AS SELECT * FROM DAD.SCHOOL;and then change your function like
    CREATE OR REPLACE FUNCTION ORIG_SN(OSNO in Number,OTN in Number)
    RETURN Number IS
    my_new_sno Number:=0;
    BEGIN
    SELECT new_sno INTO my_new_sno FROM SCHOOL_VIEW WHERE ORIG_SNO = OSNO AND ORIG_TN = OTN;
    RETURN my_new_sno;
    END ORIG_SN;and see if it is getting created without any errors.
    -Arun
    Edited by: Arunkumar Ramamoorthy on Aug 15, 2009 1:56 AM

  • ORA-00604: error occurred at recursive SQL level 1 ORA-04063: table....

    Hi all,
    i have the following code:
    DROP TYPE unit_function FORCE
    DROP TYPE unit_moving_point FORCE
    DROP TYPE moving_point_tab FORCE
    DROP TYPE moving_point FORCE
    DROP TABLE moving_object_ref
    DROP TABLE moving_point_ref
    CREATE OR REPLACE TYPE unit_function AS OBJECT
    xi NUMBER,
    yi NUMBER
    CREATE OR REPLACE TYPE unit_moving_point AS OBJECT
    p tau_tll.d_period_sec,
    m unit_function
    CREATE OR REPLACE TYPE moving_point_tab AS TABLE OF unit_moving_point;
    CREATE OR REPLACE TYPE moving_point AS OBJECT
    u_tab moving_point_tab
    CREATE TABLE moving_point_ref OF moving_point NESTED TABLE u_tab STORE AS m_u_tab
    When i execute this for the first time the drop commands fail, as expected and the types/tables are successfully created. But if i try to run again the same code i get this error:
    ORA-00604: error occurred at recursive SQL level 1 ORA-04063: table "HERMESL.MOVING_POINT_REF" has errors
    I have tried to first drop the tables and after the types but then I get this error:
    ORA-00604: error occurred at recursive SQL level 1 ORA-22914: DROP of nested tables not supported
    this error occurs when the "DROP TYPE unit_function FORCE" and "DROP TYPE unit_moving_point FORCE" commands is to be executed...
    Can anyone help me?
    Thanks...

    Works on 10.1.0.3.
    What is your exact version?
    SQL> DROP TYPE unit_function FORCE
      2  /
    DROP TYPE unit_function FORCE
    ERROR at line 1:
    ORA-04043: object UNIT_FUNCTION does not exist
    SQL> DROP TYPE unit_moving_point FORCE
      2  /
    DROP TYPE unit_moving_point FORCE
    ERROR at line 1:
    ORA-04043: object UNIT_MOVING_POINT does not exist
    SQL> DROP TYPE moving_point_tab FORCE
      2  /
    DROP TYPE moving_point_tab FORCE
    ERROR at line 1:
    ORA-04043: object MOVING_POINT_TAB does not exist
    SQL> DROP TYPE moving_point FORCE
      2  /
    DROP TYPE moving_point FORCE
    ERROR at line 1:
    ORA-04043: object MOVING_POINT does not exist
    SQL> DROP TABLE moving_object_ref
      2  /
    DROP TABLE moving_object_ref
    ERROR at line 1:
    ORA-00942: table or view does not exist
    SQL> DROP TABLE moving_point_ref
      2  /
    DROP TABLE moving_point_ref
    ERROR at line 1:
    ORA-00942: table or view does not exist
    SQL>
    SQL> CREATE OR REPLACE TYPE unit_function AS OBJECT
      2  (
      3  xi NUMBER,
      4  yi NUMBER
      5  );
      6  /
    Type created.
    SQL> CREATE OR REPLACE TYPE unit_moving_point AS OBJECT
      2  (
      3            m unit_function
      4  );
      5  /
    Type created.
    SQL> CREATE OR REPLACE TYPE moving_point_tab AS TABLE OF unit_moving_point;
      2  /
    Type created.
    SQL> CREATE OR REPLACE TYPE moving_point AS OBJECT
      2  (
      3  u_tab moving_point_tab
      4  );
      5  /
    Type created.
    SQL> CREATE TABLE moving_point_ref OF moving_point
      2  NESTED TABLE u_tab
      3  STORE AS m_u_tab
      4  /
    Table created.
    SQL> DROP TYPE unit_function FORCE
      2  /
    Type dropped.
    SQL> DROP TYPE unit_moving_point FORCE
      2  /
    Type dropped.
    SQL> DROP TYPE moving_point_tab FORCE
      2  /
    Type dropped.
    SQL> DROP TYPE moving_point FORCE
      2  /
    Type dropped.
    SQL> DROP TABLE moving_object_ref
      2  /
    DROP TABLE moving_object_ref
    ERROR at line 1:
    ORA-00942: table or view does not exist
    SQL> DROP TABLE moving_point_ref
      2  /
    Table dropped.
    SQL>
    SQL> CREATE OR REPLACE TYPE unit_function AS OBJECT
      2  (
      3  xi NUMBER,
      4  yi NUMBER
      5  );
      6  /
    Type created.
    SQL> CREATE OR REPLACE TYPE unit_moving_point AS OBJECT
      2  (
      3            m unit_function
      4  );
      5  /
    Type created.
    SQL> CREATE OR REPLACE TYPE moving_point_tab AS TABLE OF unit_moving_point;
      2  /
    Type created.
    SQL> CREATE OR REPLACE TYPE moving_point AS OBJECT
      2  (
      3  u_tab moving_point_tab
      4  );
      5  /
    Type created.
    SQL> CREATE TABLE moving_point_ref OF moving_point
      2  NESTED TABLE u_tab
      3  STORE AS m_u_tab
      4  /
    Table created.
    SQL> disconnect
    Disconnected from Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Production
    With the Partitioning, OLAP and Data Mining options

Maybe you are looking for