Solution - Responder - Character Set Mismatch Error

Version 2

    Behavior

     

    When trying to open an incident in Responder Archive Explorer, the following error is thrown:

     

    2015-03-12 16:37:20,856 [Main Thread] ERROR Miner.Windows [(null)] - An unexpected program error has occurred.
    Refer to the error log for detailed information about the error.
    System.Data.OracleClient.OracleException: ORA-12704: character set mismatch


    Server stack trace:
       at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
       at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList&resultParameterOrdinals)
       at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList& resultParameterOrdinals)
       at System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior)
       at System.Data.OracleClient.OracleCommand.ExecuteDbDataReader(CommandBehavior behavior)
       at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
       at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
       at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
       at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
       at Miner.Data.Access.DataSource.ExecuteDataTable(DataSession session, IDbOperation operation)
       at Miner.Data.Access.DataSource.ExecuteDataSet(DataSession session, IDbOperation[] operations)
       at Miner.Responder.Shared.Requests.FindIncidentArchiveAndAllRelationsRequest.Miner.Responder.Shared.IDataRequest.Execute(DataSource source, DataSession session)
       at Miner.Responder.Processors.ArchiveServices.ExecuteRequest(IDataRequest request)
       at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
       at System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
       at System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)

     

    Cause

     

    Responder does multiple memory joins and may encounter an issue with the account field, if different datatypes are trying to join. The datatypes must match across all the tables. A field of nvarchar(15) and a field of nvarchar(30) are considered different by Responder.

     

    Solution

     

    Using the 'alter table' command in Oracle, the default type for the account fields should be nvarchar2(30) and will need to match across all of the tables detailed below. If changes are made to the RX_Customers table, you will also want to verify that the CIS integration will function with the new datatype.

     

    All items below are customer_account, unless otherwise noted. All datatypes should be nvarchar2(30), which is the value set in the implementation scripts.


    RX_Customers (account)
    RX_Customers_Archive (account)
    RX_Callbacks (account)
    RX_Callbacks_History (account)
    RX_Calls
    RX_Calls_History
    RX_Calls_Archive
    RX_Loadpoints
    RX_Loadpoints_History
    RX_Loadpoints_Archive