Advanced Supply Chain Planning


• • • • • • • •

Module Objective Memory Based Planning (MBP) Overview Ilog Technologies Supply Chain Optimizer High Level Scheduler Memory Based Planner (MBP) Memory Based Planner Database Maintenance Simulation Planning

Memory Based Planner
Oracle Applications 10.7 / 11.x / 11i Application Data Repository
APS Snapshots APS Views

Oracle Applications 10.7 / 11.x / 11i Application Data Repository
APS Snapshots APS Views

Advanced Planning and Scheduling
Global Available to Promise

Staging Tables Collection Work Bench

Key Transformation

Planning Data Store Planner’s Work Bench

Operational Data Store

Global Available to Promise Simulation Planning

$APPLCSF/out/ASCII Flat Files

Advanced Supply Chain Planning Planner’s Work ASCII Flat Files Supply Chain Optimizer High Level Scheduler Bench updates

Copyright © Oracle Corporation, 2000. All rights reserved.

ASCP Processing
Planning Snapshot:
• ODS and/or PDS writes to ASCII flat files. The practice of deleting these ASCII flat files is

rather common to save space. Please note that if these files are not present for a specific plan, simulation re-plans are not possible. The MBP would have to be launched again and new ASCII flat files would have to be created.
• The process uses $APPLCSF, if set. If $APPLCSF is not set, $MSC_TOP/out is used.

They can be identified by their extensions of .ctl, .dis, .dat and .bad.
• MBP Performs loop checking/ low level code computations while MBP loads data from flat


. Oracle Advanced Supply Chain Planning Engine Oracle Memory Based Planner (MBP) Ilog Supply Chain Optimizer (SCO) Ilog High Level Scheduler (HLS) Advanced Supply Chain Planner (ASCP) There are three components to the Advanced Supply Chain Planning Engine (ASCP). Data conversion during processing does not need to occur.Memory Based Planner: • Load Flat files to MBP trees. thus performance of the ASCP plan is not affected when data is transferred between Ilog modules and Oracle's Memory Based Planner (MBP). These three components share a common data model and are linked together in a single executable named MSONEW. •MBP is invoked to prepare data for SCO •Invoke SCO •Invoke MBP for netting purposes • Invoke HLS • Write output to ascii flat files • Load data to PDS. possibly consuming a partition If the profile option Direct Load is set to yes. all SQL*Loader issues apply.

Optimized. • • ASCP creates infinite.netting and planned order placement HLS . Alternate suppliers. A constrained plan respects the realistic limitations of the defined supply chain. Virtually every plan will have exceptions. ASCP recognizes these shortcomings and produces resource and material constrained plans that are optimized to meet business objectives while alerting the user to exceptions that exist while producing to the plan. Constrained. From the inability to secure raw materials to resource shortages.The three modules perform specific functions critical in producing an MRP plan that can be produced within the manufacturing organization. Every entity in the supply chain. ASCP Components: SCO .suggest planned orders after considering all constraints MBP .allocation and optimization of resource usage Advanced Supply Chain Planning (ASCP) operates in three modes. resources and substitute components offer greater flexibility when key production participants are taxed beyond ability or availability. the ASCP engine will not violate available resources or stated supply to meet on time deliveries. An optimized plan manipulates and delivers ASCP output that best matches the stated plan objectives. ASCP simultaneously plans material and capacity while considering the weighted objectives of optimization settings. • An unconstrained plan offers the ability to execute ASCP without respect to material or capacity constraints. and maximize overall plan profit. Plans may also be optimized to meet business objectives such as On Time Delivery. This is the logic offered previous to 11i. The MBP will assume infinite capacity and infinite supply. constrained and/or optimized MRP plans that are coordinated for each organization defined in the plan. . Constraints must be used if optimization if desired. that is defined. will be exploited to the extent that it offers resources or materials required to meet the given demand. Unconstrained. If the plan is setup to maximize on time delivery. maximize on time delivery. minimize inventory costs. Objectives include maximum inventory turns. A constraint-based scheduling engine will ensure the plan is feasible and respects all of given material or resource constraints. Exception messages relating to late delivery are still likely given the available materials and resources. Materials and resources limit the maximum production output of the manufacturing plant.

