oracle+ascp与mrp区别,管理APS PARTITIONS学习笔记之二(操作篇)

APS(Advanced Planning System)使用分区来提高数据处理性能,ODS和PDS数据分别存储于不同的分区中。ODS收集原始数据,PDS存储ASCP处理后的数据。系统根据familypack级别设定分区数量,且支持删除和创建分区。误删模板分区可能导致严重问题,需谨慎操作。数据清理和计划管理可通过特定SQL脚本完成。
摘要由CSDN通过智能技术生成

什么是APS partitions?

APS利用分区来隔离数据,数据在不同的分区操作提高了整体性能。ODS和PDS的数据存储在同样的表中,并以

plan_id划分成不同的分区。分区表的数量根据系统的family pack级别而定。ODS存储的是收集来的数据。数据收集完成后,分区的数据将插入到ODS实例分区。插入的行plan_id为-1。如果多个ORACLE INSTANCE数据被收集,实例数据将在各自单独的ODS实例分区。此时表中将含有SR_INSTANCE_ID 或者INSTANCE_ID

字段用来区分ERP source instance。

PDS存储的是ASCP计划后的数据。ASCP跑完后,得出的数据将插入PDS计划分区。这些行的plan_id将>0

默认设置下,每个计划有一个自己的计划分区。

APS默认安装了1个实例分区和5个计划分区。可以用以下SQL查询:

SQL #1

-- Run this from SQL*Plus the column HIGH_VALUE is column type LONG and

will not format correctly in a spreadsheet

set lines 200

set colsep |

spool SQL-1_137293.1.txt

SELECT table_name, partition_name, num_rows, high_value, sample_size, last_analyzed, global_stats

FROM all_tab_partitions WHERE table_name like 'MSC%'

order by substr(partition_name,instr(partition_name,'_',-1,1)+1) -- To check the partition count of each table use order by table_name, partition_name

spool off

其中SYSTEM_ITEMS_0的分区表为模板分区,千万不要删除。有两个下划线的分区表为实例分区,如SYSTEM_ITEMS__1。其它的为计划分区。比如SYSTEM_ITEMS_1到SYSTEM_ITEMS_5为5个计划分区。它们共同的表为MSC_SYSTEM_ITEMS

如果启用了MSC: Share Plan Partition = Yes选项,这里将只有一个共享计划分区:SYSTEM_ITEMS_999999

ODS/PDS的数据如果你进行了误操作,都没有关系。ODS的数据可以再次运行计划收集来获得,PDS的数据可以通过运行ASCP来获得。但是如果模板分区被删除了,那就只能通过系统恢复的方法了,所以一定要小心!

删除分区/计划分区与创建APS分区的并发请求。

千万不要删除模板分区!

从11.5.9这个版本开始,既可以删除计划分区也可以删除实例分区。这取决与Plan参数的设置。

在11.5.6-11.5.8版本,仅能通过请求名为“DROP PLAN PARTITION"删除计划分区。删除实例分区需要

手工进行。删除计划分区前需要清除计划。删除实例分区并没有移走为这个实例所收集的所有数据。以下

的SQL用来清除实例的数据。

-- This SQL will build a script to delete all tables where the instance_id column appears

set heading off

set pagesize 500

spool delete_instance_id.sql

select distinct 'delete from '||TABLE_NAME||' where instance_id = nn;' -- replace nn with your instance_id

from dba_tab_columns where column_name = 'INSTANCE_ID' and owner = 'MSC';

spool off

SQL>@delete_instance_id.sql

-- This SQL will build a script to delete all tables where the sr_instance_id column appears

set heading off

set pagesize 500

spool delete_sr_instance_id.sql

select distinct 'delete from '||TABLE_NAME||' where sr_instance_id = nn;' -- replace nn with your instance_id

from dba_tab_columns where column_name = 'SR_INSTANCE_ID' and owner = 'MSC' and table_name like 'MSC%';

spool off

SQL>@delete_sr_instance_id.sql

