1、针对每个session,排序首先会使用sort_area_size ,假如不足则会使用临时表空间。

2、sort_area_size以字节为单位,指定排序所使用的最大内存量。


3、修改sort_area_size参数。

3.1 alter session set sort_area_size=3000000 使得新值只对当前连接生效;

3.2 alter sysetm set sort_area_size=3000000 deferred使得新值对随后登录的账号生效,而对当前连接不生效;

3.3 alter system set sort_area_size=3000000 scope=spfile使得新值在数据库重新启动后生效;

4、问题:

激活DSO一会就dump:
Database error text: "ORA-12801: error signaled in parallel query server
P000#ORA-01652: unable to extend temp segment by 128 in tablespace PSAPTEMP"

The symptom solution, of course, is to increase the size of your TEMP tablespace, or better still, increase your sort_area_size.  If this job is running batch, you can do this with an alter session command, as this this case, to one gig:

alter session set sort_area_size = 1,048,576,000

5、解决方法:

5.1 root用户登录系统;

5.2 切换到oraSID用户下(su - oraSID,SID是数据库的SID);

5.3 执行sqlplus /nolog语句,进入sqlplus界面;

5.4 执行conn / as sysdba,以操作系统管理员的身份登录到oracle中;

5.5 修改sort_area_size参数,语句是alter session set sort_area_size =1048576000。

PSAPTEMP临时表空间查看free是100%,是因为激活DSO失败,所以PSAPTEMP表空间释放了。

6、故障原因:

如果处理后台作业的系统表过大,整个后台作业本身性能就会降低,DSO数据激活是通过后台作业进行的,势必也会降低处理速度。所以,作为第一步,请相关的basis技术人员检查一下后台作业系统的情况,是否安排了过多不必要的后台作业占用了过多资源(清理后台作业系统的方法有RSBTCDEL2, SM65等等,请咨询Basis技术人员)。

6.1 确保数据库中DSO相关的表格都有最新的统计信息(statistics),这样读取更新数据库就能有更好的性能。

6.2 如果您的应用并不在该DSO上直接生成报表,就不要在激活数据时选择生成SID,这样会大大减少数据激活所需要的时间。通常在一些数据激活的后台作业日志(job log)中,我们会看到大量的时间都花费在运行后台作业BIBCTL_*(程序为RSBATCH_EXECUTE_PROZESS)上了。 RSBATCH_EXECUTE_PROCESS是用来产生SID的。如果你不在这个DSO出报表直接查询里面的数据,那么就在DSO维护界面里面去掉“激活时生成SID (SID Generation upon activation)”的选项。你可以在DSO维护界面里“设置 (Settings)”部分找到这个选项。.

6.3 在事务代码RSODSO_SETTINGS中调整相关参数可以帮助提高激活性能。在此您可以调整影响所有DSO的全局参数,也可以调整针对某个特定DSO的参数。

参数的详细介绍,请仔细阅读SAP Note 1118205 - RSODSO_SETTINGS Maintain runtime parameter of DSO