SlideShare a Scribd company logo
DBA Repository - A Repository of Oracle EBS & Database Administration
DBA Repository
A Repository of Oracle EBS & Database Administration
Reorganizing FND_LOBS Table in
Oracle E-Business Suite
Akhash Ramnath
Doyensys Pvt Ltd
DBA Repository - A Repository of Oracle EBS & Database Administration
Overview
FND_LOBS is a seeded table in Oracle E-Business
Suite that enables users to link unstructured data,
such as images, word processing documents,
spreadsheets, or text to their application data.
FND_LOBS is usually one of the top 10 table in an EBS
environment considering how the attachments flow
through the entire EBS.
There are steps to manage the FND_LOBS table,
How To Manage, Reduce, and/or Purged The
FND_LOBS Table? (Doc ID 1288149.1)
It is always recommended to follow the documents
provided by Oracle to manage the growth of the
FND_LOBS table.
But in this document we are going to discuss on how to
reorganize a FND_LOBS table in Oracle EBS. I would
like to highlight one such activity that i did in the past
weeks in one of our business critical project.
DBA Repository - A Repository of Oracle EBS & Database Administration
FND_LOBS stores all the attachments that have been uploaded to Oracle
Applications. The size of the FND_LOBS table in our environment was around
1.5 TB with 45+lakhs record each pertaining to its own Application Module.
The technical/functional team of our customer had worked with the Oracle
Support and had purged 50% of data that was no longer required for the
business from the EBS. Although the purging was successful the size of
the FND_LOBS table was still the same. There was no difference in the
size of the table and its LOB Segment. So we decided to perform a re-org
for FND_LOBS table.
Reorganizing a table would make sure that there is no water marking, the
unused space of the table can be gained and the performance of the table
would be improved.
There are three different methods to re-org a table,
a. Move table
b. Export, truncate/drop & Import the table
c. CTAS - Create Table as Select * from tablename (We did not use this,
but it involves us to create a copy of the source table as 'create table
table_name as select * from applsys.fnd_lobs' then truncate the source
table and insert records from the backup table)
I had an opportunity to perform Move table & EXPDP/IMPDP the FND_LOBS
table for our customer.
Both methods are recommended and will provide the same output.
But the time take to perform each operation can differ based on the size
and the resources of the database server.
Moving a table is pretty straight forward method, whereas perform
EXPDP/IMPDP on FND_LOBS can be a little trickier.
The FND_LOBS table comes with a BLOB column FILE_DATA which stops us from
using the parameter PARALLEL in EXPDP/IMPDP operation. Not using the
PARALLEL parameter stops us from using its advantages and we have to depend
on the single EXPIMP/IMPDB command/task to complete.
As an alternative to PARALLEL we can perform the EXPDP/IMPDP operation
on FND_LOBS table by splitting the data of the FND_LOBS table in smaller
chunks. QUERY parameter helps us to perform the EXPDP/IMPDP in a
concurrent way by splitting up the table into small chunks.
We will see how to Move the FND_LOBS table and how to perform EXPDP/IMPDP
on FND_LOBS table.
DBA Repository - A Repository of Oracle EBS & Database Administration
Move Table is a feature in Oracle Database that enables us to
rebuild the Oracle tables.
 Find the Size of the FND_LOBS table and its associated
lob_segment size.
SQL> select owner, table_name, column_name, segment_name,
tablespace_name from dba_lobs where
table_name='FND_LOBS';
SQL> select a.owner, a.object_name, a.object_type, a.created,
b.tablespace_name,sum(b.bytes/1024/1024)
from dba_objects a, dba_segments b
where a.object_name=b.segment_name
and a.object_name = '&segment_name_from_previousquery'
group by a.owner, a.object_name, a.object_type, a.created,
b.tablespace_name
order by 6 desc;
Get the segment_name, tablespace_name, lob_segment name from the
above queries.
Note : - Alter table Move shall be performed in two ways,
1. Move the table within the tablespace.
More space needs to be added to the tablespace and then later
can be resized after the table is successfully moved.
2. Move the table to another tablespace and move it back to its
original tablespace.
A new tablespace with the same size shall be created and later
dropped once the table is successfully moved. Using this method
the table needs to be moved twice. (Source tablespace to new
tablespace and from new tablespace to its original source
tablespace)
Alter table Move can be performed online, but performing the move
table when EBS application online will be time consuming. It is
better to bring down the EBS services for faster completion and
avoid any errors.
Method 1 - Move FND_LOBS Table
DBA Repository - A Repository of Oracle EBS & Database Administration
 Add sufficient space to the tablespace of FND_LOBS for the
