How To Implement 'Promoted Columns' On ORACLE Database For TAFJ
How To Implement 'Promoted Columns' On ORACLE Database For TAFJ
Customer Support
Portal
(/SitePages/Home.aspx)
w%20to%20implement%20%27Promoted%20Columns%27%20on%20ORACLE%20database%20for%20TAFJ%20%20?
s%27%20on%20ORACLE%20database%20for%20TAFJ%20%20?%20%20%20-
AFJ.aspx)
Introduction
This document describes the implementation of normal
indexing and promoted columns on ORACLE database for
TAFJ. This has been done to improve the performance of
‘expensive’ queries such that response times are reduced.
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 1/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
(/SitePages/Home.aspx)
----------------------------------------------------------------------
(/SitePages/T24Intelligence.aspx)
DBTools JQL P1:
----------------------------------------------------------------------
(/TCSPProfileCenter/infodefault.aspx)
(/Support/DashBoard.aspx) BASICBasic le name:|FBNK.AA.ARRANGEMENT
SQL> select
dbms_metadata.get_ddl('VIEW','TAFJV_FBNK_AA_ARRANGEMENT','R
13TAFJ') from dual;
,extractValue(a.XMLRECORD,'/row/c10[position()=1]')
"PRODUCT_LINE"
Yes
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 2/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
Index created.
SQL>
(/SitePages/Home.aspx) INDEX_NAME
(/SitePages/T24Intelligence.aspx)
------------------------------
SYS_IL0000214841C00003$$
(/TCSPProfileCenter/infodefault.aspx)
SYS_C0075206
(/Support/DashBoard.aspx)
IX_FBNK_AA_ARRANGEMENT_C10
SQL>
Explained.
SQL>
PLAN_TABLE_OUTPUT
Was this page
--------------------------------------------------------------------------------
------------------------------------------------------------------
------------------------------------------------------------------
9 rows selected.
SQL>
Elapsed: 00:00:00.33
SQL>
Elapsed: 00:00:00.25
SQL>
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 4/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
---------------------------------------------
DBTools JQL
---------------------------------------------
BASICBasic le name:|FBNK.ACCOUNT
log4j.logger.JQL=DEBUG, jql
log4j.logger.SQLTRACE=DEBUG, sqltrace
JQL.log:
SQLTRACE.log:
Yes
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 5/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
SQL> select
dbms_metadata.get_ddl('VIEW','V_FBNK_ACCOUNT','R14TA
FJ') from dual;
,extractValue(a.XMLRECORD,'/row/c2[position()=1]')
"CATEGORY"
(/SitePages/Home.aspx) …
(/SitePages/T24Intelligence.aspx)
Step 3: Index creation
(/TCSPProfileCenter/infodefault.aspx)
(/Support/DashBoard.aspx) Please nd the below sample command in order to
create index for single value eld which make use of
"TO_NUMBER" function using the de nition extracted in
step-2.
Index created.
SQL>
INDEX_NAME
------------------------------
IX_FBNK_ACCOUNT_C2 Yes
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 6/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
SQL>
Explained.
Elapsed: 00:00:00.06
SQL>
PLAN_TABLE_OUTPUT
(/SitePages/Home.aspx)
--------------------------------------------------------------------------------
(/SitePages/T24Intelligence.aspx)
Plan hash value: 1137255371
----------------------------------------------------------
(/TCSPProfileCenter/infodefault.aspx)
| Id | Operation | Name |
(/Support/DashBoard.aspx)
----------------------------------------------------------
----------------------------------------------------------
9 rows selected.
Elapsed: 00:00:00.02
SQL>
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 7/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
SQL>
Elapsed: 00:00:00.48
SQL>
,extractValue(a.XMLRECORD,'/row/c122[position()=1]')
"EVENT_STATUS"
,extractValue(a.XMLRECORD,'/row/c4[position()=1]') "EVENT_TYPE"
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 8/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
(XMLCast(XMLQuery('/row/c4[position()=1]' PASSING
XMLRECORD RETURNING CONTENT) AS VARCHAR2(100)))
VIRTUAL,
3 EVENT_STATUS varchar2(100) GENERATED ALWAYS AS
(XMLCast(XMLQuery('/row/c122[position()=1]' PASSING
XMLRECORD RETURNING CONTENT) AS VARCHAR2(100)))
VIRTUAL
4 );
Table altered.
SQL> COMMIT;
Commit complete.
Syntax:
CREATE INDEX IX_FBNK_DIARY_EVENT_TYPESTATUS ON
FBNK_DIARY (EVENT_TYPE, EVENT_STATUS, 0) TABLESPACE
T24DATA_TBSPACE;
Example:
SQL> CREATE INDEX IX_FBNK_DIARY_EVENT_TYPESTATUS
ON FBNK_DIARY (EVENT_TYPE, EVENT_STATUS, 0)
TABLESPACE R15;
Index created.
SQL>
Step 4: Replace the view eld with the new virtual
column by rebuilding the STANDARD.SELECTION record
,a."EVENT_TYPE"
Yes
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 9/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
...
...
,extractValue(a.XMLRECORD,'/row/c121[posi on()=1]')
"ENTITLEMENT_FLAG"
,a."EVENT_STATUS"
,extractValue(a.XMLRECORD,'/row/c123[posi on()=1]')
"ADVICE_TYPE"
PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------
-
Plan hash value: 2033843091
-----------------------------------------------------------------------
| Id | Opera on | Name |
-----------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | SORT ORDER BY | |
| 2 | TABLE ACCESS BY INDEX ROWID|
FBNK_DIARY |
| 3 | INDEX RANGE SCAN |
IX_FBNK_DIARY_EVENT_TYPESTATUS |
-----------------------------------------------------------------------
10 rows selected.
Explained. Yes
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 10/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------
-
Plan hash value: 2033843091
-----------------------------------------------------------------------
| Id | Opera on | Name |
-----------------------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | SORT ORDER BY | |
| 2 | TABLE ACCESS BY INDEX ROWID|
FBNK_DIARY |
| 3 | INDEX RANGE SCAN |
IX_FBNK_DIARY_EVENT_TYPESTATUS |
-----------------------------------------------------------------------
(/SitePages/Home.aspx)
(/SitePages/T24Intelligence.aspx) 10 rows selected.
SQL>
(/TCSPProfileCenter/infodefault.aspx)
Step 6: Index utilization check
(/Support/DashBoard.aspx)
Before indexing:
[DEBUG] 2017-11-20 13:04:57,622 [EX_665246918] JQL -
JQL : SSELECT FBNK.DIARY WITH EVENT.TYPE = "CASH"
AND EVENT.STATUS = "AUTHORISED" AND CO.CODE =
"GB0010001"
[DEBUG] 2017-11-20 13:04:57,800 [EX_665246918] JQL -
SQL : SELECT RECID FROM "V_FBNK_DIARY" WHERE
"EVENT_TYPE" = ? and "EVENT_STATUS" = ? and "CO_CODE"
= ? ORDER BY RECID
[DEBUG] 2017-11-20 13:04:57,967 [EX_665246918] JQL -
COUNT : 1
+++++++++++
[DEBUG] 2017-11-20 13:05:56,793 [EX_665246918] JQL -
JQL : SSELECT FBNK.DIARY WITH EVENT.TYPE =
"COUPON" AND EVENT.STATUS = "" AND CO.CODE =
"GB0010001"
[DEBUG] 2017-11-20 13:05:56,949 [EX_665246918] JQL -
SQL : SELECT RECID FROM "V_FBNK_DIARY" WHERE
"EVENT_TYPE" = ? and "EVENT_STATUS" IS NULL and
"CO_CODE" = ? ORDER BY RECID
[DEBUG] 2017-11-20 13:05:57,071 [EX_665246918] JQL -
COUNT : 3
Was this page
After indexing:
SQL> SELECT RECID FROM "V_FBNK_DIARY" WHERE
"EVENT_TYPE" = 'CASH' and "EVENT_STATUS" = Yes
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 11/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
RECID
--------------------------------------------------------------------------------
DIARSC1509724486
Elapsed: 00:00:00.19
SQL> SELECT RECID FROM "V_FBNK_DIARY" WHERE
"EVENT_TYPE" = 'COUPON' and "EVENT_STATUS" IS NULL
and "CO_CODE" = 'GB0010001' ORDER BY RECID;
RECID
--------------------------------------------------------------------------------
DIARSC1509141567
DIARSC1509173060
DIARSC1509176853
Elapsed: 00:00:00.10
(/SitePages/Home.aspx)
SQL>
(/SitePages/T24Intelligence.aspx)
(/TCSPProfileCenter/infodefault.aspx)
Multi value eld indexing in oracle
(/Support/DashBoard.aspx)
12c
Note:
Please note that if the select which uses indexed multi
value eld contains function like (TO_NUMBER) then the
index will not get utilized. Please note that the below
procedure is a sample reference only. We suggest you to
get in touch with the DBA for proper implementation and
query optimization upon clear database study. As well as if
the XMLindexing is in place and the elapsed time is still
higher, then get in touch with your database administrator
in order to nd the alternative way to optimise the query
either at database level or please make use of no le
enquiry.
Yes
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 12/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
log4j.logger.JQL=DEBUG, jql
log4j.logger.SQLTRACE=DEBUG, sqltrace
Jql.log:
Step 2: DDL extraction
,extract(a.XMLRECORD,'/row/c4') "NAME_2_4"
111432
111435
111434
111431
6 rows selected.
Elapsed: 00:00:00.16
SQL>
SQL> declare
2 indexExists int;
3 pathIndexed int;
4 begin
5 select count(index_name) into indexExists from user_indexes
6 where table_name = 'FBNK_CUSTOMER' and ityp_name =
(/SitePages/Home.aspx) 'XMLINDEX';
7 if indexExists=0 then
(/SitePages/T24Intelligence.aspx)
8 EXECUTE IMMEDIATE 'create index
IX_FBNK_CUSTOMER on FBNK_CUSTOMER(XMLRECORD)
indextype is xdb.xmlinde
(/TCSPProfileCenter/infodefault.aspx)
x parameters (''PATHS (INCLUDE (/row/c4))'')';
(/Support/DashBoard.aspx)
9 else
10 select count(x.path) into pathIndexed from
user_xml_indexes,
11 xmltable ('$t/parameters/paths/path' passing parameters
as "t"
12 columns
13 path VARCHAR(200) PATH '.') as x
14 where table_name='FBNK_CUSTOMER' and x.path =
'/row/c4';
15 if pathIndexed=0 then
16 EXECUTE IMMEDIATE 'alter index
IX_FBNK_CUSTOMER rebuild parameters (''PATHS (INCLUDE ADD
(/row/c4))'
') ';
17 else
18 raise_application_error(-20010,'XPath already indexed
/row/c4 (NAME.2)');
19 end if;
20 end if;
21 end;
22 /
Elapsed: 00:00:00.76
SQL> Yes
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 14/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
INDEX_NAME
--------------------------------------------------------------------------------
TYPE INDEX_TYPE
---------- ---------------------------
IX_FBNK_CUSTOMER
CLOB UNSTRUCTURED
SQL>
INDEX_NAME
--------------------------------------------------------------------------------
(/SitePages/Home.aspx) INDEX_TYPE
(/SitePages/T24Intelligence.aspx)
---------------------------
IX_FBNK_CUSTOMER
(/TCSPProfileCenter/infodefault.aspx)
FUNCTION-BASED DOMAIN
(/Support/DashBoard.aspx)
SYS_C0080924
NORMAL
SYS_IL0000253222C00003$$
LOB
...
...
--------------------------------------------------------------------------------
PARAMETERS
--------------------------------------------------------------------------------
ASYNC STALE
--------- -----
PEND_TABLE_NAME
Was this page
--------------------------------------------------------------------------------
EX_OR_IN
Yes
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 15/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
--------
SYS339808_IX_FBNK_C_PATH_TABLE
INDEX_NAME
--------------------------------------------------------------------------------
TABLE_OWNER
--------------------------------------------------------------------------------
TABLE_NAME
--------------------------------------------------------------------------------
...
...
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
----
|
--------------------------------------------------------------------------------
----
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
|
|
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 16/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
|
|
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
|
|
|
|
LE |
|
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
|
LE |
|
Yes
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 17/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
--------------------------------------------------------------------------------
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
20 rows selected.
Elapsed: 00:00:00.25
SQL>
RECID
--------------------------------------------------------------------------------
111436
111433
111432
111435
111434
111431
6 rows selected.
Elapsed: 00:00:00.05
Yes
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 18/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
,extractValue(a.XMLRECORD,'/row/c179[@m="5"]')
"PROS_SALES_OFF"
,extractValue(a.XMLRECORD,'/row/c179[@m="6"]') "PROS_STATUS"
,extractValue(a.XMLRECORD,'/row/c179[@m="7"]')
"CUST_CATEG"
Step 2: DDL extraction
as rtnval varchar2(100);
(/SitePages/Home.aspx) begin
Function created.
as rtnval varchar2(100);
begin
return rtnval;
end;
/
Was this page
Function created.
Yes
<CUST_CATEG ---> LOCAL.REF<1,7> CUST_CATEG>
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 19/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
as
rtnval integer;
begin
return rtnval;
end;
/Function created.
Step 3: Alter column
(/SitePages/Home.aspx) Alter the table for the column "PROS_SALES_OFF" using below
command. Make sure to have promoted column name same as
(/SitePages/T24Intelligence.aspx)
STANDARD.SELECTION eld name in order to update the view
properly.
(/TCSPProfileCenter/infodefault.aspx)
(/Support/DashBoard.aspx)
SQL> alter table FBNK_CUSTOMER add PROS_SALES_OFF
varchar2(100) generated always as
(cast(CUS_LOCAL5(XMLRECORD) as varchar2(100)));
Table altered.
Table altered.
Table altered.
Check for the DESC on the table where the promoted column has
been added.
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 20/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
XMLRECORD SYS.XMLTYPE
TASK_ID VARCHAR2(100)
PROS_SALES_OFF VARCHAR2(100)
PROS_STATUS VARCHAR2(100)
CUST_CATEG NUMBER(38)
SQL>
Step 4: Index creation
Create index for the altered eld along with constant "1" in order
to make use of index when the column is passed with NULL value.
Index created.
Yes
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 21/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
Execute the explain plan and check whether the SELECT command
is making use of index or not
Explained.
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
---------------------------------------------------------
(/SitePages/Home.aspx)
| Id | Operation | Name |
(/SitePages/T24Intelligence.aspx)
---------------------------------------------------------
| 0 | SELECT STATEMENT | |
(/TCSPProfileCenter/infodefault.aspx)
| 1 | TABLE ACCESS BY INDEX ROWID| FBNK_CUSTOMER |
(/Support/DashBoard.aspx)
| 2 | INDEX RANGE SCAN | IX_PROS_SALES_OFF |
---------------------------------------------------------
1 rows selected.
Explained.
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
------------------------------------------------------
------------------------------------------------------
9 rows selected.
Explained.
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
-----------------------------------------------------
-----------------------------------------------------
(/SitePages/T24Intelligence.aspx)
| 2 | INDEX RANGE SCAN | IX_CUST_CATEG |
-----------------------------------------------------
(/TCSPProfileCenter/infodefault.aspx)
9 rows selected.
(/Support/DashBoard.aspx) Elapsed: 00:00:00.02
SQL>
Test case-1:
RECID
--------------------------------------------------------------------------------
129039
Elapsed: 00:00:05.18
SQL>
RECID
Yes
--------------------------------------------------------------------------------
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 23/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
129039
Elapsed: 00:00:00.02
SQL>
Test case-2:
RECID
--------------------------------------------------------------------------------
129039
Elapsed: 00:00:00.10
SQL>
RECID
(/TCSPProfileCenter/infodefault.aspx)
--------------------------------------------------------------------------------
(/Support/DashBoard.aspx) 129039
Elapsed: 00:00:00.00
Test Case-3:
RECID
--------------------------------------------------------------------------------
129039
1 rows selected
Elapsed: 00:00:01.16
SQL>
Was this page
RECID
--------------------------------------------------------------------------------
Yes
129039
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 24/25
17/9/2019 How to implement 'Promoted Columns' on ORACLE database for TAFJ ?
Elapsed: 00:00:00.00
SQL>
(/SitePages/Home.aspx)
(/SitePages/T24Intelligence.aspx)
(/TCSPProfileCenter/infodefault.aspx)
(/Support/DashBoard.aspx)
Yes
https://tcsp.temenos.com/HowTo/How_to_implement_promoted_columns_ORACLE_TAFJ.aspx 25/25