Memory Based Planner . SCO. HLS make a unique executable. so critical I/o bottlenecks are avoided • We use the existing MBP data model thus reducing the possibilities of new bugs • Process lifecycle is shortened . Ilog has excelled at delivering programmatic solutions that resolve complex problems. Additional information concerning Ilog may be obtained at www. The advantages are: • All executables and data are in memory. complementary optimization technologies covering the entire breadth of industry problems. sharing the same memory.ilog. Based in France. from high-level planning to tactical operations.ILOG Only Ilog supports multiple.MSONEW Oracle Advanced Supply Chain Planning Engine Oracle Memory Based Planner (MBP) Ilog Supply Chain Optimizer (SCO) Ilog High Level Scheduler (HLS) Third Generation of Material Requirements Planning in What does Memory Based actually mean? The three executables. MBP.

feasible answers. • Cplex uses techniques from linear programming and mixed integer programming. Given stated demand. the volume of exception messages created will fluctuate. limited materials and resources. which require fast.MSONEW Oracle Advanced Supply Chain Planning Engine Oracle Memory Based Planner (MBP) Ilog Supply Chain Optimizer (SCO) Ilog High Level Scheduler (HLS •C library used in solving large-scale optimization problems in the area of planning and resource allocation. • Constraint programming uses information contained in the problem to prune the search space. • It is important to note that as you adjust Penalty Factors or Plan Objectives. what is the proper order of manufacturing and what is the most efficient use of resources. in order to more rapidly identify feasible solutions. constrained time. An MRP plan is good example of this. Resources considered in the problem area include: • Transportation • Supplier Capacity • Material On Hand • Available Resources .ILOG CPLEX Supply Chain Optimizer . It is ideally suited for operational problems.

given finite capacity while considering practical industrial constraints. . best fit plan honed to user settings ths on fM tof :Cu RP M To Available Resources Tim e Given Constraints The SCO makes several passes at the planning problem eventually making the determination that further analysis would provide diminished results. X represents attempts at problem resolution by the SCO. As indicated in the diagram above.Supply Chain Optimizer (SCO) Overview D e m a n d S u p p l y Possible plans produced during SCO passes Given Constraints x x x x Optimized. • Given an amount of TIME. • Oracle ASCP solves the problem of planning the production of ordered products. as indicated by the setting of the MRP:Cutoff Months profile option.

The most efficient use of resources is an example of this type of problem. The ASCP engine must take over at some point otherwise the SCO engine would execute until the results were as near perfection as possible. like products.• Allocated with available RESOURCES as made available from the source Application Data Store (ADS) instances. Given a proposed schedule of resource utilization. supply. netting. the High Level Scheduler (HLS) produces optimal resource usage decisions aiding in the delivery of production and distribution plans for each organization's resources. High Level Scheduler . The ILOG Solver or High Level Scheduler is a C++ library for solving problems in planning. Incorporated with third-generation memory based planning. and optimization exploiting constraint programming and object oriented programming. • Oracle ASCP stops the processing of SCO when the results produced are within an acceptable tolerance range when compared to a best previous plan in the current session. . comparing costs. allocation.MSONEW Oracle Advanced Supply Chain Planning Engine Oracle Memory Based Planner (MBP) Ilog Supply Chain Optimizer (SCO) Ilog High Level Scheduler (HLS) ILOG solver and optimization technology optimizes plans to strategic objectives. • Assigned a number of TASKS contained within demand. demand dates and resource availability. etc. fine tune and hone the resource usage by grouping like activities.

Above. the resource is insufficiently utilized as indicated by the gray shaded boxes.High Level Scheduler (HLS) Overview Resource Utilization Before HLS Day 1 8am 9am 10am 11am 12pm 1pm 2pm 3pm 4pm 5pm Day 2 8am 9am 10am 11am 12pm 1pm 2pm 3pm 4pm 5pm Day 3 8am 9am 10am 11am 12pm 1pm 2pm 3pm 4pm 5pm Day 4 8am 9am 10am 11am 12pm 1pm 2pm 3pm 4pm 5pm Day 5 8am 9am 10am 11am 12pm 1pm 2pm 3pm 4pm 5pm Resource Utilization Before HLS MBP produces planned orders with a start date that is indifferent to resource utilization concerns. The white boxes indicate times when the resource is not being scheduled to fulfill a planned order. Planned order start dates can leave a resource schedule similar to the schedule above. .

there may be resource downtime due to supply chain lags. The above graph indicates that HLS has utilized the resource to the best of it’s ability leaving few times of resource utilization lags.High Level Scheduler (HLS) Overview Resource Utilization After HLS Day 1 8am 9am 10am 11am 12pm 1pm 2pm 3pm 4pm 5pm Day 2 8am 9am 10am 11am 12pm 1pm 2pm 3pm 4pm 5pm Day 3 8am 9am 10am 11am 12pm 1pm 2pm 3pm 4pm 5pm Day 4 8am 8am 9am 10am 11am 12pm 1pm 2pm 3pm 4pm 5pm Day 5 8am 9am 10am 11am 12pm 1pm 2pm 3pm 4pm 5pm Resource Utilization After HLS After the HLS finishes smoothing resource utilization. These data files can be captured by executing the following commands: . HLS Data Files If you are experiencing problems with the HLS. As data is unloaded from the MBP. resource maintenance and user defined plan objectives and penalties. you may need the HLS data files. data files are prepared that are loaded into HLS. The results of HLS processing will change the planned order start date prior to the plan results being delivered to the end user.

sh force=y "mso MSONEW" Extracting MBP and HLS debug and data files from the ASCP MSONEW executables: 1) Determine the unix shell being used: $ echo $SHELL /bin/ksh or $ env | grep SHELL SHELL=/bin/ksh 2) Depending upon the shell being used.704.AU.20454 $ export FDWHOAMI csh (cshell) setenv FDWHOAMI 0. The command to relink is as follows: issue adrelink. consider attempting the Advanced Supply Chain Planner Memory Based Planner after relinking the MSONEW executable: Adrelink. This patch is included in AD-D 1627493 and above and in 11i.58 or up to this version. Ensure that space and privileges are should be at version 115. Apply patch 1497013 to bring adrelink.C 1622303 and above. . set the FDWHOAMI variable: ksh (korne shell) $ export FDWHOAMI=0.20454 sh (bourne shell) $ FDWHOAMI=0.704.It is highly recommended that an extraction of MBP data files be supplied to Development before discussing MSONEW/HLS behavior or MSONEW/HLS errors.704.20454 Verify that FDWHOAMI is set by: $ echo $FDWHOAMI 3) Make a directory that will hold the data files: $ mkdir data under $MSC_TOP. Before proceeding.