move task, for example if your FND_LOBS lob_segement size is
500 GB add datafiles of 500GB.If you want to create a new
tablespace for this, then create a new tablespace with the
same size of the FND_LOBS and its LOB_SEGMENT.
 Perform FND_LOBS move.
SQL> alter table applsys.fnd_lobs move;
(or)
SQL> alter table applsys.fnd_lobs move tablespace
target_tablespace.
 Move the respective LOB_SEGMENT of FND_LOBS,
SQL> alter table APPLSYS.FND_LOBS move lob (FILE_DATA) store as
segment_name_from_previousquery;
(or)
SQL> alter table APPLSYS.FND_LOBS move LOB (FILE_DATA) store as
segment_name_from_previousquery tablespace target_tablespace;
 After the FND_LOBS and its LOB Segment is moved to another
tablespace, move it back to its original source tablespace.
SQL> alter table applsys.fnd_lobs move tablespace
source_tablespace.
(or)
SQL> alter table APPLSYS.FND_LOBS move LOB (FILE_DATA) store as
segment_name_from_previousquery tablespace source_tablespace;
The LOB_SEGMENT index will be rebuild automatically as part of
move table.
DBA Repository - A Repository of Oracle EBS & Database Administration
DATAPUMP the FND_LOBS table using the standard expdp/impdp
method
 Analyse FND_LOBS table collect the table size, lob segment
size, no of rows in FND_LOBS table, respective LOB Segment
associated with FILE_DATA column etc.
 Make sure you have sufficient space in the Data pump directory
before initiating the export of FND_LOBS table.
 Initiate the export of FND_LOBS table,
$ expdp "'/ as sysdba'" tables=APPLSYS.FND_LOBS
directory=DUMP_FND dumpfile=dev_fndlobs.dmp
logfile=dev_fndlobs.log exclude=STATISTICS
COMPRESSION=NONE
Excluding the statistics will help the import operation to
complete faster. Gather stats can be later run after the import
so excluding statistics while exporting is totally fine.
Compression is set to none to mention the expdp not to perform
any compressions while exporting the table.
 Truncate the FND_LOBS after the expdp completes successfully,
SQL> truncate table APPLSYS.FND_LOBS;
 Shrink the FND_LOBS table once to reclaim any unused space,
SQL> ALTER TABLE APPLSYS.FND_LOBS MODIFY LOB (FILE_DATA) (SHRINK
SPACE);
 Impor the FND_LOBS table,
$ impdp "'/ as sysdba'" tables=APPLSYS.FND_LOBS
directory=DUMP_FND dumpfile=dev_fnd_01.dmp
logfile=impdp_fndlobs_2.log table_exists_action=APPEND
Table_Exist_Action is set to append to mention the impdp to just
insert the data and not to create the FND_LOBS table.
-- Rebuild Index after import
SQL> alter index APPLSYS.FND_NODES_U1 rebuild;
SQL> alter index APPLSYS.FND_NODES_N1 rebuild;
Method 2 - EXPDP/IMPDP FND_LOBS Table - Standard
DBA Repository - A Repository of Oracle EBS & Database Administration
Tables with LOB columns will not use parallel so parallel
parameter in the expdp/impdp command will not help.
But there is a way to perform the export/import in a concurrent
way i.e splitting up the table into small chunks and performing
the export/import.
This method will logically divide the table based on rowids and
these are balanced internally and the data is divided among each
dumps.
 Analyse FND_LOBS table collect the table size, lob segment
