所有由小潘发布的文章

喜欢分享的小潘.

如何查询Oracle EBS Weblogic访问地址及相关扩展知识

1. Oracle EBS Weblogic访问地址固定格式

http://xxxx:yyyy/console

xxxx为Oracle EBS域名地址

yyyy为Weblogic访问端口

/console为固定字符

2. 如何获取访问端口号

通过操作系统应用用户(比如appluat)执行如下命令:

grep wls_adminport $CONTEXT_FILE

如下图所示例子:

3. 访问最终地址

http://xxxx:7005/console

扩展,如何找Oracle EBS相关端口:

1. 通过操作系统应用用户执行命令,找到CONTEXT_FILE所在地址:

echo $CONTEXT_FILE

2. 直接cat /u01/uat/app/fs2/inst/apps/UAT_erp01/appl/admin/UAT_erp01.xml文件,或者通过ftp工具下载目标文件UAT_erp01,找出需要的端口名称(也可直接查看到端口)

3. 如果在平时知道端口名字,直接通过以下命令查询即可(如最上图所示):

grep web_port $CONTEXT_FILE    –ebs应用访问端口

grep wls_adminport $CONTEXT_FILE    –ebs weblogic访问端口

grep dbport $CONTEXT_FILE  –ebs 数据库端口

3. R12.2weblogic版本查询

/u01/test/app/fs1/FMW_Home
grep -i "Weblogic Server" registry.xml

4. R12.1ias版本查询

cd $IAS_ORACLE_HOME/Apache/Apache/bin

./httpd -version

Patch Set Update (PSU) Release Listing for Oracle WebLogic Server (WLS) (文档 ID 1470197.1)

Critical Patch Update (CPU) Program July 2019 Patch Availability Document (PAD) (文档 ID 2534806.1)

 

 

 

ORA-24247网络访问被访问控制列表 (ACL) 拒绝

        情景:Oracle EBS并发管理器无法启动

        现象:Oracle并发请求程序错误,表面日志指向内存错误

        环境:Oracle EBS R12.2.4

        2016年12月14号上午10点钟,Oracle EBS系统发现所有推向外围电商系统的并发程序全部保存,主要报错的信息是“内存不足”。由于处在业务发生期,因此不能随便停机重启(很多时候EBS重启能解决很大程度的问题)。于是准备等到中午午休时间通知所有业务财务人员停止使用,重启系统,同时开发人员和DBA(非EBS DBA)也在进行相关问题排查处理。技术人员提供相关日志到DBA处,然而始终未能在准备停机之前解决。

        第一次重启:中午12点整,我按照系统启停脚本正常启停应用服务,未发现报错,但是进系统发现所有并发未能启动。看到这里也并没有因此慌张,因为以前很多次启动应用服务的时候都遇到过,于是单独启动并发服务adcmctl.sh,也并未报错,结果还是没提示任何错误。再次进入前台页面查验,还是未能正常启动;

        第二次重启:中午12点36分,这次同时启动数据库和应用,完成相关操作后,发现系统并发管理器正常启动。这时去查验电商推送程序,发现还是报“内存”错误。此时已经12点45分左右。

        第三次重启:向DBA求助,他也没有更好的方法,于是他提出重启整个机器,reboot操作系统。由他操作,操作完成后结果并发管理器全部无法启动。这下有些慌了,因为已经到中午13点,这时业务人员已经打电话到领导那,甚至有相关人员直接来找领导问询进度。

        第四次、五次…….,各种进程kill后,多次重启仍然无法解决。就这样一直拖到下班。其中一个同事已经找好外部某著名13摸的技术专家,准备在实在没办法时通过外部资源付费解决(领导已经同意付费)。此时公司内部的DBA做过应用的回退,正准备进行数据库的闪回操作,闪回至中午11点50。而且也这样做了。终于在牺牲部分业务数据后,系统启动正常。马上去验证电商接口问题,很遗憾还是一片红彤彤。此时已经18点35分。

       此时大家都准备回家去,至少系统已经能使用,除开电商接口。15号早上起来,发现群里已经解决。其中一个技术顾问从最开始的并发请求的日志中发现ACL网络访问控制。问题迎刃而解。但原因未明,ACL安全性注册数据被冲掉(EBS访问外网系统均需注册ACL访问控制),具体的相关注册方式如下:

