
{"id":7131,"date":"2021-08-06T13:12:48","date_gmt":"2021-08-06T13:12:48","guid":{"rendered":"https:\/\/rax-stg-wp-aws.com\/blogs\/using-supplemental-utl_file_dir-in-ebs-release-12-with-19c-database\/"},"modified":"2026-11-03T19:27:54","modified_gmt":"2026-11-03T19:27:54","slug":"using-supplemental-utl_file_dir-in-ebs-release-12-with-19c-database","status":"publish","type":"blogs","link":"https:\/\/www.rackspace.com\/en-gb\/blogs\/using-supplemental-utl_file_dir-in-ebs-release-12-with-19c-database\/","title":{"rendered":"Using supplemental utl_file_dir in EBS Release 12 with 19c database"},"content":{"rendered":"<p>The Oracle E-Business suite uses OS level directories for <em>PL\/Sql File I\/O<\/em> for many different tasks such as generating temporary files, debugging files, log and output files etc. This <em>PL\/Sql File I\/O&nbsp;&nbsp;<\/em>is generally done using <em>utl_file<\/em> or <em>fnd_file<\/em> packages. However, starting&nbsp;with 18c version of the database, Oracle has de-supported the <em>utl_file_dir<\/em> parameter.&nbsp;<br \/>\nHence, to tackle this limitation in E-Business Suite product, Oracle introduced a supplemental&nbsp;<em>utl_file_dir<\/em> parameter. Oracle introduced new views <em>apps.v$parameter<\/em> and&nbsp;<em>apps.v$parameter2<\/em>, which provides and stores this new supplemental <em>utl_file_dir<\/em> feature.&nbsp;<\/p>\n<p>In this blog, we will review how to use this new supplemental <em>utl_file_dir <\/em>feature in&nbsp;EBS R12 with a 19c database.<\/p>\n<p>Before database release 12c and earlier, the initialization parameter <em>utl_file_parameter<\/em> was&nbsp;used to deal with PL\/Sql related File I\/O. To add a new path to have PL\/Sql enabled File I\/O, it was essential to add the OS path in the utl_file_dir parameter list and bounce the database.&nbsp;Only then developers could use that path in the EBS programs to perform File I\/O using <em>utl_file<\/em>&nbsp;or <em>fnd_file<\/em>&nbsp;packages.Once the OS directory path was added to the <em>utl_file_parameter<\/em>, one could use the packages&nbsp;such as <em>utl_file<\/em>&nbsp;and <em>fnd_file<\/em> for PL\/Sql File I\/O.&nbsp;<\/p>\n<p>\nThe following given image shows some example outputs of how one could perform PL\/Sql File I\/O once <em>utl_file_dir <\/em>was enabled.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/blog_article_images\/26271-body-picture-1.png\" alt=\"utl pic 1\" \/><\/p>\n<p>Now, starting with 19c database, to add\/modify\/delete an OS directory path for PL\/Sql File I\/O with EBS R12, you need to use script <em>txkCfgUtlfileDir.pl<\/em>&nbsp;provided under <em>$ORACLE_HOME\/appsutil<\/em>&nbsp;path. This same script is also used to migrate these directory paths during the upgrade also (from 12c or earlier versions) to the 19c database.&nbsp;<br \/>\nThe following steps cover how to add\/modify\/delete a directory path to supplemental <em>utl_file_dir<\/em>.&nbsp;<br \/>\nYou need to enable the below event as a database initialization parameter at the CDB level to enable this feature.<\/p>\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <em>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;event=&#8217;10946 trace name context forever, level 8454144&#8242;<\/em><\/p>\n<p>1. To add\/modify\/delete a directory path in the supplemental <em>utl_file_dir<\/em> parameter, you need to complete the following steps in a sequence:<\/p>\n<p>Get the list of directory paths which currently exist in the supplemental <em>utl_file_dir<\/em> parameter. You need to source the PDB environment and then run script <em>txkCfgUtlfileDir.pl<\/em> in <em>getUtlFileDir<\/em> mode.&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp; &nbsp; <em>&nbsp; &nbsp; &nbsp; $ . Run the following command $ORACLE_HOME\/&lt;pdb_name&gt;_&lt;hostname&gt;.env<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $ perl $ORACLE_HOME\/appsutil\/bin\/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE \\<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME\/appsutil\/log -mode=getUtlFileDir &#8211;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; servicetype=onpremise<\/em><\/p>\n<p>This script creates a text file named <em>&lt;PDBNAME&gt;_utlfiledir.txt<\/em>&nbsp;in the <em>&lt;ORACLE_HOME&gt;\/dbs<\/em>&nbsp;directory which lists the existing directories defined in the supplemental <em>utl_file_dir<\/em> list. This step reads the contents from <em>apps.v$parameter<\/em>&nbsp;and populates these to the file <em>$ORACLE_HOME\/dbs\/&lt;PDBNAME&gt;_utlfiledir.txt<\/em>.<\/p>\n<p>2. Edit the text file <em>$ORACLE_HOME\/dbs\/&lt;PDBNAME&gt;_utlfiledir.txt<\/em>&nbsp;to add, modify or delete the OS directory path as per your requirement. Also verify that the new directory path is created\/exists at the OS level and it should not have any soft links, as soft links in directory paths have also been deprecated in 19c version.<\/p>\n<p>3. Now run the <em>txkCfgUtlfileDir.pl<\/em>&nbsp;script again in <em>setUtlFileDir<\/em>&nbsp;mode now to update the value of the supplemental <em>utl_file_dir<\/em>.<\/p>\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <em>&nbsp; &nbsp; &nbsp; &nbsp;$ . $ORACLE_HOME\/&lt;pdb_name&gt;_&lt;hostname&gt;.env<\/em><\/p>\n<p><em>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$ perl $ORACLE_HOME\/appsutil\/bin\/txkCfgUtlfileDir.pl -contextfile=$CONTEXT_FILE&nbsp;-oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME\/appsutil\/log -mode=setUtlFileDir -servicetype=onpremise|opc<\/em><\/p>\n<p>This step updates the<em>&nbsp;apps.v$parameter <\/em>view with the values available in file <em>$ORACLE_HOME\/dbs\/&lt;PDBNAME&gt;_utlfiledir.txt.<\/em><\/p>\n<p><em>4. <\/em>Now you can sync these values with the DB tier context file using the following:<\/p>\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<em> &nbsp; $ . $ORACLE_HOME\/&lt;pdb_name&gt;_&lt;hostname&gt;.env<\/em><\/p>\n<p><em>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$ perl $ORACLE_HOME\/appsutil\/bin\/txkCfgUtlfileDir.pl&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#8211;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; contextfile=$CONTEXT_FILE \\<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -oraclehome=$ORACLE_HOME -outdir=$ORACLE_HOME\/appsutil\/log &#8211;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mode=syncUtlFileDir -servicetype=onpremise<\/em><\/p>\n<p>You can verify the changes to supplemental <em>utl_file_dir<\/em> using a select query output from <em>apps.v$parameter<\/em>&nbsp;or <em>apps.v$parameter2<\/em>&nbsp;like below:<\/p>\n<p>Select value from <em>apps.v$parameter<\/em>&nbsp;where <em>name=&#8217;utl_file_dir&#8217;<\/em>;<\/p>\n<p>The above steps also create a corresponding entry for directory objects in <em>dba_directories<\/em>. Once the above steps are completed, a new directory path added to the supplemental <em>utl_file_dir<\/em>&nbsp;will be available for use by E-Business programs.&nbsp;<\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>One good advantage of this feature is that in database releases 12c and earlier versions, database bounce was needed whenever one needed to add\/modify\/delete a path in the <em>utl_file_dir<\/em>&nbsp;parameter. However, no downtime is needed while adding\/deleting\/modifying the path in the supplemental <em>utl_file_dir<\/em>&nbsp;list in 19c.&nbsp;<\/p>\n<p>Also, please note that the two new views (i.e., <em>apps.v$parameter<\/em> and <em>apps.v$parameter2<\/em>) required for this new feature have been introduced in the APPS schema. So the steps mentioned above are particular only for Oracle E-Business Suite Release 12 applications (i.e., 12.1.3 and 12.2).<\/p>\n<p>&nbsp;<\/p>\n<p><strong>References&nbsp;<\/strong><\/p>\n<p>Using UTL_FILE_DIR or Database Directories for PL\/SQL File I\/O in Oracle E-Business Suite Releases 12.1 and 12.2 (Doc ID 2525754.1)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Using supplemental utl_file_dir in EBS Release 12 with 19c database<\/p>\n","protected":false},"author":2,"featured_media":7133,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","format":"standard","meta":{"content-type":"","nid":"26271","content_type":"blog","created_by":"10130","authored_on":"2023-11-21T14:12:48+00:00","field_article_industries":"","tag_category":"Technical","field_blog_author_text":"By Manoj Chawla, Oracle Applications Database Administrator, Rackspace Technology","seo_description":"Dive into using the new supplemental utl_file_dir feature in EBS R12 with a 19c database, a critical update for handling PL\/Sql File I\/O.\r\n","field_featured_image":"","insights_image":"\/wp-content\/uploads\/2026\/blog_technical_images\/26271-insights_image-oracle-technical-blog-1-insights.jpg","field_partners":"","rxt_platforms":"Oracle","product":"","publisheddate":"2021-08-06T13:12:48","rxt_solutions":"Databases","opengraph_tag":"","x_tag":"","teaser_flag":"Technical Blog","seo_titile":"utl_file_dir Oracle R12 with 19c db | Rackspace Technology","field_topics":"","field_slug":"using-supplemental-utl_file_dir-in-EBS-Release-12-with-19c-database","footnotes":""},"categories":[178],"tags":[204],"class_list":["post-7131","blogs","type-blogs","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-technical"],"_links":{"self":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs\/7131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs"}],"about":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/types\/blogs"}],"author":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/comments?post=7131"}],"version-history":[{"count":2,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs\/7131\/revisions"}],"predecessor-version":[{"id":9025,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/blogs\/7131\/revisions\/9025"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/media\/7133"}],"wp:attachment":[{"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/media?parent=7131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/categories?post=7131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rackspace.com\/en-gb\/wp-json\/wp\/v2\/tags?post=7131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}