size, no of rows in FND_LOBS table, respective LOB Segment
associated with FILE_DATA column etc.
 Make sure you have sufficient space in the Data pump directory
before initiating the export of FND_LOBS table.
 Initiate the export of FND_LOBS table,
$ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS
QUERY=APPLSYS.FND_LOBS:"where
mod(dbms_rowid.rowid_block_number(rowid), 10) = 0"
directory=DUMP_FND dumpfile=dmp_0.dmp logfile=explog_0.log
exclude=STATISTICS COMPRESSION=NONE metrics=y &
$ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS
QUERY=APPLSYS.FND_LOBS:"where
mod(dbms_rowid.rowid_block_number(rowid), 10) = 1"
directory=DUMP_FND dumpfile=dmp_1.dmp logfile=explog_1.log
exclude=STATISTICS COMPRESSION=NONE metrics=y &
$ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS
QUERY=APPLSYS.FND_LOBS:"where
mod(dbms_rowid.rowid_block_number(rowid), 10) = 2"
directory=DUMP_FND dumpfile=dmp_2.dmp logfile=explog_2.log
exclude=STATISTICS COMPRESSION=NONE metrics=y &
$ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS
QUERY=APPLSYS.FND_LOBS:"where
mod(dbms_rowid.rowid_block_number(rowid), 10) = 3"
directory=DUMP_FND dumpfile=dmp_3.dmp logfile=explog_3.log
exclude=STATISTICS COMPRESSION=NONE metrics=y &
$ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS
QUERY=APPLSYS.FND_LOBS:"where
mod(dbms_rowid.rowid_block_number(rowid), 10) = 4"
directory=DUMP_FND dumpfile=dmp_4.dmp logfile=explog_4.log
exclude=STATISTICS COMPRESSION=NONE metrics=y &
$ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS
QUERY=APPLSYS.FND_LOBS:"where
mod(dbms_rowid.rowid_block_number(rowid), 10) = 5"
Method 3 - EXPDP/IMPDP FND_LOBS Table - Query
Method
DBA Repository - A Repository of Oracle EBS & Database Administration
directory=DUMP_FND dumpfile=dmp_5.dmp logfile=explog_5.log
exclude=STATISTICS COMPRESSION=NONE metrics=y &
$ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS
QUERY=APPLSYS.FND_LOBS:"where
mod(dbms_rowid.rowid_block_number(rowid), 10) = 6"
directory=DUMP_FND dumpfile=dmp_6.dmp logfile=explog_6.log
exclude=STATISTICS COMPRESSION=NONE metrics=y &
$ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS
QUERY=APPLSYS.FND_LOBS:"where
mod(dbms_rowid.rowid_block_number(rowid), 10) = 7"
directory=DUMP_FND dumpfile=dmp_7.dmp logfile=explog_7.log
exclude=STATISTICS COMPRESSION=NONE metrics=y &
$ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS
QUERY=APPLSYS.FND_LOBS:"where
mod(dbms_rowid.rowid_block_number(rowid), 10) = 8"
directory=DUMP_FND dumpfile=dmp_8.dmp logfile=explog_8.log
exclude=STATISTICS COMPRESSION=NONE metrics=y &
$ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS
QUERY=APPLSYS.FND_LOBS:"where
mod(dbms_rowid.rowid_block_number(rowid), 10) = 9"
directory=DUMP_FND dumpfile=dmp_9.dmp logfile=explog_9.log
exclude=STATISTICS COMPRESSION=NONE metrics=y &
Excluding the statistics will help the import operation to
complete faster. Gather stats can be later run after the import
so excluding statistics while exporting is totally fine.
Compression is set to none to mention the expdp not to perform
any compressions while exporting the table.
 Truncate the FND_LOBS after the expdp completes successfully,
SQL> truncate table APPLSYS.FND_LOBS;
 Shrink the FND_LOBS table once to reclaim any unused space,
SQL> ALTER TABLE APPLSYS.FND_LOBS MODIFY LOB (FILE_DATA) (SHRINK
SPACE);
 Import the FND_LOBS table,
$ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_0.dmp
logfile=imp_log_0.log CONTENT=DATA_ONLY &
$ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_1.dmp
logfile=imp_log_1.log CONTENT=DATA_ONLY &
$ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_2.dmp
logfile=imp_log_2.log CONTENT=DATA_ONLY &
$ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_3.dmp
logfile=imp_log_3.log CONTENT=DATA_ONLY &
$ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_4.dmp
logfile=imp_log_4.log CONTENT=DATA_ONLY &
$ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_5.dmp
logfile=imp_log_5.log CONTENT=DATA_ONLY &
$ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_6.dmp
DBA Repository - A Repository of Oracle EBS & Database Administration
logfile=imp_log_6.log CONTENT=DATA_ONLY &
$ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_7.dmp
logfile=imp_log_7.log CONTENT=DATA_ONLY &
$ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_8.dmp
logfile=imp_log_8.log CONTENT=DATA_ONLY &
$ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_9.dmp
logfile=imp_log_9.log CONTENT=DATA_ONLY &
CONTENT is set to DATA_ONLY to mention the impdp to just insert
the data and not to create the FND_LOBS table.
-- Rebuild Index after import
SQL> alter index APPLSYS.FND_NODES_U1 rebuild;
SQL> alter index APPLSYS.FND_NODES_N1 rebuild;
DBA Repository - A Repository of Oracle EBS & Database Administration
All the methods were tried in my environment with proper backups
and agreed business downtime since FND_LOBS is a seeded table.
Prior to implementation of any methods mentioned in this document
EBS/Database Administrators are strongly advised to review the
deployment methods and test them properly prior moving it to the
Business.
References
Avoiding Abnormal Growth of FND_LOBS Table Due To Attachments
Data In E-Business Suite Applications (Doc ID 298698.1)
How To Manage, Reduce, and/or Purged The FND_LOBS Table? (Doc
ID 1288149.1)
Thank You
Please Note
References

More Related Content

Similar to Reorganizing FND_LOBS Table in EBS.pdf

Creating a database
Creating a databaseCreating a database
Creating a database
Rahul Gupta
 
Db2 migration -_tips,_tricks,_and_pitfalls
Db2 migration -_tips,_tricks,_and_pitfallsDb2 migration -_tips,_tricks,_and_pitfalls
Db2 migration -_tips,_tricks,_and_pitfalls
sam2sung2
 
Myth busters - performance tuning 103 2008
Myth busters - performance tuning 103 2008Myth busters - performance tuning 103 2008
Myth busters - performance tuning 103 2008
paulguerin
 

Similar to Reorganizing FND_LOBS Table in EBS.pdf (20)

Columnrename9i
Columnrename9iColumnrename9i
Columnrename9i
 
SQL Server 2014 In-Memory Tables (XTP, Hekaton)
SQL Server 2014 In-Memory Tables (XTP, Hekaton)SQL Server 2014 In-Memory Tables (XTP, Hekaton)
SQL Server 2014 In-Memory Tables (XTP, Hekaton)
 
PPT SQL CLASS.pptx
PPT SQL CLASS.pptxPPT SQL CLASS.pptx
PPT SQL CLASS.pptx
 
MDF and LDF in SQL Server
MDF and LDF in SQL ServerMDF and LDF in SQL Server
MDF and LDF in SQL Server
 
Edition Based Redefinition - Continuous Database Application Evolution with O...
Edition Based Redefinition - Continuous Database Application Evolution with O...Edition Based Redefinition - Continuous Database Application Evolution with O...
Edition Based Redefinition - Continuous Database Application Evolution with O...
 
Creating a database
Creating a databaseCreating a database
Creating a database
 
Hive commands
Hive commandsHive commands
Hive commands
 
Understanding the firebird optimizer
Understanding the firebird optimizerUnderstanding the firebird optimizer
Understanding the firebird optimizer
 
SQL interview questions by jeetendra mandal - part 3
SQL interview questions by jeetendra mandal - part 3SQL interview questions by jeetendra mandal - part 3
SQL interview questions by jeetendra mandal - part 3
 
