| Bug ID Number |
NIM062872 |
| Submitted | November 17, 2010 |
| Last Modified | April 2, 2025 |
| Applies to | ArcSDE/Enterprise Geodatabase |
| Version found | 10.0 |
| Operating System | Windows OS |
| Operating System Version | 2008 64 Bit |
| Version Fixed | N/A |
| Status | Fixed
The bug has been fixed. See the Version Fixed and Additional Information, if applicable, for more information.
|
Description
The arcsde_database_startup script creates a startup trigger that runs whenever the Oracle instance is started and acts as a safety net to assure that no locks or orphaned sessions persist. The trigger cleans up any orphaned session information that remains in the
ArcSDE system tables following an instance failure. This trigger is
optional because ArcSDE eventually cleans up orphaned session
information during its normal operation. The startup trigger merely
guarantees that orphaned session information is not present following
the Oracle instance startup.
When the arcsde_database_startup.sql script is executed as part of the database initialization process for ArcSDE 10 it will cause Oracle error ORA-12704: character set mismatch to be thrown, thus preventing a successful upgrade due to a failure in creation of the GDB_* tables.
Cause
A mismatch between the start_token characterset and the characterset the ArcSDE codebase expects will cause this issue to arise and the post-installation to fail.
A change in the codebase at the v10 release reads the “start_token” variable in the trigger as NVARCHAR2 where before it was just VARCHAR2. Changing the start_token definition in the trigger to NVARCHAR2 will not coirrect the issue
Workaround
In order to correct this issue and move forward with the post-installation:
Drop the trigger the arcsde_database_startup.sql script creates...
Code:
drop trigger sys.arcsde_database_startup;
and run sdesetup -o install.
Note:
The following is only necessary if the logic within the script was executed outside of the trigger
If the logic within the script was executed outside of the trigger the pipes will persist within the instance until the database instance is restarted or the pipes are removed via a script such as:
Code:
DECLARE
l_result INTEGER;
BEGIN
-- Explicit public pipe.
l_result := DBMS_PIPE.remove_pipe(pipename => 'ARCSDE_STARTUPPIPE');
-- Explicit private pipe.
l_result := DBMS_PIPE.remove_pipe(pipename => 'ARCSDE_STARTUPCONFIRMPIPE');
END;
Steps to Reproduce