Memory corruption on Oracle 10g rel2

dips

Member
We have a HP DL385 server, w2003 R2 /64bit, 8 gb memory, Oracle 10.2.0.2 /64bit
PLSQL dev. 7.0.2
When we are performing some kind of DDL on a table, e.g. drop column, add column, the PLSQL dev. is corrupting the memory, and every insert operation slows down extremely. (2 blocks updated in 1 hour.) This has nothing to do wit any Oracle memory parameters.
Insert on tables, which are "untouched" with DDL, works fine. I have seen this before, on HP-UX. The server crashed when I was using PLSQL dev. with lots of ora-0600 errors. This incident is also documented on Metalink.
Any suggestions?
 
That's a vague document.

In any case, PL/SQL Developer is a SQL client application like any other, and executes DDL statements and DML statements across Oracle Net. There is nothing special going on behind the scenes.

The only thing that could cause a server problem like this is the "Debug Information" in DDL or DML triggers. When you compile a trigger with the "Add debug information when compiling" preference, this adds debug information. Sometimes the Oracle Server can cause problems in such a case.

To verify this, disable the "Add debug information when compiling" preference, recompile your triggers, and try again.
If this fixes the problem, try the following in SQL *Plus:

SQL> alter trigger compile debug;

Do this for all relevant triggers. Retry the DDL/DML and verify if this introduces the problem again.
 
If adding debug information can cause such serious server problems, wouldn't it be better to set this option disabled as default?

It might also be good to add a warning about this issue in the preferences window. Even though this is mainly a developer tool, it is also used quite a lot for connection to production databases, in which case this setting should definitly be turned off considering this information.

with regards,
Helene
 
You can't turn off everything that might cause problems because of some obscure Oracle Server bug. There would be no end.
 
@Helene and @dips:

Please read an old topic ORA-00600: internal error code, arguments: [17113], [0x000000000], [], [], [], [], []
and related Metalink article ID: 39453.1
You will probably discover what you should not to do when you work with Oracle server because all those actions could cause an ora-600 internal error, and all of them are really ordinary.

Oracle can think that is self-contained and Oracle tools do not produce ora-600 errors, but we
don't have to believe them. We are not on the Oracle payroll, are we? ;)
 
I totally agree: this absolutely seems to be an Oracle bug causing the problems! However, the quite serious consequences that can follow when working with a production database (even provoking the entire server to stop) deserves to be given attention from the pl/SQL developer side as well. It is very unfortunate for the good name and reputation of this excellent tool when we experience problems like the following: on a customer site, the simple action of connecting to the production database using pl/SQL developer caused oracle "ORA-00600 internal error" messages to bounce on almost every user screen. This was a serious incident!

The consequence might actually in the very worst case be that use of pl/SQL developer is banned, and another tool is enforced - which probably would make me turn into hysterical crying and screeming :mad:

Marco, you say the following "The only thing that could cause a server problem like this is the "Debug Information" in DDL or DML triggers. When you compile a trigger with the "Add debug information when compiling" preference, this adds debug information. Sometimes the Oracle Server can cause problems in such a case."

If this is the case, then it should be rather simple to add a warning about not using this setting in a production database? This would also prevent pl/SQL developer from getting the blame for what is actually an Oracle bug.

What I would like is to be able to enforce preferences settings that are safe, also when connecting to production databases. By this I mean to enforce such settings for all developers with no option of overriding that setting. If I understand the documentation correctly, the individual developer can always override the system settings set by the systems administrator. Or am I mistaken about this?

I would also like to be able to easily switch from one set of preferences to another, and to enforce such a switch to a given preferences set whenever the database is a production database.

I see that some settings can be tuned to different databases, by adding a list of connection strings that will use this setting. But the list of user@database is not very practical, since the number of users in a given database can be huge. The database in its own right is a production database or a test/development database, regardless of the user name.

For example, a property of the preference set could be "production", "test" or "development", and this could be matched to a list of databases that also have the same property. Then the preferences should be switched whenever the user conencts to a database of another database type.

So, my point is that I would like pl/SQL developer to help us in preventing such serious incidents from occuring.

With regards
Helene
 
problems like the following: on a customer site, the simple action of connecting to the production database using pl/SQL developer caused oracle "ORA-00600 internal error" messages to bounce on almost every user screen. This was a serious incident!
I can advice to use dedicated servers for development connections to production databases. When server will crash it will be only your server not a shared one. I know that it does not resolve the problem you mentioned in a post but harm will be smaller.
 
If this is the case, then it should be rather simple to add a warning about not using this setting in a production database? This would also prevent pl/SQL developer from getting the blame for what is actually an Oracle bug.
You can explicitly exclude specific databases from debug information. On the debugger preference page you can add a line like *@proddb to the "NEVER add debug info for connections" list.
 
Ok, so you can use *@db to include all users in that database - that is good news :)

However, is there a way the system administrator can enforce this setting for all developers, with no way for them to override it?

With regards, Helene
 
It cannot be enforced, but it can be made the default through a database specific preference set.

In the end the user can always exectute SQL statements like:

SQL> alter session set plsql_debug=true;
SQL> (compile stuff, implicitly with debug info)

or

SQL> alter procedure yadayada compile debug;
 
Back
Top