The Oracle package has one procedure call TestA, and it is very time consuming, about around 3 minutes to finish.
There is one windows job wrriten in C#, who is invoking this Oracle package and the TestA procedure. While the procedure is still in running status, if someone recompile the Oracle package in PL/SQL, will it affect the normal running result of this windows job?
It won't, because the package can't be compiled if it is in use. Compile attempt will "hang" until the package is "released".
Once if the package starts running you should not touch it or do any compilation.
If you try to compile it on running time it will get hang, until the process gets released the compilation process won't happen.
Related
I'm trying to set up a Windows Server-based continuous integration server to completely build and package an Unreal Engine 4 project. The vast majority of the process works, but at the content cooking stage I keep running into the following errors:
********** COOK COMMAND STARTED **********
Running UE4Editor Cook for project C:\workspace\CEIT_ingame-native-plugins_PR-44\sampleProjects\unreal\ShooterGame26\ShooterGame.uproject
Commandlet log file is C:\Unreal426\Windows\Engine\Programs\AutomationTool\Saved\Cook-2021.07.05-13.56.23.txt
Running: C:\Unreal426\Windows\Engine\Binaries\Win64\UE4Editor-Cmd.exe C:\workspace\CEIT_ingame-native-plugins_PR-44\sampleProjects\unreal\ShooterGame26\ShooterGame.uproject -run=Cook -TargetPlatform=WindowsClient -fileopenlog -ddc=DerivedDataBackendGraph -unversioned -abslog=C:\Unreal426\Windows\Engine\Programs\AutomationTool\Saved\Cook-2021.07.05-13.56.23.txt -stdout -CrashForUAT -unattended -NoLogTimes -UTF8Output
LogInit: Display: Running engine for game: ShooterGame
LogModuleManager: Warning: ModuleManager: Unable to load module 'C:/Unreal426/Windows/Engine/Binaries/Win64/UE4Editor-OpenGLDrv.dll' because the file couldn't be loaded by the OS.
LogModuleManager: Warning: ModuleManager: Unable to load module 'C:/Unreal426/Windows/Engine/Plugins/Lumin/MagicLeap/Binaries/Win64/UE4Editor-MagicLeap.dll' because the file couldn't be loaded by the OS.
Took 14.257796s to run UE4Editor-Cmd.exe, ExitCode=1
ERROR: Cook failed.
(see C:\Users\jenkins\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Unreal426+Windows\Log.txt for full exception trace)
AutomationTool exiting with ExitCode=25 (Error_UnknownCookFailure)
BUILD FAILED
Specifically, UE4Editor-OpenGLDrv.dll and UE4Editor-MagicLeap.dll cannot be loaded, but there's not any clear indication as to why this is, just that "the file couldn't be loaded by the OS". The log files written to disk don't tell me much more than the information above. I've verified that both DLLs are actually present on the CI server, so I suspect that there is some other sub-dependency missing.
I've tried running Dependencies on the Unreal executable and the DLLs mentioned in the logs to work out which DLLs might be missing on the server machine itself, but this takes over three hours to run to completion, so is a bit awkward and time-consuming to do repeatedly. I've followed the advice regarding missing dependencies from this page, and have gone through all of the likely DLLs that were reported as not found by the Dependencies utility (mostly DirectX/OpenGL related ones), but the build still fails and I'm running out of ideas.
Is there any easy way in Windows to work out exactly why a DLL fails to load? I seem to remember that Windows DLL loading error messages are nowhere near as informative as on Linux, but perhaps there's a tool or an easier method to work it out that I'm not familiar with.
EDIT: I've narrowed things down somewhat - if I attempt to load glu32.dll completely dynamically in a program of my own, I get the load error Could not load C:\Windows\System32\glu32.dll: The specified procedure could not be found. As this is on the load attempt, rather than attempt at looking up a function, it implies that some procedure is missing on a sub-dependency of glu32.dll, but I don't know how I'd go about identifying which one it is.
You can try to delete Engine/Intermediate and click GenerateProjectFiles.bat to regenerate the whole project if you use UE Source code to start up, see UE documentation and rebuild with Visual Studio.
If you use the UE4-Editor to start up lacking dll, just add dependency within YourProject.build.cs like a third party, see UE document.
If I have 1 Package with 2 procedures (A & B) what would happen to package A if it was executing and I needed to edit procedure B and recompile the overall package body.
Would A error due to the recompiling of the package or would it still fire off?
Many Thanks
You cannot compile package or package body if the procedure A is working because you will get acquire nowait timeout until A finishes.
If the procedure is being executed, compilation will fail (actually, it'll wait until the package is released, i.e. nobody uses it).
We have an oracle procedure which is inside a package. When we are calling that Procedure from .NET (Windows Forms) it is giving Operation timeout errors
After seeing this message "Operation Timeout Error" from the screen,when i go to SqlDeveloper and Compile All Packages then after compiling them, the procedure works very fast and i can retrieve the data in 5 seconds.
Can you anyone tell how to solve this issue and what is the root cause?
You should proabbly analyse why package is getting invalid and need compilation before executing and either eliminate code taht causes invalidation or as previous answer says execute compile before running procedure.
Package can get invalid when you alter some dependent objects (swaping table names or synonyms during some load, altering table, dynamically droping and creating objects that package depends on). Those two threads may help you: What Situations Cause Oracle Packages to Become Invalid? and When does an Oracle Package Specification become INVALID If you're able to eliminate package invalidation it is better if you can't go for compilation before each run of procedure.
One more cause that calling procedure from .NET is not recompiling package can be driver. I met such issue a few years ago and remember that changing driver helped. But I don't remember if we changed to managed or unamanged driver.
Try this before run Procedure
ALTER PACKAGE yourpackage
COMPILE PACKAGE;
So I've taken an export (using Data Pump) from an Oracle 10g schema where all the PLSQL packages were encrypted using Oracle's Wrap utility. The problem is when I do an import of this into a new schema, all my packages are invalid, and trying a manual compile doesn't work.
SQL> ALTER PACKAGE mypackage compile;
Warning: Package altered with compilation errors.
SQL> show errors
Errors for PACKAGE MYPACKAGE:
LINE/COL ERROR
-------- -----------------------------------------------------------------
36/2 PLS-00103: Encountered the symbol "2"
So what's the solution to recompiling all these invalid packages?
Try using the system DBMS_UTILITY.COMPILE_SCHEMA procedure to compile your schema objects. This procedure will determine the order in which to compile your objects and even handles circular dependencies. After a scripted schema build it's a good procedure to call for clean up.
BEGIN
DBMS_UTILITY.COMPILE_SCHEMA('MYSCHEMA');
END;
/
I'd be curious to know how well it handles wrapped objects.
So it appears there is no "fix" for this issue, only workarounds, none of which are ideal.
Redo the export and import using the old exp and imp programs (instead of data pump)
If you have .SQL files containing the package definitions, you can manually compile them in SQL*Plus (might be thousands of files making this a big job).
You can patch the database (see Metalink article 460267.1)
Our biggest client (150 billion $ of turnover) is afraid about compiling package during the online production time can cause database to hang.
I think it is impossible since the package I want to compile are alone and isolated. They are used to correct data or to analize them.
My chief told something about SGA? Is it possible?
What do you think about?
Compiling a PL/SQL package in online production is problematic if:
the package is currently being executed, or
the package has state (such a body variables) and has been used in one of the sessions that's still logged in
The former can block sessions (most likely just the one that compiles the packages due to a library cache pin lock), the latter one will lead to the following error message in all session that try to use the package again after the compiliation:
ORA-04061: existing state of package body "SCHEMA.PACKAGE" has been invalidated
I don't think there's any specific problem related to the SGA.