I'm using BulkCopy method from ODP.NET to insert a DataTable to a temporary table.
If the temporary table is simple (no triggers or indexes) it works, fine, but as soon as I create an index or trigger, i get the "End-of-file on communication channel" error at BulkCopy.WriteToServer() method.
Any idea how could i fix this?
Thank you!
In case of an ORA-03113: end-of-file on communication channel, the server process dedicated to your session died because of a bug or error. The client process detects that the server process is missing and raises the ORA-03113. The server process has written its error message to the alert file. Check this file on the server to find out what went wrong. You may have to ask your DBA to do this for you.
Regards,
Rob.
I concur with the posters above. Check your alert log file. If you see an ORA-600 there, you (or your DBA) should contact Oracle support because you may need a patch.
Christian Shay
Oracle
Temporary tables in Oracle are almost always a bad idea. Can you re-design the program to use either a regular table or a PL/SQL collection?
I've contacted Oracle about this. Apparently it's a bug, that was fixed in 11g. They're now trying to release a patch
Related
I am creating an MVC application using Oracle's Entity Framework, and am writing a bit of code to iterate through all relevant DBLinks and testing them out, returning a grid of results (success/fail). My problem is that after using the fourth DBLink, I get an error "ORA-02020: too many database links in use".
I have tried to explicitly close each DBLink after using it ("alter session close database link LinkName"), but I then receive an error "ORA-02080: database link is in use".
I have tried issuing "COMMIT" statement before attempting to close the DBLink, but that doesn't change the error ("database link is in use").
I have tried to closing the database connection, but I still receive the "database link is in use" error when I create a new connection and try to close the DBLink.
Unfortunately, increasing the number of DBLinks available (open_links, open_links_per_instance) is not an option.
Has anyone seen this with Entity Framework and discovered a solution? Does anyone have any ideas of what else to try?
VICTORY! I found that if I set "Pooling=false" in my connection string, then this error goes away in all of the offending scenarios. This is viable for me since this is just used to test the DBLinks on demand, so I can safely turn off pooling in this scenario. Thanks so much for your responses. I was ready to turn in the towel and admit defeat
To see how many db links are open i syour session use the GV$DBLINK view
select DB_LINK from GV$DBLINK;
DB_LI
-----
LEDRP
YDO
To close a db link you must do two things.
First commit or rollback the transaction. Note that even if you do not change anything a transaction is open due to the use of the DB LINK.
Second you must CLOSE DATABASE LINK using the ALTER SESSION statement.
rollback;
ALTER SESSION CLOSE DATABASE LINK LEDRP;
You see, that link is closed and appears not in the view:
select DB_LINK from GV$DBLINK;
DB_LI
-----
YDOV
Few days ago while i tried perform database copy from remote server to local server i got some warnings and one of them was like this
"Error occured executing DDL for TABLE:MASTER_DATA".
And then i clicked yes, but the result of database copy was unexpected, there were only few tables has been copied.
When i tried to see DDL from SQL section/tab on one of table, i got this kind of information
-- Unable to render TABLE DDL for object COMPANY_DB_PROD.MASTER_DATA with DBMS_METADATA attempting internal generator.
I also got this message and i believe this message showed up because there's something wrong with DDL on my database so tables won't be created.
ORA-00942: table or view does not exist
I've never encountered this problem before and i always perform database copy every day since two years ago.
For the record before this problem occurred, i have removed old .arch files manually not by RMAN and i never using any RMAN commands. I also have removed old .xml log files, because these two type of files have made my remote server storage full.
How to trace and fix this kind of problem? Is there any corruption on my Oracle?
Thanks in advance.
The problem was caused by datafile has reached its max size though. I have resolved the problem by following the answer of this discussion ORA-01652: unable to extend temp segment by 128 in tablespace SYSTEM: How to extend?
Anyway, thank you everyone for the help.
Try to be more clear, I'm in lack of ideas in this problem, even it sounds like a classic.
My application is running on weblogic 10.3.3 application server, and for database I am using Oracle database 11g. My problem is that there is table in db, let's say "user.", there is column, let's say "columnA", in this table. This table is updating by some module of application.
What I want if when value of column is "abc.", then I have to show alert to console(IP). {IP can be retrieved from DB as it is configured in DB. this ip will be other linux system other than linux machine where oracle database is installed.} Updating is continuously done on my table from module of application. Please tell me from where should I start?, what should I read. I am not able to understand what should be approach. Any help is much appreciated.
A trigger on the table can call UTL_HTTP to communicate with another machine (eg call a RESTful API).
The architectural questions are :
This will happen PRIOR to the commit so you may get false alerts if a change is rolled back
If you wait for a response, it will slow the system down.
What do you do if you get an non-standard response (eg the other server isn't available)
In psql we have PL/Perl to communicate with external program when the new row is inserted into our table. Like that is there any way (procedural language ) to communicate with external program in Oracle . For achieving this things, what should I do.....?
Can any one help me out of this problem.....
Oracle offeres packages to communicate externally to a file, or pipe. Create a trigger to write to one of these when a row is updated. Be careful how you deal with failures in this code so you don't lock up the database or rollback the transaction if you external program is not available. Checkout out the utl packages.
The most suitable answer to your rather vague question depends on the kind of problem you want to solve when you mention communicate with external programs.
Please check documentation about Oracle's Database Change Notification, you will find your answers there.
I am trying to create a report in SSRS2000 that will query an ORACLE database and pass one parameter, I am getting the following error message:
ORA-01036: illegal variable name/number
But have been unable to find much help elsewhere on the web with this error code
I was hoping that this would be fairly simple to do, does anyone have any idea how to accomplish this task?
You'll have to accept some Answer in order to show this question as "Answered" and you can't accept your own, so it might as well be this one.
Guys, I Swear I'm not trolling for rep, I don't even know what the proper term for that is. But if I mark it as Wiki, I won't right? So I did.
It turns out that the parameter had to be named Parameter1 for this to work, and that the dba had to correct a connection issue!