————————————————————————————————————————————

SecureCRT,以DBA登录数据库 uat3db:

Last login: Mon Jan 25 20:12:49 2016 from 172.16.1.225
[orauat3@uat3db ~]$ sqlplus apps/apps

SQL*Plus: Release 11.2.0.4.0 Production on Mon Jan 25 20:14:37 2016

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> conn /as sysdba
Connected.
SQL> exec  dbms_network_acl_admin.create_acl('httprequestmid.xml','http request mid', 'APPS', TRUE,'connect',NULL,  NULL);

PL/SQL procedure successfully completed.

SQL> exec DBMS_NETWORK_ACL_ADMIN.ADD_PRIVILEGE( acl => 'httprequestmid.xml', principal => 'APPS', is_grant => TRUE, privilege => 'resolve');

PL/SQL procedure successfully completed.

SQL> COMMIT;

Commit complete.

SQL> exec dbms_network_acl_admin.assign_acl('httprequestmid.xml','*',NULL, NULL); commit;

PL/SQL procedure successfully completed.

————————检查是否生效命令如下————————————————————————–

–查询:
SELECT any_path FROM resource_view WHERE any_path like '/sys/acls/%';

SELECT acl,
       principal,
       privilege,
       is_grant,
       TO_CHAR(start_date, 'DD-MON-YYYY') AS start_date,
       TO_CHAR(end_date, 'DD-MON-YYYY') AS end_date
  FROM dba_network_acl_privileges;

SELECT host, lower_port, upper_port, acl FROM dba_network_acls;

 

————————————————————————————————————————————

————以下是其他可参考文件————-

参考文件:

http://www.linuxidc.com/Linux/2013-12/93385.htm

http://blog.sina.com.cn/s/blog_4ca24203010128oe.html

http://www.shangxueba.com/jingyan/1666117.html

http://www.cnblogs.com/benio/archive/2011/10/21/2219826.html

http://www.2cto.com/database/201312/261243.html

select utl_http.request('www.apple.com') from dual;

需要先使用 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL 创建访问控制列表(ACL)

BEGIN
 DBMS_NETWORK_ACL_ADMIN.CREATE_ACL (
  acl          => 'email_server_permissions.xml',
  description  => 'Enables network permissions for the e-mail server',
  principal    => 'STAT',
  is_grant     => TRUE,
  privilege    => 'connect');
END;

–查询
SELECT host, lower_port, upper_port, acl FROM dba_network_acls;
SELECT acl,
       principal,
       privilege,
       is_grant,
       TO_CHAR(start_date, 'DD-MON-YYYY') AS start_date,
       TO_CHAR(end_date, 'DD-MON-YYYY') AS end_date
  FROM dba_network_acl_privileges;

SELECT ANY_PATH FROM RESOURCE_VIEW;
结果如下图所示:

 

Oracle PLSQL Json类接口例子

说明:此段例子程序来源公司闫同事,需要json安装文件的,可留言索取。

例子程序:

–物料LIST结果解析
DECLARE
  l_item_info json;
  l_item_list json_list;
  l_item_line json;

  l_ret_code       VARCHAR2(100);
  l_ret_msg        VARCHAR2(100);
  l_json_list_data json_list;
  l_temp_line      json;
  l_erpcode        VARCHAR2(100);
  l_itemno         VARCHAR2(100);
  l_type           VARCHAR2(100);