cd $MSC_TOP/data . Alternatively.4) Attain the plan_id: The plan id may be obtained either from the planner work bench by using the drop down menu: Help/Diagnostics/Examine. execute the following query from sqlplus: select plan_id from msc_plans where compile_designator='&plan_name'. * NT instructions will be available via Metalink.tar -cuf data. 5) $MSO_TOP/bin/MSONEW <dbuser/passwd@db> 0 Y -d <plan_id> db is the database sid or instance 6) After the Memory Based Planner . tar the files in the $MSC_TOP/data directory.tar data 7) Upload the tar file and log files from the MBP process to Metalink. Then look for plan_id. .MBP process completes. .

discussed above. (C . additional adjustments need to be made to the planned orders. MBP massages data before HLS is invoked (C++ .Function).Function).7 and 11. Run HLS and output results to the common C-data structures Write data from Oracle Temporary Tables to ASCII Flat Files Inside the Memory Based Planner Loop checking is done in the snapshot as well as low level computations. combined together.Function) Run MBP and flush output data back to Memory. This.x. in memory data model.Function) if Supply Chain Optimizer Module is invoked: (C++ . raise your stack size if looping becomes and issue. • The processing flow of MSONEW is new to APS. (C . is the existing C MBP data model currently used in 10. Sourcing and BOM. time fences and dates. make ASCP. Run SCO and Output results to the common C-data structures Plan problem in memory and update data structures with output results. In Unix. sharing the same memory. additional data manipulation must take place. . Loop checking is done for WIP. With the introduction of ILOG libraries. make a unique executable. These modules.Load all planning data from files into data structures in memory. The difference is that C++ data wrappers are added to the data to make it presentable to the ILOG modules. As we pass supply/demand information to ILOG and receive possible plans from ILOG. • The three sequential modules.

MBP performs netting and flushes the results into ASCII flat files. • This leaves remaining plans.The MBP is an Application Object Library (AOL) concurrent program called MSONEW. this functionality will not allow for the concurrent execution of multiple MBPs at the same time. residing in their respective plan partitions. However. active and available to users via the Planner's Workbench. Completion of ASCP When Using Plan Partitions MSONEW Completes Processing Planning Marks PDS Partition as Unusable Unusable PDS Partition is Truncated ASCII Flat Files Swapped into Unusable PDS Partition Unusable PDS Partition is Truncated ASCII Flat files produced by the MBP are deleted after being loaded into the PDS. • While the data is swapped from the Oracle temporary tables into the PDS data store. the active partition is marked as unusable while the swap occurs. Finally loading these changes into PDS NOTE: MSONEW is launched when Constraints or Optimization is used or licensed. . MSCNEW is used when the constraint option is not chosen or installed. MBP will cache data objects within your APS server memory.

Please see the section regarding partitions to enable the partition indexes. Load Simulation Changes from PDS Applied = no and status = 0 This is done for each data that is changed via Planner’s Workbench Load ASCII flat files from previous ASCP execution Load data into MBP afresh Perform all necessary MBP/SCO/HLS data manipulations Write ASCII flat files Update PDS data store Erase PDS ASCII Flat Files Copyright © Oracle Corporation. The MBP will have to delete the MBP data from the prior successful MBP for the specific plan. the above functionality is not used. • If the ASCP process fails during the truncation and swapping process.• Once the data is swapped from memory into the correct plan partition. execution occurs as before MBP ran. the partition is marked as active. 2000. Demand. Resource Requirements. All rights reserved. the local partition indexes could be left marked as unusable. Resource Availability . • If MSC:Share Plan Partitions is set to YES. Simulation Planning The five data groups that can be manipulated for simulation replan purposes are: Supply. Supplier Capacity.

These attributes are used to identify and load these changes back into MBP. This information may prove useful when saving data files for simulation planning purposes. msc_plans b where b. These changes are saved by the PWB with applied = ‘N’. For example. select SCHEDULE_DESIGNATOR_ID sch_desg.50). No information is available concerning the file_type code meanings. file_creation_date from msc_files a. select substr(file_name. and status =0. Data changed by the workbench is written into the PDS. the query below joins the plan_id of msc_plans to msc_files to retrieve the . The FILE_NAME column contains the name of the data file generated during the last plan run.plan_id = b.1. MRP or DRP plan. SR_INSTANCE_ID. These are the data files that are required for simulation planning purposes. Simulation Planning This SQL will reveal the rows in msc_demands that have been changed within the Planner's Workbench while preparing to execute a simulation plan. The FILE_TYPE column contains predefined values that are used during a planning run. APPLIED from msc_demands where applied = 2. or 2. adding a new resource would trigger additional replanning activities. Based upon the compile_designator found within msc_plans.plan_id. PLAN_ID. The above select would extract data from the Planning Data Store (PDS).Simulation Change Detection Simulation changes are changes affected by the user using the PWB. SCO and HLS may decide to plan for assemblies and/or components that have been affected by user changes introduced via the Planner’s Workbench. INVENTORY_ITEM_ID. MSC_FILES The MSC_FILES table is used to store the list of files which are used in the generation of an MPS. .dat files created during the planning run.compile_designator = '&my_plan' and a. Data in this table is updated each time a plan is run.

Set the pctfree to a lower number if the table is expected to grow.sql will analyze the MSC schema. Additionally. • • . • • • Analyze (Gather Schema Statistics) • 11i uses the Cost Based Optimizer (CBO).ASCP Performance Performance problems are easy to detect. Your init. $MSC_TOP/sql/MSCSTAT. leaving zero bytes free for row expansion. Since data rows within the PDS does not expand in size. these general tips may improve your performance. Alternatively. is a logical approach. Analyze should be performed on a regular basis according to your resource usage. Storage clauses control the spread of data within Oracle blocks. This tends to give the appearance of improved performance. but the root cause is often difficult to diagnose. Pctused and Pctfree determine the usage of Oracle blocks for row storage. Obviously a shop where ASCP is ran more often would require more frequent execution of analyze. It is strongly recommended that you use the Oracle supplied utility for analyzing. submit the concurrent program 'Gather Schema Statistics' for MSC. If you believe the performance of ASCP unacceptably slow or if you've noticed a degradation of performance over time. Pctused is not is important as pctfree. as the user does not have to wait for the entire data set to be extracted before being presented with the set. instructing the Oracle RDBMS to fill each row. If the table(s) indexed are not subject to growth. PCTFREE: • Make sure the database objects in the MSC schema have a PCTFREE of zero. Pctused instructs the Oracle RDBMS to begin using the same Oracle block for another row after row length * pctused is used. When building your indexes consider setting the pctfree to zero. It is recommended that you set this to CHOOSE or FIRST_ROWS. FIRST_ROWS simply returns the first rows from a data set as extracted from the RDBMS by SQL.ora should reflect this change. At a number of sites the major tuning act we have accomplished has been to improve the blocking factor on an otherwise fixed I/O bound application. Improper blocking and a pctfree > 0 can have a profound effect on performance. Pctfree instructs the Oracle RDBMS to leave a percentage of the row length * Pctfree available for row expansion. setting the pctfree may improve disk access.

This script should be executed from SQL*Plus if executing Gather -.Complete refresh.granularity=>'ALL').'MSC_SUPPLIES'. PROMPT TABLE MSC_PLANS exec fnd_stats.• Analyze each partition separately using the following: -. PROMPT TABLE MSC_BOM_COMPONENTS exec fnd_stats.'MSC_SYSTEM_ITEMS'.granularity=>'ALL').'MSC_BOMS'.gather_table_stats('MSC'.granularity=>'ALL').Schema Statistics for ALL or MSC has not enhanced performance. .gather_table_stats('MSC'.'MSC_PLANS'. -------- PROMPT TABLE MSC_COMPONENT_SUBSTITUTES exec fnd_stats. PROMPT TABLE MSC_SYSTEM_ITEMS exec fnd_stats. PROMPT TABLE MSC_PLAN_ORGANIZATIONS exec fnd_stats.gather_table_stats('MSC'. PROMPT TABLE MSC_SUPPLIES exec fnd_stats. PROMPT TABLE MSC_DEMANDS exec fnd_stats. -. PROMPT TABLE MSC_EXCEPTION_DETAILS exec fnd_stats. PROMPT TABLE MSC_FULL_PEGGING exec fnd_stats.granularity=>'ALL').'MSC_FULL_PEGGING'.Gather ASCP Table Partition Statistics --.It is recommended that this form of analyze be executed after every -.gather_table_stats('MSC'.significant amounts of data or after an MBP plan has been executed.gather_table_stats('MSC'.'MSC_BOM_COMPONENTS'.granularity=>'ALL').granularity=>'ALL').'MSC_DEMANDS'.'MSC_COMPONENT_SUBSTITUTES'.gather_table_stats('MSC'.gather_table_stats('MSC'.granularity=>'ALL').gather_table_stats('MSC'.'MSC_EXCEPTION_DETAILS'. PROMPT TABLE MSC_BOMS exec fnd_stats.'MSC_PLAN_ORGANIZATIONS'.granularity=>'A LL').gather_table_stats('MSC'.granularity=>'ALL').granularity=>'ALL').gather_table_stats('MSC'. after a partial refresh that has added or deleted -.

granularity=>'ALL'). PROMPT TABLE MSC_ITEM_EXCEPTIONS exec fnd_stats.'MSC_ROUTING_OPERATIONS'.granularity=>'ALL').gather_table_stats('MSC'. PROMPT TABLE MSC_RESOURCE_REQUIREMENTS exec fnd_stats.gather_table_stats('MSC'. PROMPT TABLE MSC_ROUTINGS exec fnd_stats.'MSC_NET_RESOURCE_AVAIL'.'MSC_ITEM_EXCEPTIONS'.gather_table_stats('MSC'.gather_table_stats('MSC'.'MSC_SALES_ORDERS'. PROMPT TABLE MSC_OPERATION_RESOURCES exec fnd_stats.granularity=>'ALL').gather_table_stats('MSC'. PROMPT TABLE MSC_NET_RESOURCE_AVAIL exec fnd_stats. PROMPT TABLE MSC_OPERATION_RESOURCE_SEQS exec fnd_stats.granularity=>' ALL'). .PROMPT TABLE MSC_ITEM_CATEGORIES exec fnd_stats.granularity=>'A LL').gather_table_stats('MSC'. PROMPT TABLE MSC_SALES_ORDERS exec fnd_stats.gather_table_stats('MSC'. PROMPT TABLE MSC_ROUTING_OPERATIONS exec fnd_stats.granularity=>'ALL') .granularity=>'ALL').granularity=>'ALL').'MSC_ROUTINGS'.'MSC_OPERATION_RESOURCES'.'MSC_OPERATION_RESOURCE_SEQS'.granularity=>'ALL').'MSC_ITEM_CATEGORIES'.'MSC_RESOURCE_REQUIREMENTS'.gather_table_stats('MSC'.gather_table_stats('MSC'.

Use the following SQL to determine pctincrease changes..'||segment_name||' storage(pctincrease 0). This program identifies the max SWAP area (memory) limit. which correlates to the Maxdsize parameter. MSC. account for the pct increase for each database object and the default settings for the tablespace. This is a Unix parameter. At the shell prompt type: ulimt -a to identify Data swap area. This script will identify database objects that require pctincrease adjustment. i.' from dba_segments where pct_increase > 0 and (segment_type = 'TABLE' or segment_type = 'INDEX') and owner = 'MSC'.fnd_oracle_userid). Oracle recommends a pctincrease of 1. Verify that apps is using the same max memory allocated. select 'alter '||segment_type||' '||owner||'. CC -o <<file name >>.' from dba_segments where pct_increase > 0 and (segment_type = 'TABLE' or segment_type = 'INDEX') and owner in (select oracle_username from applsys. This will avoid many of the database errors that are associated with a higher pctincrease. Compile this program.'||segment_name||' storage(pctincrease 0). ASCP and Memory As ASCP utilizes memory. Newly created database objects that lack a storage clause inherit the storage clause default from the tablespace in which the database object is created. then execute the compiled file to find hardware memory limit. If not do the following: . For ASCP processing.e. The second script is for the 11i MSC schema.PCTINCREASE When implementing the ASCP and APS suite. select 'alter '||segment_type||' '||owner||'. the process may experience a memory shortage.

consider resizing the MSC schema according to your specific needs. after your first complete iterations of the data collection and execution of the Advanced Supply Chain Planner. allocated++) . Default is set to: CPP_LDFLAGS='-Wl.h> main(int argc. Of course.default. While we are setting the maxextents to 4000. char *pointer.default. Under HP9000 settings is a variable called CPP_LDFLAGS. if (argc > 1) chunk = (size_m) atoi(argv[1])*1024.-a. for (allocated = force=Y ranlib=Y "mso MSONEW" Then restart the plan and check the memory used by ASCP. long file.+s -L$(LIBHOME)' Change it to: CPP_LDFLAGS='-N -Wl. pointer = (char *)malloc(chunk).-a.+s -L$(LIBHOME)' Then relink the library with the following command: adrelink. allocated*chunk). your operating system may allow for a higher setting. } /* end of program */ MAXEXTENTS This script will identify the database objects that require max extent adjustments. . char **argv) { size_m chunk. #include <stdlib.Modify the $AD_TOP/bin/adrelink. else chunk = 1024. printf("alocated %d\n".

. select 'alter '||segment_type||' '||owner||'. i. i.'||segment_name||' storage(maxextents 4000). select 'set echo on' from sys. select 'set term off' from sys.' from dba_segments where max_extents < 51 and (segment_type='TABLE' or segment_type='INDEX') and owner in (select oracle_username from applsys. inv.dual..dual.' from dba_segments where max_extents < 51 and (segment_type = 'TABLE' or segment_type = 'INDEX') and owner = 'MSC'. spo off The second script is for the 11i MSC schema.dual.fnd_oracle_userid). select 'set echo off' from sys. set lines 130 set pages 0 set feedback off set heading off set termout off set verify off spo max_extent.sql select 'spo max_extent' from sys. MSC.'||segment_name||' storage(maxextents 4000).dual. select 'spo off' from sys.The first script is for the 11i applications schema..dual. select 'alter '||segment_type||' '||owner||'. mrp. wip.e. etc.e.

Sign up to vote on this title
UsefulNot useful