SQL interview questions by Jeetendra Mandal - part 2
SQL interview questions by Jeetendra Mandal - part 2SQL interview questions by Jeetendra Mandal - part 2
SQL interview questions by Jeetendra Mandal - part 2
 
Db2 migration -_tips,_tricks,_and_pitfalls
Db2 migration -_tips,_tricks,_and_pitfallsDb2 migration -_tips,_tricks,_and_pitfalls
Db2 migration -_tips,_tricks,_and_pitfalls
 
Relational Database Management System
Relational Database Management SystemRelational Database Management System
Relational Database Management System
 
Db2 performance tuning for dummies
Db2 performance tuning for dummiesDb2 performance tuning for dummies
Db2 performance tuning for dummies
 
Sql intro & ddl 1
Sql intro & ddl 1Sql intro & ddl 1
Sql intro & ddl 1
 
Sql intro & ddl 1
Sql intro & ddl 1Sql intro & ddl 1
Sql intro & ddl 1
 
Db2 Important questions to read
Db2 Important questions to readDb2 Important questions to read
Db2 Important questions to read
 
MySQL Essential Training
MySQL Essential TrainingMySQL Essential Training
MySQL Essential Training
 
BASIC OF DATABASE PPT new.pptx
BASIC OF DATABASE PPT  new.pptxBASIC OF DATABASE PPT  new.pptx
BASIC OF DATABASE PPT new.pptx
 
Sql for dbaspresentation
Sql for dbaspresentationSql for dbaspresentation
Sql for dbaspresentation
 
Myth busters - performance tuning 103 2008
Myth busters - performance tuning 103 2008Myth busters - performance tuning 103 2008
Myth busters - performance tuning 103 2008
 

Recently uploaded

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 

Recently uploaded (20)

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
КАТЕРИНА АБЗЯТОВА «Ефективне планування тестування ключові аспекти та практ...
КАТЕРИНА АБЗЯТОВА  «Ефективне планування тестування  ключові аспекти та практ...КАТЕРИНА АБЗЯТОВА  «Ефективне планування тестування  ключові аспекти та практ...
КАТЕРИНА АБЗЯТОВА «Ефективне планування тестування ключові аспекти та практ...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Ransomware Mallox [EN].pdf
Ransomware         Mallox       [EN].pdfRansomware         Mallox       [EN].pdf
Ransomware Mallox [EN].pdf
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 