BEGIN
  l_item_info := json();

  l_item_info.put('code',
                  '1');
  l_item_info.put('message',
                  '调用成功');

  l_item_list := json_list();

  –物料1
  l_item_line := json();
  l_item_line.put('erpCode',
                  '10000001');
  l_item_line.put('itemNo',
                  '22222222222');
  l_item_line.put('type',
                  '4');
  dbms_output.put_line(json_ext.get_string(l_item_line,
                                           'erpCode') || '是:');
  l_item_line.print;
  dbms_output.put_line('—————————–');
  l_item_list.append(l_item_line.to_json_value);

  –物料2
  l_item_line := json();
  l_item_line.put('erpCode',
                  '10000003');
  l_item_line.put('itemNo',
                  '333333333333');
  l_item_line.put('type',
                  '2');
  dbms_output.put_line(json_ext.get_string(l_item_line,
                                           'erpCode') || '是:');
  l_item_line.print;
  dbms_output.put_line('—————————–');
  l_item_list.append(l_item_line.to_json_value);

  –物料LIST构成
  dbms_output.put_line('l_item_list是:');
  l_item_list.print;
  dbms_output.put_line('—————————–');

  –返回结果整体构成
  l_item_info.put('data',
                  l_item_list.to_json_value);
  dbms_output.put_line('l_item_info是:');
  l_item_info.print;
  dbms_output.put_line('—————————–');

  –返回结果解析
  l_ret_code := json_ext.get_string(l_item_info,
                                    'code');
  l_ret_msg  := json_ext.get_string(l_item_info,
                                    'message');

  dbms_output.put_line('解析结果:');
  dbms_output.put_line('l_ret_code: ' || l_ret_code);
  dbms_output.put_line('l_ret_msg: ' || l_ret_msg);

  IF l_ret_code = '1' THEN
    l_json_list_data := json_list(l_item_info.get('data'));
 
    FOR i IN 1 .. l_json_list_data.count()
    LOOP
      l_temp_line := json(l_json_list_data.get(i));
   
      l_erpcode := json_ext.get_string(l_temp_line,
                                       'erpCode');
      l_itemno  := json_ext.get_string(l_temp_line,
                                       'itemNo');
      l_type    := json_ext.get_string(l_temp_line,
                                       'type');
   
      dbms_output.put_line('l_erpcode: ' || l_erpcode);
      dbms_output.put_line('l_itemNo: ' || l_itemno);
      dbms_output.put_line('l_type: ' || l_type);
   
    END LOOP;
 
  END IF;

END;

——————————————————————————

以下是输出结果:

10000001是:
{
  "erpCode" : "10000001",
  "itemNo" : "22222222222",
  "type" : "4"
}
—————————–
10000003是:
{
  "erpCode" : "10000003",
  "itemNo" : "333333333333",
  "type" : "2"
}
—————————–
l_item_list是:
[{
  "erpCode" : "10000001",
  "itemNo" : "22222222222",
  "type" : "4"
}, {
  "erpCode" : "10000003",
  "itemNo" : "333333333333",
  "type" : "2"
}]
—————————–
l_item_info是:
{
  "code" : "1",
  "message" : "\u8C03\u7528\u6210\u529F",
  "data" : [{
    "erpCode" : "10000001",
    "itemNo" : "22222222222",
    "type" : "4"
  }, {
    "erpCode" : "10000003",
    "itemNo" : "333333333333",
    "type" : "2"
  }]
}
—————————–
解析结果:
l_ret_code: 1
l_ret_msg: 调用成功
l_erpcode: 10000001
l_itemNo: 22222222222
l_type: 4
l_erpcode: 10000003
l_itemNo: 333333333333
l_type: 2

如何根据Web页面关于此页查到页面字段对应视图或基表

目标:查询标准客户地点层收件人存储的视图或基表

1. 进入相应页面,找到需要查询的字段,如下图

2. 点击全部展开,ctrl+f搜索“收件人”,,如下图所示

3. 获取“HzPuiPartySiteVO”信息及相应字段信息“Addresse”,如下图所示

4. 点击全部隐藏及业务组件,如下图所示

5. 在打开的业务组件,根据关键字“HzPuiPartySiteVO”搜索结果,如下图所示

6. 点击搜索出结果连接,即可找到相应所需sql命令,如下图所示

 

应收收款界面信息获取

