cancel
Showing results for 
Search instead for 
Did you mean: 

[小讲坛]关于PSA(2)

Vince_Lu
Product and Topic Expert
Product and Topic Expert
0 Kudos

接着上次的,先聊一下PSA table内容的删除。

首先PSA table的内容都是和request关联的(上次有提到怎么看关联)。

而且在BW系统脱离request存在的数据抽取是不现实的。

(这句话怎么理解有些微妙, 比方说ODS的active table, 比方compress过的cube的E-table,request就被压缩掉了..)

所以一般认为要删除数据,就是要去删除request..

而事实上删除PSA的requeset, 并不会物理删除PSA table,而只是在RSTSODSPART里标注一个删除记号。 只有当一个partition上的request都被做了标记,才会做物理删除..

具体内容大家可以参考一下 SAP note 565176..

(以上这些只适用于oracle DB. 如果是其他的DB, PSA tables分区方式不一样,又是另外的故事了..)

然后再介绍几个PSA table的修理和检查工具..

1. RSAR_PSA_PARTITION_CHECK

这个是用来检查PSA table的索引和分区的。Note 1012607有颇为详细的介绍.

2. SAP_PSA_ZEROCORRECT / SAP_PSA_PARTNO_CORRECT

那是针对 PARTNO 被赋值为 0 的现象.

如果数据量很大,请使用 ZSAP_PSA_ZEROCORRECT_PARTS

3. RSAR_PSA_CLEANUP_DIRECTORY /_MS

这个用来检查PSA的目录表和PSA自身之间是否有不一致的数据.

往往是adminitrative table里已经显示被删掉了,但实际物理存储还有的情况。

如果发生这种情况,之前提到的PSA table的删除就无法正常进行,数据就会冗余,无效地占用硬盘空间..

4. RSAR_PSA_CLEANUP_DEFINITION

检查PSA table和DDIC之间是否有不一致.

详细请参考 SAP note 699125.

以上内容,SAP note 1150724都有介绍..

个人觉得需要留意的是BW系统使用的是哪个DB, 不同DB对PSA table的分区方式不同,

于是纠错方法和管理方法也会不同。

祝好,

Vince

Edited by: Vince Lu on Oct 5, 2010 4:16 PM

Accepted Solutions (0)

Answers (5)

Answers (5)

Former Member
0 Kudos

vince Lu

我删除了一个PSA的所有请求,日期也选了一个非常古老的日期,确定是请求被我删干净了。但我通过DTP加载时,仍然有1000多条数据,而我通过table RSTSODSPART查看删除情况时,确实有一个分区中,有一个1000多条数据的请求的删除标记不是X,但我就是没明白,为啥我在PSA把请求都已经删完了,但RSTSODSPART表里面却还有一个请求的删除标记不为X,通过RSRQ查看这个请求,发现技术状态是黄灯,而最终状态是绿灯。

请问一下,存在我这样的情况,一般是为什么呢?

以上,祝好~

Vince_Lu
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi Crazybird,

这很有可能是因为实际PSA表和control的entry, 和 fast access table(也就是存放request status的表) 之间有inconsistency..

我建议您用提高过的修PSA表的report先跑一下试试看..

祝好,

Vince

derek_li2
Discoverer
0 Kudos

猛一看还以为是石油行业的PSA解决方案呢。呵呵

former_member408483
Participant
0 Kudos

Vince Lu 你好

感谢你的回复!

我还有个疑问: 假设一个数据源对应的PSA有个分区,里面有10个请求,我不小心删除了其中一个,现在这个被删除的请求,还能恢复吗? 就是可以在前台查看PSA的界面里可以看到这个被删除的请求.

祝好!

Vince_Lu
Product and Topic Expert
Product and Topic Expert
0 Kudos

关于"在前台查看PSA的界面里可以看到这个被删除的请求.",能否上个图让我看下确切的状态?

Former Member
0 Kudos

Vince Lu

请问在哪里可以查看已经做了删除标记但还没有物理删除的详细PSA数据呢?

Vince_Lu
Product and Topic Expert
Product and Topic Expert
0 Kudos

rstsodspart这张表啊..

former_member408483
Participant
0 Kudos

Vince Lu 谢谢您的分享

我有个问题想请教一下.