Reorganizing FND_LOBS Table in EBS.pdf

  • 1. DBA Repository - A Repository of Oracle EBS & Database Administration DBA Repository A Repository of Oracle EBS & Database Administration Reorganizing FND_LOBS Table in Oracle E-Business Suite Akhash Ramnath Doyensys Pvt Ltd
  • 2. DBA Repository - A Repository of Oracle EBS & Database Administration Overview FND_LOBS is a seeded table in Oracle E-Business Suite that enables users to link unstructured data, such as images, word processing documents, spreadsheets, or text to their application data. FND_LOBS is usually one of the top 10 table in an EBS environment considering how the attachments flow through the entire EBS. There are steps to manage the FND_LOBS table, How To Manage, Reduce, and/or Purged The FND_LOBS Table? (Doc ID 1288149.1) It is always recommended to follow the documents provided by Oracle to manage the growth of the FND_LOBS table. But in this document we are going to discuss on how to reorganize a FND_LOBS table in Oracle EBS. I would like to highlight one such activity that i did in the past weeks in one of our business critical project.
  • 3. DBA Repository - A Repository of Oracle EBS & Database Administration FND_LOBS stores all the attachments that have been uploaded to Oracle Applications. The size of the FND_LOBS table in our environment was around 1.5 TB with 45+lakhs record each pertaining to its own Application Module. The technical/functional team of our customer had worked with the Oracle Support and had purged 50% of data that was no longer required for the business from the EBS. Although the purging was successful the size of the FND_LOBS table was still the same. There was no difference in the size of the table and its LOB Segment. So we decided to perform a re-org for FND_LOBS table. Reorganizing a table would make sure that there is no water marking, the unused space of the table can be gained and the performance of the table would be improved. There are three different methods to re-org a table, a. Move table b. Export, truncate/drop & Import the table c. CTAS - Create Table as Select * from tablename (We did not use this, but it involves us to create a copy of the source table as 'create table table_name as select * from applsys.fnd_lobs' then truncate the source table and insert records from the backup table) I had an opportunity to perform Move table & EXPDP/IMPDP the FND_LOBS table for our customer. Both methods are recommended and will provide the same output. But the time take to perform each operation can differ based on the size and the resources of the database server. Moving a table is pretty straight forward method, whereas perform EXPDP/IMPDP on FND_LOBS can be a little trickier. The FND_LOBS table comes with a BLOB column FILE_DATA which stops us from using the parameter PARALLEL in EXPDP/IMPDP operation. Not using the PARALLEL parameter stops us from using its advantages and we have to depend on the single EXPIMP/IMPDB command/task to complete. As an alternative to PARALLEL we can perform the EXPDP/IMPDP operation on FND_LOBS table by splitting the data of the FND_LOBS table in smaller chunks. QUERY parameter helps us to perform the EXPDP/IMPDP in a concurrent way by splitting up the table into small chunks. We will see how to Move the FND_LOBS table and how to perform EXPDP/IMPDP on FND_LOBS table.
  • 4. DBA Repository - A Repository of Oracle EBS & Database Administration Move Table is a feature in Oracle Database that enables us to rebuild the Oracle tables.  Find the Size of the FND_LOBS table and its associated lob_segment size. SQL> select owner, table_name, column_name, segment_name, tablespace_name from dba_lobs where table_name='FND_LOBS'; SQL> select a.owner, a.object_name, a.object_type, a.created, b.tablespace_name,sum(b.bytes/1024/1024) from dba_objects a, dba_segments b where a.object_name=b.segment_name and a.object_name = '&segment_name_from_previousquery' group by a.owner, a.object_name, a.object_type, a.created, b.tablespace_name order by 6 desc; Get the segment_name, tablespace_name, lob_segment name from the above queries. Note : - Alter table Move shall be performed in two ways, 1. Move the table within the tablespace. More space needs to be added to the tablespace and then later can be resized after the table is successfully moved. 2. Move the table to another tablespace and move it back to its original tablespace. A new tablespace with the same size shall be created and later dropped once the table is successfully moved. Using this method the table needs to be moved twice. (Source tablespace to new tablespace and from new tablespace to its original source tablespace) Alter table Move can be performed online, but performing the move table when EBS application online will be time consuming. It is better to bring down the EBS services for faster completion and avoid any errors. Method 1 - Move FND_LOBS Table
  • 5. DBA Repository - A Repository of Oracle EBS & Database Administration  Add sufficient space to the tablespace of FND_LOBS for the move task, for example if your FND_LOBS lob_segement size is 500 GB add datafiles of 500GB.If you want to create a new tablespace for this, then create a new tablespace with the same size of the FND_LOBS and its LOB_SEGMENT.  Perform FND_LOBS move. SQL> alter table applsys.fnd_lobs move; (or) SQL> alter table applsys.fnd_lobs move tablespace target_tablespace.  Move the respective LOB_SEGMENT of FND_LOBS, SQL> alter table APPLSYS.FND_LOBS move lob (FILE_DATA) store as segment_name_from_previousquery; (or) SQL> alter table APPLSYS.FND_LOBS move LOB (FILE_DATA) store as segment_name_from_previousquery tablespace target_tablespace;  After the FND_LOBS and its LOB Segment is moved to another tablespace, move it back to its original source tablespace. SQL> alter table applsys.fnd_lobs move tablespace source_tablespace. (or) SQL> alter table APPLSYS.FND_LOBS move LOB (FILE_DATA) store as segment_name_from_previousquery tablespace source_tablespace; The LOB_SEGMENT index will be rebuild automatically as part of move table.
  • 6. DBA Repository - A Repository of Oracle EBS & Database Administration DATAPUMP the FND_LOBS table using the standard expdp/impdp method  Analyse FND_LOBS table collect the table size, lob segment size, no of rows in FND_LOBS table, respective LOB Segment associated with FILE_DATA column etc.  Make sure you have sufficient space in the Data pump directory before initiating the export of FND_LOBS table.  Initiate the export of FND_LOBS table, $ expdp "'/ as sysdba'" tables=APPLSYS.FND_LOBS directory=DUMP_FND dumpfile=dev_fndlobs.dmp logfile=dev_fndlobs.log exclude=STATISTICS COMPRESSION=NONE Excluding the statistics will help the import operation to complete faster. Gather stats can be later run after the import so excluding statistics while exporting is totally fine. Compression is set to none to mention the expdp not to perform any compressions while exporting the table.  Truncate the FND_LOBS after the expdp completes successfully, SQL> truncate table APPLSYS.FND_LOBS;  Shrink the FND_LOBS table once to reclaim any unused space, SQL> ALTER TABLE APPLSYS.FND_LOBS MODIFY LOB (FILE_DATA) (SHRINK SPACE);  Impor the FND_LOBS table, $ impdp "'/ as sysdba'" tables=APPLSYS.FND_LOBS directory=DUMP_FND dumpfile=dev_fnd_01.dmp logfile=impdp_fndlobs_2.log table_exists_action=APPEND Table_Exist_Action is set to append to mention the impdp to just insert the data and not to create the FND_LOBS table. -- Rebuild Index after import SQL> alter index APPLSYS.FND_NODES_U1 rebuild; SQL> alter index APPLSYS.FND_NODES_N1 rebuild; Method 2 - EXPDP/IMPDP FND_LOBS Table - Standard
  • 7. DBA Repository - A Repository of Oracle EBS & Database Administration Tables with LOB columns will not use parallel so parallel parameter in the expdp/impdp command will not help. But there is a way to perform the export/import in a concurrent way i.e splitting up the table into small chunks and performing the export/import. This method will logically divide the table based on rowids and these are balanced internally and the data is divided among each dumps.  Analyse FND_LOBS table collect the table size, lob segment size, no of rows in FND_LOBS table, respective LOB Segment associated with FILE_DATA column etc.  Make sure you have sufficient space in the Data pump directory before initiating the export of FND_LOBS table.  Initiate the export of FND_LOBS table, $ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS QUERY=APPLSYS.FND_LOBS:"where mod(dbms_rowid.rowid_block_number(rowid), 10) = 0" directory=DUMP_FND dumpfile=dmp_0.dmp logfile=explog_0.log exclude=STATISTICS COMPRESSION=NONE metrics=y & $ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS QUERY=APPLSYS.FND_LOBS:"where mod(dbms_rowid.rowid_block_number(rowid), 10) = 1" directory=DUMP_FND dumpfile=dmp_1.dmp logfile=explog_1.log exclude=STATISTICS COMPRESSION=NONE metrics=y & $ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS QUERY=APPLSYS.FND_LOBS:"where mod(dbms_rowid.rowid_block_number(rowid), 10) = 2" directory=DUMP_FND dumpfile=dmp_2.dmp logfile=explog_2.log exclude=STATISTICS COMPRESSION=NONE metrics=y & $ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS QUERY=APPLSYS.FND_LOBS:"where mod(dbms_rowid.rowid_block_number(rowid), 10) = 3" directory=DUMP_FND dumpfile=dmp_3.dmp logfile=explog_3.log exclude=STATISTICS COMPRESSION=NONE metrics=y & $ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS QUERY=APPLSYS.FND_LOBS:"where mod(dbms_rowid.rowid_block_number(rowid), 10) = 4" directory=DUMP_FND dumpfile=dmp_4.dmp logfile=explog_4.log exclude=STATISTICS COMPRESSION=NONE metrics=y & $ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS QUERY=APPLSYS.FND_LOBS:"where mod(dbms_rowid.rowid_block_number(rowid), 10) = 5" Method 3 - EXPDP/IMPDP FND_LOBS Table - Query Method
  • 8. DBA Repository - A Repository of Oracle EBS & Database Administration directory=DUMP_FND dumpfile=dmp_5.dmp logfile=explog_5.log exclude=STATISTICS COMPRESSION=NONE metrics=y & $ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS QUERY=APPLSYS.FND_LOBS:"where mod(dbms_rowid.rowid_block_number(rowid), 10) = 6" directory=DUMP_FND dumpfile=dmp_6.dmp logfile=explog_6.log exclude=STATISTICS COMPRESSION=NONE metrics=y & $ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS QUERY=APPLSYS.FND_LOBS:"where mod(dbms_rowid.rowid_block_number(rowid), 10) = 7" directory=DUMP_FND dumpfile=dmp_7.dmp logfile=explog_7.log exclude=STATISTICS COMPRESSION=NONE metrics=y & $ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS QUERY=APPLSYS.FND_LOBS:"where mod(dbms_rowid.rowid_block_number(rowid), 10) = 8" directory=DUMP_FND dumpfile=dmp_8.dmp logfile=explog_8.log exclude=STATISTICS COMPRESSION=NONE metrics=y & $ expdp "'/ as sysdba'" TABLES=APPLSYS.FND_LOBS QUERY=APPLSYS.FND_LOBS:"where mod(dbms_rowid.rowid_block_number(rowid), 10) = 9" directory=DUMP_FND dumpfile=dmp_9.dmp logfile=explog_9.log exclude=STATISTICS COMPRESSION=NONE metrics=y & Excluding the statistics will help the import operation to complete faster. Gather stats can be later run after the import so excluding statistics while exporting is totally fine. Compression is set to none to mention the expdp not to perform any compressions while exporting the table.  Truncate the FND_LOBS after the expdp completes successfully, SQL> truncate table APPLSYS.FND_LOBS;  Shrink the FND_LOBS table once to reclaim any unused space, SQL> ALTER TABLE APPLSYS.FND_LOBS MODIFY LOB (FILE_DATA) (SHRINK SPACE);  Import the FND_LOBS table, $ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_0.dmp logfile=imp_log_0.log CONTENT=DATA_ONLY & $ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_1.dmp logfile=imp_log_1.log CONTENT=DATA_ONLY & $ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_2.dmp logfile=imp_log_2.log CONTENT=DATA_ONLY & $ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_3.dmp logfile=imp_log_3.log CONTENT=DATA_ONLY & $ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_4.dmp logfile=imp_log_4.log CONTENT=DATA_ONLY & $ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_5.dmp logfile=imp_log_5.log CONTENT=DATA_ONLY & $ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_6.dmp
  • 9. DBA Repository - A Repository of Oracle EBS & Database Administration logfile=imp_log_6.log CONTENT=DATA_ONLY & $ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_7.dmp logfile=imp_log_7.log CONTENT=DATA_ONLY & $ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_8.dmp logfile=imp_log_8.log CONTENT=DATA_ONLY & $ impdp "'/ as sysdba'" directory=DUMP_FND dumpfile=dmp_9.dmp logfile=imp_log_9.log CONTENT=DATA_ONLY & CONTENT is set to DATA_ONLY to mention the impdp to just insert the data and not to create the FND_LOBS table. -- Rebuild Index after import SQL> alter index APPLSYS.FND_NODES_U1 rebuild; SQL> alter index APPLSYS.FND_NODES_N1 rebuild;
  • 10. DBA Repository - A Repository of Oracle EBS & Database Administration All the methods were tried in my environment with proper backups and agreed business downtime since FND_LOBS is a seeded table. Prior to implementation of any methods mentioned in this document EBS/Database Administrators are strongly advised to review the deployment methods and test them properly prior moving it to the Business. References Avoiding Abnormal Growth of FND_LOBS Table Due To Attachments Data In E-Business Suite Applications (Doc ID 298698.1) How To Manage, Reduce, and/or Purged The FND_LOBS Table? (Doc ID 1288149.1) Thank You Please Note References