cnc tips & tricks for e1 9 - quest oracle community
TRANSCRIPT
April 2-6, 2017 in Las Vegas, NV USA #C17LV
Marcelo Tamassia
• Founding Partner @ EmeraldCube Solutions
• Responsible for all Engineering and R&D initiatives @ ECS
• University of Florida MBA
• 19 years of tech industry
• 14 years of JDE consulting in South and North America
• Planned, designed, executed, and managed 90+ E1 implementations worldwide
April 2-6, 2017 in Las Vegas, NV USA #C17LV
Teunis Aalberts
• Technology Consultant @ Forza
• Responsible for CNC Add On Solutions @ Forza
• Joined JDE in 1999
• 17 years CNC experience
• Visit us @ booth 624
April 2-6, 2017 in Las Vegas, NV USA #C17LV
Agenda• Intended Audience
• Best Practices & Tips• Performance
• Database Monitoring
• JDE CNC
• Packman
• Prism
April 2-6, 2017 in Las Vegas, NV USA #C17LV
Forza Consulting
One-stop shop for JD Edwards
Extensive JD Edwards add-on portfolio▪ AP Automation ▪ AR Automation ▪ Electronic Payments module ▪ Automated Package Build & Deployment▪ Self Service Password Reset solution ▪ Workload scheduler
Over 200 clients supported globally
Leading CNC Technology Department
Innovative Development Department
April 2-6, 2017 in Las Vegas, NV USA #C17LV
Feedback Cards
Enter to Win a $100 American Express Gift Card
Fill out the EmeraldCube session feedback card. Drawing will be held at the end of the session.
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#1 Performance – Track Enterprise Queries• Configure JDE.INI
• Set QueryExecutionTimeTreshold > 0 (start at 30 seconds)
• Search logs for “dbperfrq.c”
• JDE Log
6373/1 MAIN_THREAD Thu Jan 30 00:00:33.704811 dbperfrq.c770
doQueryDiagnostics: The following SQL query took 10 seconds which is equal to or greater than
QueryExecutionTimeThreshold (10 seconds) for E1User(MARK) with DBProxyUser(JDE).
6373/1 MAIN_THREAD Thu Jan 30 00:00:33.705162 dbperfrq.c782
SELECT * FROM PRODTA.F41021 WHERE ( LIPQOH <> 0.000000 OR LIPCOM <> 0.000000 OR LIHCOM <> 0.000000
OR LIPREQ <> 0.000000 OR LIQOWO <> 0.000000 OR LIQTTR <> 0.000000 OR LIQTO1 <> 0.000000 OR LIFCOM <>
0.000000 OR LIMCU <> ' 1001' OR LIITM > 1.000000 ) ORDER BY LIITM ASC,LIMCU ASC
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#1 Performance – Track Enterprise Queries• Research Issue
• Determine type of process (JDE.LOG)• Talk to the user (shown on log message)
• Be mindful of row security impact on queries
• Involve your DBA (if you have one) to determine why the query is taking to long
• Bad Query/Inquire• Missing Index(es)• Slow I/O• Locking/Blocking
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#2 Performance – Tune JDE Kernels
• Make sure you have enough kernels of at least these:• Call Object: 6 to 12 users / multithread kernel• Security: 40 to 60 users / kernel• Metadata: 150 users / kernel• Network: 1 process + 200 users / kernel• UBE: 60 users / kernel
• Make sure you don’t have too many• Memory & Performance considerations
• E1: KER: EnterpriseOne Kernels Overview (Doc ID 961823.1)
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#3 Performance – Compress Data
• Use database compression• SQL Enterprise 2008+• Oracle Enterprise 11g + Feature
• Results• Data reduction of 60% to 90%• Reduced memory requirements• Reduce backup/restore time• Fewer I/O• 40% to 50% performance improvement• 5% to 10% higher CPU consumption
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#3 Performance – Compress Data
• Sample compression rates
Table Name Compression
F4111 Item Ledger File 76%
F0911 Account Ledger 73%
F0411 Accounts Payable Ledger 69%
F43121 Purchase Order Receiver File 69%
F4311 Purchase Order Detail File 68%
F9000 Task Master 62%
F0101 Address Book Master 61%
F4229 Sales Summary History File 56%
F0005 User Defined Code Types 54%
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#4 Performance – Consider Solid State
• Most JDE E1 environments are I/O bound, not CPU bound• Faster I/O most likely will result in faster overall E1 performance• Faster CPU might/ might not result in faster overall E1 performance
• Most JDE E1 environments are 2/3 reads and 1/3 writes
• Performance Comparison (IOMeter Database – Average IO/s)• HDD 15K RPM: 445 IOPS• SSD: 2300 IOPS
• Cost / GB• HDD: 0.05 USD• SSD: 0.80 USD
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#5 Performance – Adjust JVM Heap
• JVM Process Memory
• OS memory limits per single process• 32-bit, roughly 2GB• 64-bit, theoretically 2,000 PB
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#5 Performance – Adjust JVM Heap
• Garbage Collection• Lock (lock involved objects so they don’t mutate)• Mark (iterate through all objects)• Sweep (remove marked objects / reclaim memory)
• Why do we care?• Garbage Collection relationship with performance
• Baseline for 50 users• 32-bit: 1.5 Gb (max = min)• 64-bit: 2 Gb (max = min)
April 2-6, 2017 in Las Vegas, NV USA #C17LV
▪ Concurrent Mark & Sweep (CMS)▪ Default algorithm on Java 7 and 8
▪ Lock objects so they don’t mutate
▪ Mark (iterate through all objects)
▪ Sweep (remove marked objects / reclaim memory)
▪ Compact
▪ Garbage First (G1)▪ Leverages Multi Cores
▪ Reduced Pause times
▪ Increased Throughput
▪ GA with Java Hotspot 1.7 Update 4
▪ Ideal for 6GB + Heap sizes
▪ -XX:+UseG1GC
▪ Default algorithm on Java 9
#5 Performance – GC Algorithms
April 2-6, 2017 in Las Vegas, NV USA #C17LV
▪ Start JVM with verbose GC▪ -verbose:gc
▪ -Xloggc:<filename>
▪ -XX:+PrintGCDetails
▪ -XX:+PrintGCDateStamps
▪ -XX:+PrintTenuringDistribution
▪ -XX:+PrintGCApplicationConcurrentTime
▪ -XX:+PrintGCApplicationStoppedTime
▪ -XX:+HeadDumpOnOutOfMemoryError
▪ Parse log/output via GC Viewer
▪ Determine ideal heap size and number of JVMs
https://github.com/chewiebug/GCViewer
#5 Performance – JVM Memory Monitor
April 2-6, 2017 in Las Vegas, NV USA #C17LV
▪ Session Timeout (less than 1 hour)
▪ JDBj Database Connection Timeout (Less than 30 mins)
▪ JDBj Database Pool Setup
▪ [CONNECTION POOL]
▪ minConnection=5 (default is 0) (for unique proxy users set to 0)
▪ maxConnection=max users (for unique proxy users set to 5)
▪ initialConnection=5 (default) (for unique proxy users set to 1)
▪ poolGrowth=10 (default is 5) (for unique proxy users set to 1)
▪ Caches▪ JDBj to no more than 10 mins
▪ Resultset to no more than 3 mins
#5 Performance – Parameters
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#6 Performance – Track ER Loops
• Event Rules are interpreted by JAS in real time
• ER loops can cause high CPU and memory consumption
• How to find out?
• Set Long Loop Warning Threshold (jas.ini) to 1000
• If a process performs more than 1000 iterations a message is logged
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#6 Performance – Track ER Loops
• Message on JAS log
• Typical causes• Code issue/bug
• End-user mistake
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#7 Database Monitoring - I/O Latency
• Measure Latency • SQL DMVs: Join sys.dm_io_virtual_file_stats and sys.master_files
• Read Latency: CEILING((io_stall_read_ms / ( 1.0 + num_of_reads)))
• Write Latency: CEILING((io_stall_write_ms / ( 1.0 + num_of_writes)))
• Oracle: AWR / Foreground Events
• “Acceptable” Latency (μ ± 2σ ≈ 95%)
Type Read Write
Sequential < 20ms < 10ms
Random < 25ms < 20ms
Total < 25ms < 20ms
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#8 Database Monitoring - Blocking
• Blocking vs Locking
• What causes blocking• Concurrency? Poor I/O? Code bug? DB Misconfiguration?
• Identify • SQL DMVs
• dm_exec_requests + dm_os_waiting_tasks + dm_exec_sql_text
• Oracle• v$lock + v$session
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#9 Database Monitoring - Long running SQL
• Monitor• SQL: dm_exec_query_stats + dm_exec_sql_text• Oracle: v$session_longops + v$session
• Research• Find source process
• Potential fixes• Application Query Security• Data Selection Security• Create Index(s)
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#10 JDE Monitoring – Zombie Kernels
• Use Server Manager for alerting
• Call Object kernels are the most common zombie kernel
• Clear zombie only after all the necessary data is collected• Type• PID• Number of threads• Users on each thread• Call stack
• Research• ESUs?
• How to Troubleshoot Call Object Kernel Zombie Issues (Doc ID 837800.1)
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#11 JDE Monitoring – Call Object Stats
• What are your most executed BSFNs?
• What are the most time consuming BSFNs?
• What BSFNs timeout the most?
• How• Manually export data from Server Manager JAS Instance
• Prism (TBD)
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#12 JDE Monitoring – Batches
• Anomalies• Errors• Queuing
• Critical Jobs completion
• Volume• Most frequent vs. Longest running
• How• Custom queries/scripts• Prism
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#13 JDE Monitoring – Response Time
• Monitor end-user performance
• How long is it taking to logon?
• How long does it take to open P4210?
• How• Oracle Real User Experience Insight
• Prism Virtual User
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#14 – JDE CNC – 9.2.1 Files in DB
• All file based objects (BSFN, BSSV, TBLE, etc..) in DB• One-time migration to DB (first package / pathcode)• Simplify backups• Easier pathcode refreshes
• All media objects are only supported in the database• All new attachments go to the DB automatically• Existing attachments require UBE execution• How about integrations/interfaces?
• PrintQueue optionally supported in the database• Facilitates maintenance• Simplifies active/active deployments
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#15 – JDE CNC – Compare Specs vs DB
• Execute R9698711 once a quarter against Production
• Generate missing tables via OMW (R98403G if many)
• Generate all missing indexes via OMW (R9698713 if many)
• Fix any column mismatches
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#16 – JDE CNC – Technical Purges
• Database• Job Master +
Dependencies
• Subsystem
• Workflow
• Workcenter
• Scheduler History
• Package History
• Security History
• Orphan Security Entries
• Orphan User Overrides
• Files• Log files
• PrintQueue
• Temporary files
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#17 – JDE CNC – OMW Backup Rule
• Create a Production Save Location to back up production objects before they get replaced
• Create new status code and activity rule prior PD
• Make sure users/developers cannot bypass the PD save on promotion
• Use Row exit “Backup Rule”
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#18 – Change Webclient Background
• To distinct between the different environments
• Since TR 9.1.x single webclient.css file change
• Use F12 in chrome to choose a color
• Find and replace the #1e4a6d in the webclient.css with the color of your choice
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#19 – Fat Client Housekeeping
• Multiple pathcodes on the same fat client can be an issue
• Create bat file to save off and handle required files
April 2-6, 2017 in Las Vegas, NV USA #C17LV
#20 – JDE CNC – Packages
• Retention• No more than 2 full / pathcode• No need to keep updates for older full packages• No more than 20 updates / full package• Full package for each pathcode should be built at least every 6
months
• Be consistent with your name convention
• Do not use compression
• If you built more than one package / week you should automate it http://packman.forzaconsulting.eu/
April 2-6, 2017 in Las Vegas, NV USA #C17LV
• Packman mobile application (Android, iOS, Windows)• Review projects ready for package build
• Advance project statuses
• Start package builds
• Monitor builds
#20 – JDE CNC – Package Automation
http://packman.forzaconsulting.eu/
April 2-6, 2017 in Las Vegas, NV USA #C17LV
Prism
• Modules• Job Monitor• Log Monitor• Virtual User• Database Monitor• Data Integrity Monitor• Record Reservation Monitor• Technical Purges• Latency Monitor• BSSV Monitor• Best Practices• FraudPatrol