分类目录归档:原创程序

Oracle sysaux表空间占用问题处理

现象:

oracle sysaux表空间占用96%。通过awrinfo.sql报告核实组件:SM/AWR占用27,317.2 MB;SM/OPTSTAT 390.1 MB,大部分是AWR报告占用。

解决方法:

删除快照,回收表及index。

1、修改统计信息的保持时间,默认为31天,这里修改为7天,过期的统计信息会自动被删除

select dbms_stats.get_stats_history_retention from dual;

exec dbms_stats.alter_stats_history_retention(7);

select dbms_stats.get_stats_history_retention from dual;

2、删除AWR快照,最后再次查看SYSAUX表空间使用率(非业务时间,分段操作,以免引起临时空间增大)

select min(snap_id),max(snap_id) from dba_hist_snapshot;//查询最最小和最大快照ID

begin

dbms_workload_repository.drop_snapshot_range( low_snap_id => 32155, high_snap_id => 32300, dbid => 2950336419);

end;

3、回收降低水位

alter table WRH$_EVENT_HISTOGRAM move partition WRH$_EVENT__2950336419_2060;
alter index WRH$_EVENT_HISTOGRAM_PK rebuild partition WRH$_EVENT__2950336419_2060;

Oracle ebs资产调整 api例子

declare
  l_trans_rec                 FA_API_TYPES.trans_rec_type;
  l_asset_hdr_rec             FA_API_TYPES.asset_hdr_rec_type;
  l_asset_fin_rec_adj         FA_API_TYPES.asset_fin_rec_type;
  l_asset_fin_rec_new         FA_API_TYPES.asset_fin_rec_type;
  l_asset_fin_mrc_tbl_new     FA_API_TYPES.asset_fin_tbl_type;
  l_inv_trans_rec             FA_API_TYPES.inv_trans_rec_type;
  l_inv_tbl                   FA_API_TYPES.inv_tbl_type;
  l_inv_rate_tbl              FA_API_TYPES.inv_rate_tbl_type;
  l_asset_deprn_rec_adj       FA_API_TYPES.asset_deprn_rec_type;
  l_asset_deprn_rec_new       FA_API_TYPES.asset_deprn_rec_type;
  l_asset_deprn_mrc_tbl_new   FA_API_TYPES.asset_deprn_tbl_type;
  l_inv_rec                   FA_API_TYPES.inv_rec_type;
  l_group_reclass_options_rec FA_API_TYPES.group_reclass_options_rec_type;
  l_return_status             VARCHAR2(1);
  l_mesg_count                number := 0;
  l_mesg_len                  number;
  l_mesg                      varchar2(4000);
begin
  fnd_profile.put('PRINT_DEBUG', 'Y');
  dbms_output.enable(1000000);
  FA_SRVR_MSG.Init_Server_Message;
  FA_DEBUG_PKG.Initialize;
  — asset header info
  l_asset_hdr_rec.asset_id       := 100000206;
  l_asset_hdr_rec.book_type_code := 'FIN_FA_BOOK';
  — fin info
  l_asset_fin_rec_adj.cost := 1002;

  –需注意这个金额是在原基础上的增减值。
  FA_ADJUSTMENT_PUB.do_adjustment(p_api_version           => 1.0,
                                  p_init_msg_list         => FND_API.G_FALSE,
                                  p_commit                => FND_API.G_FALSE,
                                  p_validation_level      => FND_API.G_VALID_LEVEL_FULL,
                                  p_calling_fn            => 'ADJ_TEST_SCRIPT',
                                  x_return_status         => l_return_status,
                                  x_msg_count             => l_mesg_count,
                                  x_msg_data              => l_mesg,
                                  px_trans_rec            => l_trans_rec,
                                  px_asset_hdr_rec        => l_asset_hdr_rec,
                                  p_asset_fin_rec_adj     => l_asset_fin_rec_adj,
                                  x_asset_fin_rec_new     => l_asset_fin_rec_new,
                                  x_asset_fin_mrc_tbl_new => l_asset_fin_mrc_tbl_new,
                                  px_inv_trans_rec        => l_inv_trans_rec,
                                  px_inv_tbl              => l_inv_tbl,
                                  –px_inv_rate_tbl             => l_inv_rate_tbl,
                                  p_asset_deprn_rec_adj       => l_asset_deprn_rec_adj,
                                  x_asset_deprn_rec_new       => l_asset_deprn_rec_new,
                                  x_asset_deprn_mrc_tbl_new   => l_asset_deprn_mrc_tbl_new,
                                  p_group_reclass_options_rec => l_group_reclass_options_rec);
  dbms_output.put_line(l_return_status);
  if (l_return_status <> FND_API.G_RET_STS_SUCCESS) then
    fa_debug_pkg.dump_debug_messages(max_mesgs => 0);
    l_mesg_count := fnd_msg_pub.count_msg;
    if l_mesg_count > 0 then
      l_mesg := substr(fnd_msg_pub.get(fnd_msg_pub.G_FIRST, fnd_api.G_FALSE),
                       1,
                       512);
      dbms_output.put_line(substr(l_mesg, 1, 255));
      for i in 1 .. l_mesg_count – 1 loop
        l_mesg := substr(fnd_msg_pub.get(fnd_msg_pub.G_NEXT,
                                         fnd_api.G_FALSE),
                         1,
                         512);
        dbms_output.put_line(substr(l_mesg, 1, 255));
      end loop;
      fnd_msg_pub.delete_msg();
    end if;
  else
    dbms_output.put_line('SUCCESS');
    dbms_output.put_line('THID' ||
                         to_char(l_trans_rec.transaction_header_id));
  end if;
end;
/
参考文件:Oracle Assets Adjustments API Documentation Supplement (文档 ID 206474.1)

Oracle EBS提交并发请求时取消“是否提交另一项请求” 提示

        在提交并发请求的时候,系统会默认给出一个提示,如图所示:

                           

        但是有客户不希望出现这样的提示,直接点击提交即可,其实Oracle EBS系统内置了一个配置文件来控制此项,具体的并发请求名:

中文:并发:提交每个请求后显示请求摘要

英文:Concurrent: ShowRequests Summary After Each Request Submission

根据自己的项目需求,可将默认的值由“否”变更为“是”(地点层或用户层或职责层),即可取消此项提示。

Oracle建立DBLink相关命令

单节点:

/*drop public database link xx_link;*/

create public database link xx_link
       connect to xx_user identified by xx_user 
       using ' (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.1.2)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XXXX)
    )
  )';

双节点:

/*drop public database link xx_link;*/

create public database link xx_link
connect to xx_user identified by xx_user 
using '(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = 10.0.1.92)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP) (HOST = 10.0.1.93)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =PROD)
)
)';