"而事实上删除PSA的requeset, 并不会物理删除PSA table,而只是在RSTSODSPART里标注一个删除记号。 只有当一个partition上的request都被做了标记,才会做物理删除"

我怎么去掉已经在RSTSODSPART这个表里标注删除记号的REQUEST,让这个请求重新在DS对应的前台里出现.?

因为我查看您给的那几个系统PSA程序,好象没有可以恢复已经在前台删除请求的REPORT.

请赐教!!

Vince_Lu
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi Xinzhai,

或许有些误会..

"只是在RSTSODSPART里标注一个删除标记"里的"只"强调的是 PSA table本身(也就是实际存放PSA内容的 /bic/b*000 这个PSA 表) 不一定会被立刻删除(只有当整个paritition的request在RSTSODSPART里被标上删除标记).. 提这一点的侧重点是PSA的空间管理.

实施上删除PSA表时,有一系列表,比方说 RSREQICODS, 会被删除相关的entry.

所以单纯修改 RSTSODSPART 里的deletion flag不能恢复数据。并且不建议直接修改RSTSODSPART 表,以免发生不必要的数据不整合。 RSTSODSPART 这个表本身就设定为不能修改的。想要修改的话,要么进debug mode"作弊",要么些local sql去改.. 在没有SAP相关部门的提示下, 不建议客户做这一步..

以上,祝好..

Vince

Former Member
0 Kudos

谢谢vince!

实际中,特别是增量更新的psa,技术状态显示未往上更新,可在往dso加载时,显示传输数据为0,不管加载多少次,都是0,而再执行一次delta的psa,再往上加载时,两次执行的信息包的数据全部加载上去了,我就奇怪了,为什么前一次的就是无法往上更新了,并且我发现,这种情况很多时候是在我往dso加载过程中,出错,然后删掉dso对应的这个请求,再次加载就是0,而这个时候,我将DTP的语义组中的勾全部去掉,再次激活,再传输,又成功加载上了。可有时候这样也不管用,只有加载第二次后,再网上传输,前一次的数据才会连带一起上载

我还遇到过在psa表中,请求是全部被我删光了,但往上加载时,仍然有数据,这种情况是不是你说的,只给了一个删除标志,而非真正的物理删除,用的是sql server 2005,这种情况下,是不是要借助RSAR_PSA_CLEANUP_DIRECTORY /_MS ?

还有,我在通过psa往信息对象加载主数据时,比如0PRICE_LIST(价格清单类型),它只包含文本,TEXTS 0PRICE_LIST(价格清单类型 (文本)),我把数据从psa加载到它时,每次都有一个请求,对于主数据,每天都会抽取,也就生成了很多个请求,请问一下,加载到TEXTS 0PRICE_LIST的请求的数据,是否只保存到了table /BI0/TPRICE_LIST,就如传输到DSO的请求,并且使用关键值覆盖那样,虽然传输了多个请求,但只更新新的数据到数据表,或者,TEXTS 0PRICE_LIST(价格清单类型 (文本))本身就对应一个数据表,然后每次有请求,就把数据扔里面,然后再去更新/BI0/TPRICE_LIST,这张假设,主要是想到每次有新数据更新,都需要激活,不然取到的数据仍然是之前的。 并且,右键点击TEXTS 0PRICE_LIST(价格清单类型 (文本)),选择管理,有几百个请求,有没有什么方法可以一次性全部删掉啊?或者删掉30天之前的,处理链可以删掉30天之前加载的信息包,但这个请求貌似删不掉。

不好意思,自己写得有些杂,您有空的时候帮我解答一下吧,再次感谢Vince~

3Q

Best Regard!

Vince_Lu
Product and Topic Expert
Product and Topic Expert
0 Kudos

Hi Googleme,

首先非常感谢你的反馈..

关于 PSA -> DSO 的delta加载的问题,感觉是datamart的status table的问题.

出问题的时候,你先检查下 RSSTATMANREQMAP 要不。

我所说的"只给了一个删除标志,而非真正的物理删除",是对于PSA空间管理而言的。

如果正常删除的话,及时在DB层面没有被物理删除,也不会被继续往上加载。

关于0PRICE_LIST的文本信息的更新,这个就不是PSA的问题,而是主数据的加载问题了..

为了不要和PSA混淆起来,要不另开一贴讨论吧?

谢谢并祝好,

Vince