You are on page 1of 9
Copyright (€) 2024, Ora. All rights reserved. Oracle Confidential E1: DB: Guide to Performance Questions and Configuration Settings for EnterpriseOne and Oracle Database (Doc ID 1527286.1) In this Document Purpose ‘Troubleshooting Steps Performance Concepts Scenario 1: Performance Improvements on Oracle and SQL Server Uslizing Update Statistics ‘Scenario 2: Tuning Oracle Database Connections for Performance for EnterpriseOne Performance Options Scenario 1: Oracle Table Partitioning Scenario 2: Is Oracle Database "Parallel Query" Supported with EnterpriseOne? Scenario 3: Identifying long-running SQL Queries. Database Configuration f nal Chi Scenario 2: Oracle Database Unlimited Value In User Profile Idle Time Setting For IDE Proxy User Scenario 3: How to Kill INACTIVE Sessions in an Oracle Database ‘Scenario 4: Impact of Locking Default Oracle Di 1 Accounts on EnterpriseOne Scenario 5: Does EnterpriseOne Use optim peek user bind ‘Scenario 6: When update statistics is running, is it ok to use the tables? ‘Scenario 7: Is It possible to run update statistics for multiple tables simultaneously? References JD Edwards EnterpriseOne Tools - Version $P24 to 9.2 [Release SP24 to 9.2] Information in this document applies to any platform. ‘The purpose of this dacument is to describe some performance and configuration settings for Oracle Database with relation to JDEdwards EnterpriseOne. Performance Concepts ‘Scenario 1: Performance Improvements on Oracle and SQL Server Utilizing Update Statistics ‘Abstract: Performance can be improved on Oracle and SQL Server databases by updating statistics on a regular basis, ‘Symptoms Excessively long-running queries Explanation When large numbers of records are added to a table, itis extremely Important to update the index statistics for the table within both Oracle and SQL Server. If this is not done, the database can make ppoor decisions about which indexes to use. This can cause poor performance. In one case, a UBE was running for days, after updating the statistics on the database, the index run in under one hour. Its likely that each database and each JD Edwards EnterpriseOne/OneWorld implementation will have different requirements for updating statistics. Therefore, this performance alert will not address the appropriate methods for updating statistics on the databases. For assistance on this issue, you should consult Performance Tuning solutions or contact Global Customer Support. Please consult the Oracle documentation from the fallowing links: + JD Edwards EnterpriseOne Performance Library Document 978813,1 * Oracle Technology Documentation http://www. oracle,com/technetwork/documientation/jdedent-098169.htm! + 3D Edwards EnterpriseOne Tools Technical Brief Index Document 870244.1 If you cannot access the above referenced area within the My Oracle Support, please contact the Global Customer Support for assistance. Benefit Improvement > 50% Improvements will vary depending on a wide number of variables including table size, the query being run, and when statistics were last updated. Implementation | Time Varies Considerations Skills This task should be performed by a Database Administrator. Tools Varies depending on the database ‘Scenario 2: Tuning Oracle Database Connections for Performance for EnterpriseOne Abtract: Some performance issues can be related to an excessive amount of database connections. The following areas can be checked to adjust the number of Oracle Database connections from EnterpriseOne. I. Using different server names for the same Oracle database TNS name (ERPPD). Using a different server name will cause additional, unnecessary connections. The server name and TNS names must both match, in a case-sensitive compare, before JDB will reuse an existing connection. Within the "Work With Data Sources" application, if the "Data Source Use" is "DB" (not "SVR"), and the "Data Source Type" is (for Oracle), then, for each occurrence of a specific "TNS/ODBC/JDBNET Data Source” value, it should repeat the same ‘The easiest way to accomplish this during setup is to use the server name where the Oracle database is located. If there are multiple server pathways to get to the same database, they should arbitrarily pick one, and use it consistently. The EnterpriseOne code passes the TNS name to Oracle, but not the server name, so Oracle will use the server path that is configured in the Oracle TNSNAMES.ORA file (or Oracle Names Server, if used). ‘The same TNS and server names should be used in the JDE.INI files, as those that are shown in the "Work With Data Sources” application. Under "[DB SYSTEM SETTINGS)", the .INI "Database=" is the same value as the "TNS/ODBC/IDBNET Data Source” value in the app, and the INI "Server=" is the same value as the "Server Name" value in the app. II. OracleServerHandleReuse - JDE.INI setting ‘This JDE-INI setting is no longer used. The Oracle server handles are no longer used for multiple connections. Although it is supposed to be a performance benefit to reuse the server handles, the Oracle database does not do sufficient locking to prevent conflicts between connections on the same server handle, The conflicts can show up under very high database usage, and only from a few applications, Bug 10776175 Oracle Table Locking Issues ~- was created to remove the hidden JDE,INI setting, In cases where the above has been looked at and there is still an issue with too many connections to the DB per user here are some additional recommendations: ‘+ Timer Initiated Disconnect or Dead Connection Detection (SQL*Net release 2.1 and later only) Dead connection detection is a feature that allows SQL*Net to identify connections that have been left hanging by the abnormal termination of a client. On a connection with Dead Connection Detection enabled, a small probe packet is sent from server to client at a user-defined interval (usually several minutes). If the connection is invalid (usually due to the dlient process or machine being unreachable), the connection will be closed when an error is generated by the send ‘operation, and the server process will exit. This feature minimizes the waste of resources by connections that are no longer valid. It also automatically forces a database rollback of uncommitted transactions and locks held by the user of the broken connection. Specify the SQLNET-EXPIRE_TIME=n parameter in your SQLNET.ORA file (usually in SORACLE_HOME/network/admin), This parameter will instruct SQL*Net to send a probe through the network to the client every n minutes, if the client doesn't respond, it will be killed. NOTE: This parameter is only useful on the database server side, specifying it on a client workstation will have no effect. + Review the following guides on tuning for JAS Servers. Tuning for ]DBI.INI MaxConnections: © Document 703847.1 JD Edwards EnterpriseOne Tools Release 8,97 HTML Web Server Reference Guides for Oracle Application Server 10.1.3.1, Update © Document 701074.1 1D Edwards EnterpriseOne Tools Release 8.97 HTML Web Server Reference Guides on Websphere 6.1 Application Servers © Document 705519.1 1D Edwards EnterpriseOne Tools 8.98 HTML Web Server Reference Guides on WebSphere 6.0 Application Servers + This value is the total number of DB connections for dbusers per data source, Additional database connection requests beyond this value will be queued for the next available connection, If this value is exceeded, the user request will fail generating JDBC errors in the JAS.LOG. This value can also be monitored in SAW on the statistics tab, connection utilization. A connection poo! hit ratio approaching 100% is optimum and indicates that most of the connections are serviced from the pool. Set the value to the maximum number of JDBC database connections you want to allow for the system. Default is 50. Begin with a ratio of 4 users per connection and adjust from there. User characteristics will influence this parameter. ‘Sample of the JDJB.INI section: minConnection=> maxConnaction-50 snitialConnection=5 poolGrowth=5, conwecTiox 2003] + Run a script on the database server, each node with incoming connections grouped by: 1) db user 2) program 3) machine name select username, count (*) from vésession group by usernane: select program, count (*) fron vésession group by progran; ‘This will help in determining what the source is of incoming connections which can then be forwarded to developers to take corrective steps if there is a need for it + JAS specific resultSetTimeout parameter in the DB).INI Increasing the ResultSet timeout will cause the connection to stay dedicated to the given user, which means that connections are not able to be shared between users and it results in new connections to Database. In no case should the resultSetTimeout be more than 2 minutes. When the resultSetTimeout expires the user gets a warning that they have to press "Find" again to renew the Grid resultSet + A number of Database Proxy Users and DataSources. ‘A Database Connection Pool is keyed off Proxy User and DataSource, so if we have a high number of Proxy user /Datasource combinations it will result in as many Database Connection Pools. Connections to Database cannot be shared across Connection Pools which results in a higher number of Connections to Database, Create Proxy users judiciously based on privilege to access data in a given Datasource, Question Why doesn't JD Edwards EnterpriseOne re-use the DB connections even if they are connecting to the same database? Answer ‘As per the code, the DLL name in the JDE.INI Load Library setting and F98611 OMDLLNAME column value must match. If they are do not match, the system will initialize the driver again and will create a new connection to the database. The system will also create a new connection in any of the following conditions. = When there are multiple users accessing the same database. = When a lot of parallel transactions take place, = When the system finds the existing connection is busy or = When the system cannot find the connection in the connection pool. Performance Options ‘Scenario 1: Oracle Table Partitioning Question ‘The tables: F4074, FO911, F421, F42119, F42199, etc. are huge in the Oracle database and there are two year's data in the tables. You would like to use Oracle partition to partition the tables. You would like to know if the partition can improve the JD Edwards EnterpriseOne/OneWorld performance or if you can use the partition to archive the tables? Answer ‘The partitioning is administered at the database level and not via E1/OW. JD Edwards EnterpriseOne/OneWorld Oracle drivers, for example, JDBOCI90.DLL & JDBOCI81.DLL, do not have special coding in them to produce special SQL for Oracle partitioning. Partitioning is managed exclusively at the database level and not at the JD Edwards EnterpriseOne/OneWorld level. Partitioning can be used but must be maintained at the DB level. JD Edwards EnterpriseOne/OneWorld will not generate tables or SQL statements with partitioning syntax. ‘Are they any other repercussions for JD Edwards EnterpriseOne/OneWorld if this is set up? ‘As long as JD Edwards EnterpriseOne/OneWorld can access the table using owner:tablename and does not need to issue SQL statements with any partitioning syntax itis OK. It is transparent to OW. The only warning is that any regeneration of table via ‘OMW will not retain all the partitioning structure. ‘Scenario 2: Is Oracle Database “Parallel Query” Supported with EnterpriseOne? Question ‘You would like to enable parallel query on the Oracle Database to optimize usage of CPUs. Enable parallel query ==> PARALLEL ( DEGREE 6 INSTANCES 1 ) for all tables, At the moment all tables and indexes are configured with Nonparallel. ‘You have the following questions on the support of Parallel Query: + Is this supported by JDE EnterpriseOne? * Are there any known issues or requirements/restrictions on enabling this setting on all features? + Is there best practice documentation for changing this setting? Answer ‘The setting related to "Parallel Query” is manipulated at the database level, outside the control of EnterpriseOne code. This setting is not documented within EnterpriseOne guides or manuals. ‘Any issues related to Parallel query should be directed to the Oracle database group to be evaluated for cause determination. ‘Scenario 3: Identifying long-running SQL Queries. Question How to Identify long-running SQL Queries? Answer Set the query execution threshold to track long-running SQL queries which took longer than 2 seconds via Enterprise Server jee DB SYSTEM SEPTINGS] jonTimethreshold-2 Restart the Enterprise Server and reproduce the performance issue. Review all kernel and batch JDE logs (jde.log) to help identify the long-running SQL queries. The initial action should be to tune those long-running SQL queries with the DBA/Function expert, Database Configuration ‘Scenario 1: Oracle Database and National Charactersets Question ‘Are there plans to support the Oracle AL32UTF8 NLS_CHARACTERSET for new installs on EnterpriseOne? If this is used instead of WEBMSWIN1252 would it be supported? I know E1 does not use NLS_CHARACTERSET for new installs since we have Unicode, but the install documentation still specifies WESMSWIN1252. The AL32UTF8 supports all charactersets and is considered a superset of WEBMSWIN1252 (similar to WESMSWIN1252 is a superset of IS08859P1) from my understanding. Would this be supported? I used WE8MSWIN1252 for the E1 install but would like some darification/direction on future support. Answer We don't support any variants of UTF8 (Including AL32UTF8) for Oracle and don't have a plan to support UTF8 at this moment. It requires code changes for this support. The database character set configured during Oracle installation is primarily used to indicate EnterpriseOne what code page EnterpriseOne uses to store non-Unicode data. For Unicode data, EnterpriseOne always assumes the storage format is ALIGUTF16 and the column type is NCHAR/NVARCHAR2/NCLOB, You create your Oracle database with a national character set and a database character set. The NLS settings then control how the data is displayed. There is a good write-up about this in the E1 install guide under "National Language Support" and "Installing the Databases" ‘Scenario 2: Oracle Database Unlimited Value In User Profile Idle Time Setting For JDE Proxy User Question In the Oracle database, there is an Idle time setting in the database User Profile. Is there any impact for the JDE proxy user, used by EnterpriseOne service to connect to the database, if the idle time is set to <=60 minutes from the current value of "Unlimited"? ‘This Is suggested by IT Audit to make the Oracle database more secure, Answer ‘This can be changed, however, make sure that the IDLE TIME setting in the Oracle database is greater than the Time specified in the E1 INT files, particularly these parameters: INT file Parameter SIDELINE JDENETTimeout JDBJ.INI ‘connectionTimeout Else the Oracle Database will time out the connection as per the settings specified for the User Profil. For example: If you set the IDLE TIME to 10 minutes in Oracle Database and the EnterpriseOne has 30 minutes as IDLE TIME, then after Connecting to the database it may time out in 10 minutes even though the EnterpriseOne setting is 30 minutes. ‘Scenario 3: How to Kill INACTIVE Sessions in an Oracle Database Question Is there something available that can be implemented to kill database sessions when a user ends their session or the user Closes the session without logging out (Ex: Closing Explorer Window) etc. You would like to know more about killing Oracle database sessions that are Inactive in EnterpriseOne. Answer How to kill INACTIVE sessions (those not processing/idle) in an Oracle database 1. Open isqiplus (sqlplus) with a user that has ALTER system privileges. 2. Query all sessions from v$sessions where status="INACTIVE' and the user is not null (The columns you need to query are at least SID, serial), Note: Please analyze thoroughly before killing any INACTIVE sessions. If you kill any or all inactive sessions, there might be some active sessions that are stil connected to the database, such as a long-running query. Be careful how you identify dead sessions; just because sessions are inactive does not mean they are not in use. nll and statue=" INA Information about v—"chis is’ to find Sessions chat are inactive and also sone relevant yup information regarding di: The following scripts can also be run Group by username: select username, coun up by username; Group by machin from vésession 3. Kill the session alter system kill session ' StD,serial# |; ‘or example : alter system kill ‘After issuing the ALTER SYSTEM KILL SESSION the INACTIVE sessions status in the v$session becomes KILLED but the row for this session is not removed from v$session until the session user tries to use the session and gets a ‘session Killed’ message. PMON will not remove the entry (of the KILLED marked session) from the VSSESSION until the user of that session attempts to Use the same session again. ‘Scenario 4: Impact of Locking Default Oracle Database User Accounts on EnterpriseOne Question ‘You would like to Lock the following Default Oracle Database User Accounts: OUTLN DBSNMP eB EJSADMIN TRACESVR ‘You do not run Oracle Intelligent Agent on the Database Server and there are no customizations that use these accounts. However, you are not sure if locking these accounts will adversely affect JD EnterpriseOne. Answer Please verify that the User Accounts (you would like to disable) are not used by EnterpriseOne, for example: + Check if you have these User IDs in any of the JDE.INI files (Deployment, Enterprise, JAS, FAT) as bootstrap users. + Check if you have any EnterpriseOne User(s) mapped to these UserlDs via P98OWSEC as SYSTEM Users. ‘After checking the above points, if you are not using these User IDs in EnterpriseOne; then it should be safe to Lock these Default Oracle Database Accounts. In the event someone is using any of these accounts, then you can easily figure this out by looking at the JDE.LOG or EIROOT.LOG. The database will throw an error like: “account/uid locked if someone is trying to use them. More details about User Accounts: + OUTIN - is for stored outlines, it can be locked without any issue, + DBSNMP - js the Oracle Enterprise Manager agent, it can be locked. + TRACESVR - this is an account that TRACE uses internally and is typically created during the installation of OEM. + EJB and EJSADMIN - these are used with Websphere ‘Scenario 5: Does EnterpriseOne Use *_optim_peek_user_binds’ Question : On the SQU's generated by the El applications, the following parameter is seen OPT_PARAM(._optim_peek_user_binds' ‘alse'), Does EnterpriseOne Use '_optim_peek_user_binds'? Answer: Per JDE development, JDE E1 Database middleware code does not set OPT_PARAM ‘optim_peek_user_binds' false’). ‘Scenario 6: When update statistics is running, is it ok to use the tables? ‘The general recommendation is not to run the updated statistics when there is a huge load on the table, It is preferred to run them during downtime or when the load is less, especially if there is a huge number of insert/delete happening then It's a concern, For more information on this topic, refer to Managing Ontimizer Statistics: Basic Topics ‘Also, these tasks should be performed under the guidance of your database administrator. ‘Scenario 7: Is It possible to run update statistics for multiple tables simultaneously? The updated statistics can be run at the Schema level, For more information on this topic, refer to Managing Optimizer Statistics: Basic Toy REFERENCES NOTE:1016552.102 - How To Use PROFILES To Limit User Resources NOTE:780484.1 - Why Does A Killed Session Not Disappear From V§Session ? NOTE:285298.1 - Killed Session do not go from vgsession after PMON Cleanup NOTE:1041427.6 - KILLING INACTIVE SESSIONS DOES NOT REMOVE SESSION ROW FROM V$SESSION BUG:10776175 - ORACLE TABLE LOCKING ISSUES - SAR: 5871016 Dict find what you are looking for?

You might also like