SELECT CR.CASH_RECEIPT_ID CASH_RECEIPT_ID,
       CRH_CURRENT.CASH_RECEIPT_HISTORY_ID CASH_RECEIPT_HISTORY_ID,
       CR.AMOUNT AMOUNT,
       CRH_CURRENT.ACCTD_AMOUNT FUNCTIONAL_AMOUNT,
       CRH_CURRENT.AMOUNT NET_AMOUNT,
       CR.RECEIPT_NUMBER RECEIPT_NUMBER,
       CR.RECEIPT_DATE RECEIPT_DATE,
       CR.TYPE TYPE,
       CR.STATUS RECEIPT_STATUS,
       ARPT_SQL_FUNC_UTIL.get_lookup_meaning('CHECK_STATUS', CR.STATUS) RECEIPT_STATUS_DSP,
       CR.COMMENTS COMMENTS,
       CR.MISC_PAYMENT_SOURCE MISC_PAYMENT_SOURCE,
       CR.EXCHANGE_RATE EXCHANGE_RATE,
       CR.EXCHANGE_DATE EXCHANGE_RATE_DATE,
       CR.EXCHANGE_RATE_TYPE EXCHANGE_RATE_TYPE,
       GL_DCT.USER_CONVERSION_TYPE EXCHANGE_RATE_TYPE_DSP,
       CR.DOC_SEQUENCE_ID DOC_SEQUENCE_ID,
       CR.DOC_SEQUENCE_VALUE DOCUMENT_NUMBER,
       CR.USSGL_TRANSACTION_CODE USSGL_TRANSACTION_CODE,
       CR.CUSTOMER_RECEIPT_REFERENCE CUSTOMER_RECEIPT_REFERENCE,
       REC_METHOD.NAME PAYMENT_METHOD_DSP,
       REC_METHOD.PAYMENT_CHANNEL_CODE PAYMENT_TYPE_CODE,
       REC_METHOD.RECEIPT_METHOD_ID RECEIPT_METHOD_ID,
       RC.NAME RECEIPT_CLASS_DSP,
       RC.BILL_OF_EXCHANGE_FLAG BILL_OF_EXCHANGE_FLAG,      
       RC.CREATION_METHOD_CODE CREATION_METHOD_CODE,
       CR.PAY_FROM_CUSTOMER CUSTOMER_ID,
       RTRIM(RTRIM(SUBSTRB(PARTY.PARTY_NAME, 1, 50)), to_multi_byte(' ')) CUSTOMER_NAME,
       CUST.ACCOUNT_NUMBER CUSTOMER_NUMBER,
       arp_etax_util.get_taxpayer_masked_value(PARTY.JGZZ_FISCAL_CODE) TAXPAYER_ID,
       SITE_USES.LOCATION LOCATION,
       CR.CUSTOMER_SITE_USE_ID CUSTOMER_SITE_USE_ID,
       CR.CUSTOMER_BANK_ACCOUNT_ID CUSTOMER_BANK_ACCOUNT_ID,
       CR.CUSTOMER_BANK_BRANCH_ID CUSTOMER_BANK_BRANCH_ID,
       DECODE(RC.CREATION_METHOD_CODE,
              'MANUAL',
              EBA.BANK_ACCOUNT_NUMBER,
              null) CUSTOMER_BANK_ACCOUNT,
       DECODE(RC.CREATION_METHOD_CODE,
              'MANUAL',
              EBA.BANK_ACCOUNT_NUMBER,
              null) CUSTOMER_BANK_ACCOUNT_NUM,
       DECODE(RC.CREATION_METHOD_CODE, 'MANUAL', EBA.BANK_NAME, NULL) CUSTOMER_BANK_NAME,
       DECODE(RC.CREATION_METHOD_CODE, 'MANUAL', EBA.BANK_BRANCH_NAME, NULL) CUSTOMER_BANK_BRANCH,
       CRH_FIRST_POSTED.BATCH_ID BATCH_ID,
       DECODE(RC.CREATION_METHOD_CODE, 'BR', BAT_BR.NAME, BAT.NAME) BATCH_NAME /* 20-APR-2000 J Rautiainen BR Implementation */,
       DIST_SET.DISTRIBUTION_SET_NAME DISTRIBUTION_SET,
       CR.DISTRIBUTION_SET_ID DISTRIBUTION_SET_ID,
       CR.DEPOSIT_DATE DEPOSIT_DATE,
       CR.REFERENCE_TYPE REFERENCE_TYPE,
       CR.VAT_TAX_ID VAT_TAX_ID,
       VAT.TAX_RATE_CODE TAX_CODE,
       CR.TAX_RATE TAX_RATE,
       NVL(ARP_MISC_CASH_DIST.MISC_CASH_TAX_LINE_CCID_IN_ARD(CR.CASH_RECEIPT_ID),
           accounts.TAX_ACCOUNT_CCID) TAX_ACCOUNT_ID,
       VAT.ALLOW_ADHOC_TAX_RATE_FLAG ADHOC_FLAG,
       L_REF_TYPE.MEANING REFERENCE_TYPE_DSP,
       CR.REFERENCE_ID REFERENCE_ID,
       CR.REMIT_BANK_ACCT_USE_ID REMIT_BANK_ACCT_USE_ID,
       BB.BANK_NAME REMIT_BANK_NAME,
       BB.BRANCH_PARTY_ID REMITTANCE_BANK_BRANCH_ID,
       BB.BANK_BRANCH_NAME REMIT_BANK_BRANCH,
       CBA.CURRENCY_CODE REMIT_BANK_CURRENCY,
       CRH_CURRENT.FACTOR_DISCOUNT_AMOUNT FACTOR_DISCOUNT_AMOUNT,
       PS.DUE_DATE MATURITY_DATE,
       PS.PAYMENT_SCHEDULE_ID PAYMENT_SCHEDULE_ID,
       ARPT_SQL_FUNC_UTIL.get_lookup_meaning('RECEIPT_CREATION_STATUS',
                                             CRH_CURRENT.STATUS) STATE_DSP,
       CRH_CURRENT.STATUS STATE,
       CRH_CURRENT.GL_POSTED_DATE POSTED_DATE,
       REC_TRX.NAME ACTIVITY,
       REC_TRX.TAX_CODE_SOURCE TAX_CODE_SOURCE,
       CR.RECEIVABLES_TRX_ID RECEIVABLES_TRX_ID,
       CRH_CURRENT.GL_POSTED_DATE GL_POSTED_DATE,
       CRH_CURRENT.POSTING_CONTROL_ID POSTING_CONTROL_ID,
       CRH_FIRST_POSTED.GL_DATE GL_DATE,
       CR.ATTRIBUTE_CATEGORY ATTRIBUTE_CATEGORY,
       CR.REVERSAL_DATE REVERSAL_DATE,
       DECODE(CR.REVERSAL_CATEGORY, NULL, NULL, L_REV_CAT.MEANING) REVERSAL_CATEGORY_DSP,
       CR.REVERSAL_CATEGORY REVERSAL_CATEGORY,
       DECODE(CR.REVERSAL_CATEGORY, NULL, NULL, L_REV_CAT.DESCRIPTION) CATEGORY_DESCRIPTION,
       CR.REVERSAL_COMMENTS REVERSAL_COMMENTS,
       DECODE(CR.REVERSAL_REASON_CODE, NULL, NULL, L_REV_REASON.MEANING) REVERSAL_REASON,
       CR.REVERSAL_REASON_CODE REVERSAL_REASON_CODE,
       DECODE(CR.REVERSAL_REASON_CODE, NULL, NULL, L_REV_REASON.DESCRIPTION) REVERSAL_REASON_DESCRIPTION,
       REM_BAT.NAME REMIT_BATCH,
       REM_BAT.BATCH_ID REMIT_BATCH_ID,
       NVL(CR.OVERRIDE_REMIT_ACCOUNT_FLAG, 'Y') OVERRIDE_REMIT_BANK,
       NVL(- (PS.AMOUNT_APPLIED), 0) APPLIED_AMOUNT

  FROM CE_BANK_ACCOUNTS            CBA,
       CE_BANK_ACCT_USES_OU        REMIT_BANK,
       ZX_RATES_B                  VAT,
       ZX_ACCOUNTS                 ACCOUNTS,
       HZ_CUST_ACCOUNTS            CUST,
       HZ_PARTIES                  PARTY,
       AR_RECEIPT_METHODS          REC_METHOD,
       AR_RECEIPT_CLASSES          RC,
       HZ_CUST_SITE_USES_ALL       SITE_USES,
       AR_LOOKUPS                  CRH_NOTE_STATUS,
       AR_LOOKUPS                  L_REV_CAT,
       AR_LOOKUPS                  L_REV_REASON,
       AR_LOOKUPS                  L_REF_TYPE,
       GL_DAILY_CONVERSION_TYPES   GL_DCT,
       AR_CASH_RECEIPT_HISTORY_ALL CRH_REM,
       AR_BATCHES_ALL              REM_BAT,
       AR_RECEIVABLES_TRX_ALL      REC_TRX,
       AR_DISTRIBUTION_SETS_ALL    DIST_SET,
       AR_PAYMENT_SCHEDULES_ALL    PS,
       AR_CASH_RECEIPT_HISTORY_ALL CRH_CURRENT,
       AR_BATCHES_ALL              BAT,
       AR_BATCHES_ALL              BAT_BR,
       AR_CASH_RECEIPTS_ALL        CR,
       AR_CASH_RECEIPT_HISTORY_ALL CRH_FIRST_POSTED,
       HZ_PARTIES                  NotesBranchParty,
       HZ_PARTIES                  NotesBankParty,
       HZ_RELATIONSHIPS            NotesBRRel,
       CE_BANK_BRANCHES_V          BB,
       IBY_EXT_BANK_ACCOUNTS_V     EBA
 WHERE CR.PAY_FROM_CUSTOMER = CUST.CUST_ACCOUNT_ID(+)
   AND CUST.PARTY_ID = PARTY.PARTY_ID(+)
   AND CRH_NOTE_STATUS.LOOKUP_TYPE(+) = 'AR_NOTE_STATUS'
   AND CRH_NOTE_STATUS.LOOKUP_CODE(+) = CRH_CURRENT.NOTE_STATUS
   AND REMIT_BANK.BANK_ACCT_USE_ID(+) = CR.REMIT_BANK_ACCT_USE_ID
   AND REMIT_BANK.ORG_ID(+) = CR.ORG_ID
   AND VAT.TAX_RATE_ID(+) = CR.VAT_TAX_ID
   AND ACCOUNTS.TAX_ACCOUNT_ENTITY_ID(+) = CR.VAT_TAX_ID
   AND accounts.tax_account_entity_code(+) = 'RATES'
   AND CR.RECEIPT_METHOD_ID = REC_METHOD.RECEIPT_METHOD_ID
   AND REC_METHOD.RECEIPT_CLASS_ID = RC.RECEIPT_CLASS_ID
   AND CR.CUSTOMER_SITE_USE_ID = SITE_USES.SITE_USE_ID(+)
   AND CR.ORG_ID = SITE_USES.ORG_ID(+)
   AND CR.RECEIVABLES_TRX_ID = REC_TRX.RECEIVABLES_TRX_ID(+)
   AND CR.ORG_ID = REC_TRX.ORG_ID(+)
   AND CR.DISTRIBUTION_SET_ID = DIST_SET.DISTRIBUTION_SET_ID(+)
   AND CR.ORG_ID = DIST_SET.ORG_ID(+)
   AND L_REV_CAT.LOOKUP_TYPE(+) = 'REVERSAL_CATEGORY_TYPE'
   AND L_REV_CAT.LOOKUP_CODE(+) = CR.REVERSAL_CATEGORY
   AND L_REV_REASON.LOOKUP_TYPE(+) = 'CKAJST_REASON'
   AND L_REV_REASON.LOOKUP_CODE(+) = CR.REVERSAL_REASON_CODE
   AND L_REF_TYPE.LOOKUP_CODE(+) = CR.REFERENCE_TYPE
   AND L_REF_TYPE.LOOKUP_TYPE(+) = 'CB_REFERENCE_TYPE'
   AND GL_DCT.CONVERSION_TYPE(+) = CR.EXCHANGE_RATE_TYPE
   AND CRH_REM.CASH_RECEIPT_ID(+) = CR.CASH_RECEIPT_ID
   AND CRH_REM.ORG_ID(+) = CR.ORG_ID
   AND NOT EXISTS
 (SELECT /*+ INDEX(CRH3 AR_CASH_RECEIPT_HISTORY_N1) */
         CASH_RECEIPT_HISTORY_ID
          FROM AR_CASH_RECEIPT_HISTORY_ALL CRH3
         WHERE CRH3.STATUS = 'REMITTED'
           AND CRH3.CASH_RECEIPT_ID = CR.CASH_RECEIPT_ID
           AND CRH3.CASH_RECEIPT_HISTORY_ID <
               CRH_REM.CASH_RECEIPT_HISTORY_ID)
   AND CRH_REM.STATUS(+) = 'REMITTED'
   AND CRH_REM.BATCH_ID = REM_BAT.BATCH_ID(+)
   AND CRH_REM.ORG_ID = REM_BAT.ORG_ID(+)
   AND REM_BAT.TYPE(+) = 'REMITTANCE'
   AND PS.CASH_RECEIPT_ID(+) = CR.CASH_RECEIPT_ID
   AND PS.ORG_ID(+) = CR.ORG_ID
   AND CRH_CURRENT.CASH_RECEIPT_ID = CR.CASH_RECEIPT_ID
   AND CRH_CURRENT.ORG_ID = CR.ORG_ID
   AND CRH_CURRENT.CURRENT_RECORD_FLAG = NVL('Y', CR.RECEIPT_NUMBER)
   AND CRH_FIRST_POSTED.BATCH_ID = BAT.BATCH_ID(+)
   AND CRH_FIRST_POSTED.ORG_ID = BAT.ORG_ID(+)
   AND BAT.TYPE(+) = 'MANUAL'
   AND CRH_FIRST_POSTED.CASH_RECEIPT_ID(+) = CR.CASH_RECEIPT_ID
   AND CRH_FIRST_POSTED.ORG_ID(+) = CR.ORG_ID
   AND CRH_FIRST_POSTED.FIRST_POSTED_RECORD_FLAG(+) = 'Y'
   AND CRH_FIRST_POSTED.BATCH_ID = BAT_BR.BATCH_ID(+)
   AND CRH_FIRST_POSTED.ORG_ID = BAT_BR.ORG_ID(+)
   AND BAT_BR.TYPE(+) = 'BR'
   AND NotesBranchParty.party_id(+) = CR.issuer_bank_branch_id
   AND NotesBRRel.object_id = NotesBankParty.party_id(+)
   AND NotesBRRel.subject_id(+) = NotesBranchParty.party_id
   AND NotesBRRel.relationship_type(+) = 'BANK_AND_BRANCH'
   AND NotesBRRel.relationship_code(+) = 'BRANCH_OF'
   AND NotesBRRel.subject_table_name(+) = 'HZ_PARTIES'
   AND NotesBRRel.subject_type(+) = 'ORGANIZATION'
   AND NotesBRRel.object_table_name(+) = 'HZ_PARTIES'
   AND NotesBRRel.object_type(+) = 'ORGANIZATION'
   AND remit_bank.bank_account_id = CBA.bank_account_id(+)
   AND BB.BRANCH_PARTY_ID(+) = CBA.BANK_BRANCH_ID
   AND EBA.ext_bank_account_id(+) = CR.CUSTOMER_BANK_ACCOUNT_ID
   AND cr.org_id = accounts.internal_organization_id(+)
   and CR.RECEIPT_NUMBER = 'FL3959195-6';