注意:This Script will report an error when attempting to delete from a %MV or %SN table. This error can be ignored.

删除分区或计划分区需要将这个请求加入到All MSC Reports 请求组。NAV:系统管理员-责任-请求。这些也可以用SQL实现。

创建APS分区。运行创建APS分区的请求就可以了。这个请求需要加入All MSC Reports 请求组。可以以系统管理员的职责或ASCP计划员的身份去运行请求。

注意:仅创建你系统需要使用的分区,闲置的分区会导致性能问题。建议删除不用的分区。

查看ODS分区的信息:

-- Free_flag

1 = Free

2 = In use

select instance_id, free_flag, creation_date, last_update_date from msc_inst_partitions;

查看ODS分区的状态信息:

-- ST_STATUS

0 = No source pull or collection is in process

1 = Pull and collection process has begun

2 = Collection has ended and waiting for load to begin

3 = Load has begun

4 = Load has ended and staging tables are being purged

select instance_code, instance_id, apps_ver, a2m_dblink, m2a_dblink, st_status from msc_apps_instances

查看PDS分区的信息:

select

mp.COMPILE_DESIGNATOR "Plan Name",

mp.PLAN_ID "Plan ID",

mp.SR_INSTANCE_ID "Instance ID",

mtp.ORGANIZATION_CODE "Owning Org",

mp.PLAN_COMPLETION_DATE "Last Run Date",

decode (mp.PLAN_TYPE, 1, 'Manufacturing MRP', 2, 'Production MPS',

3, 'Master MPP',4,'IO Plan', 5, 'Distribution Plan' ,

7, 'PS Production Schedule', 6, 'SNO Schedule') "Plan Type",

decode (md.PRODUCTION,1, 'Yes', 2, 'No', NULL, 'No') "Production Flag",

decode (md.LAUNCH_WORKFLOW_FLAG,1, 'Yes', 2, 'No', NULL, 'No') "Launch Workflow",

decode (md.INVENTORY_ATP_FLAG,1, 'Yes', 2, 'No', NULL, 'No') "ATP Plan",

mp.CURR_START_DATE "Start Date",

mp.CUTOFF_DATE "End Date"

from

msc_designators md,

msc_plans mp,

msc_trading_partners mtp

where

md.designator=mp.compile_designator and

md.sr_instance_id=mp.sr_instance_id and

mtp.sr_instance_id=mp.sr_instance_id and

md.sr_instance_id=mtp.sr_instance_id and

mtp.sr_tp_id=md.organization_id and

mtp.sr_tp_id=mp.organization_id and

mp.organization_id=md.organization_id

and mtp.partner_type = 3

ORDER BY "Plan Name";

查看计划分区的使用情况:

select plan_id, plan_name, free_flag, partition_number from msc_plan_partitions

注意:如果返回的记录,free_flag值没有一个是1,而这时你想定义一个计划,然后保存。系统就会报错:

“No free partitions available, Contact the DBA to create partitions”

简单描述一下这个过程:定义一个计划时,向MSC_DESIGNATORS表插入记录。然后检查MSC_PLAN_PARTITIONS

表并更新free_flag和plan_name字段的值。最后插入或更新MSC_PLANS, MSC_PLAN_ORGANIZATIONS, MSC_DESGINATORS, MSC_SUBINVENTORIES这些表。

遇到这种情况我们可以用inst_partition_count = 0 and plan_partition_count = 1参数来创建一个新的计划分区。对于11.5.10(含)以上的版本参数名叫‘Plan partition count’ and ‘Instance partition count’

ODS和PDS中的数据可以通过字段sr_instance_id (or instance_id) 和plan_id来进行区分。

plan_id = -1的数据行属于ODS,如果有多个源ERP实例被使用,可以通过sr_instance_id字段来区分。

plan_id >0的数据行属于PDS,如果有多个源ERP实例被使用,也可以通过sr_instance_id字段来区分。

用以下SQL可以获得相关信息:

select count(*), sr_instance_id, plan_id from msc_system_items group by sr_instance_id, plan_id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值