<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>OpenText Analytics Database 26.2.x – Managing storage locations</title>
    <link>/en/admin/managing-storage-locations/</link>
    <description>Recent content in Managing storage locations on OpenText Analytics Database 26.2.x</description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="/en/admin/managing-storage-locations/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Admin: Viewing storage locations and policies</title>
      <link>/en/admin/managing-storage-locations/viewing-storage-locations-and-policies/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/managing-storage-locations/viewing-storage-locations-and-policies/</guid>
      <description>
        
        
        &lt;p&gt;You can monitor information about available storage location labels and your current storage policies.&lt;/p&gt;
&lt;h2 id=&#34;viewing-disk-storage-information&#34;&gt;Viewing disk storage information&lt;/h2&gt;
&lt;p&gt;Query the &lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/disk-storage/&#34;&gt;V_MONITOR.DISK_STORAGE&lt;/a&gt; system table for disk storage information on each database node. For more information, see &lt;a href=&#34;../../../en/admin/monitoring/using-system-tables/#&#34;&gt;Using system tables&lt;/a&gt; and &lt;a href=&#34;../../../en/admin/managing-storage-locations/altering-location-use/#&#34;&gt;Altering location use&lt;/a&gt;. The &lt;code&gt;V_MONITOR.DISK_STORAGE&lt;/code&gt; system table includes a CATALOG annotation, indicating that the location is used to store catalog files.

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

You cannot add or remove a catalog storage location. The database creates and manages this storage location internally, and the area exists in the same location on each cluster node.

&lt;/div&gt;&lt;/p&gt;
&lt;h2 id=&#34;viewing-location-labels&#34;&gt;Viewing location labels&lt;/h2&gt;
&lt;p&gt;Three system tables have information about storage location labels in their &lt;code&gt;location_labels&lt;/code&gt; columns:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;storage_containers&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;storage_locations&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;partitions&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use a query such as the following for relevant columns of the &lt;code&gt;storage_containers&lt;/code&gt; system table:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;VMART=&amp;gt; select node_name,projection_name, location_label from v_monitor.storage_containers;
    node_name     |   projection_name    | location_label
------------------+----------------------+-----------------
 v_vmart_node0001 | states_p             |
 v_vmart_node0001 | states_p             |
 v_vmart_node0001 | t1_b1                |
 v_vmart_node0001 | newstates_b0         | FAST3
 v_vmart_node0001 | newstates_b0         | FAST3
 v_vmart_node0001 | newstates_b1         | FAST3
 v_vmart_node0001 | newstates_b1         | FAST3
 v_vmart_node0001 | newstates_b1         | FAST3
 .
 .
 .
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Use a query such as the following for columns of the &lt;code&gt;v_catalog.storage_locations&lt;/code&gt; system_table:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;VMart=&amp;gt; select node_name, location_path, location_usage, location_label from storage_locations;
    node_name     |               location_path               | location_usage | location_label
------------------+-------------------------------------------+----------------+----------------
 v_vmart_node0001 | /home/dbadmin/VMart/v_vmart_node0001_data | DATA,TEMP      |
 v_vmart_node0001 | home/dbadmin/SSD/schemas                  | DATA           |
 v_vmart_node0001 | /home/dbadmin/SSD/tables                  | DATA           | SSD
 v_vmart_node0001 | /home/dbadmin/SSD/schemas                 | DATA           | Schema
 v_vmart_node0002 | /home/dbadmin/VMart/v_vmart_node0002_data | DATA,TEMP      |
 v_vmart_node0002 | /home/dbadmin/SSD/tables                  | DATA           |
 v_vmart_node0002 | /home/dbadmin/SSD/schemas                 | DATA           |
 v_vmart_node0003 | /home/dbadmin/VMart/v_vmart_node0003_data | DATA,TEMP      |
 v_vmart_node0003 | /home/dbadmin/SSD/tables                  | DATA           |
 v_vmart_node0003 | /home/dbadmin/SSD/schemas                 | DATA           |
(10 rows)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Use a query such as the following for columns of the &lt;code&gt;v_monitor.partitions&lt;/code&gt; system table:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;VMART=&amp;gt; select partition_key, projection_name, location_label from v_monitor.partitions;
 partition_key |   projection_name    | location_label
---------------+----------------------+---------------
 NH            | states_b0            | FAST3
 MA            | states_b0            | FAST3
 VT            | states_b1            | FAST3
 ME            | states_b1            | FAST3
 CT            | states_b1            | FAST3
 .
 .
 .
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;viewing-storage-tiers&#34;&gt;Viewing storage tiers&lt;/h2&gt;
&lt;p&gt;Query the &lt;code&gt;storage_tiers&lt;/code&gt; system table to see both the labeled and unlabeled storage containers and information about them:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;VMart=&amp;gt; select * from v_monitor.storage_tiers;
 location_label | node_count | location_count | ros_container_count | total_occupied_size
----------------+------------+----------------+---------------------+---------------------
                |          1 |              2 |                  17 |           297039391
 SSD            |          1 |              1 |                   9 |                1506
 Schema         |          1 |              1 |                   0 |                   0
(3 rows)
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;viewing-storage-policies&#34;&gt;Viewing storage policies&lt;/h2&gt;
&lt;p&gt;Query the &lt;code&gt;storage_policies&lt;/code&gt; system table to view the current storage policy in place.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;VMART=&amp;gt; select * from v_monitor.storage_policies;
 schema_name | object_name |  policy_details  | location_label
-------------+-------------+------------------+-----------------
             | public      | Schema           | F4
 public      | lineorder   | Partition [4, 4] | M3
(2 rows)
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>Admin: Creating storage locations</title>
      <link>/en/admin/managing-storage-locations/creating-storage-locations/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/managing-storage-locations/creating-storage-locations/</guid>
      <description>
        
        
        &lt;p&gt;You can use &lt;a href=&#34;../../../en/sql-reference/statements/create-statements/create-location/#&#34;&gt;CREATE LOCATION&lt;/a&gt; to add and configure storage locations (other than the required defaults) to provide storage for these purposes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Isolating execution engine temporary files from data files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating &lt;a class=&#34;glosslink&#34; href=&#34;../../../en/glossary/location-label/&#34; title=&#34;A label assigned to a storage location.&#34;&gt;labeled locations&lt;/a&gt; to use in storage policies.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating storage locations based on predicted or measured access patterns.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating USER storage locations for specific users or user groups.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creating additional communal storage locations for Eon Mode databases.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;admonition important&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Important&lt;/h4&gt;
While no technical issue prevents you from using CREATE LOCATION to add one or more Network File System (NFS) storage locations, Vertica does not support NFS data or catalog storage except for MapR mount points. You will be unable to run queries against any other NFS data. When creating locations on MapR file systems, you must specify ALL NODES SHARED.
&lt;/div&gt;
&lt;p&gt;You can add a new storage location from one node to another node or from a single node to all cluster nodes. However, do not use a shared directory on one node for other cluster nodes to access.&lt;/p&gt;
&lt;h2 id=&#34;planning-storage-locations&#34;&gt;Planning storage locations&lt;/h2&gt;
&lt;p&gt;Before adding a storage location, perform the following steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Verify that the directory you plan to use for a storage location destination is an empty directory with write permissions for the database process.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Plan the labels to use if you want to label the location as you create it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Determine the type of information to store in the storage location:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;DATA,TEMP&lt;/code&gt; (default): The storage location can store persistent and temporary DML-generated data, and data for temporary tables.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;TEMP&lt;/code&gt;: A &lt;em&gt;&lt;code&gt;path&lt;/code&gt;&lt;/em&gt;-specified location to store DML-generated temporary data. If &lt;em&gt;&lt;code&gt;path&lt;/code&gt;&lt;/em&gt; is set to S3, then this location is used only when the RemoteStorageForTemp configuration parameter is set to 1, and &lt;code&gt;TEMP&lt;/code&gt; must be qualified with ALL NODES SHARED. For details, see &lt;a href=&#34;../../../en/admin/managing-storage-locations/creating-storage-locations/#Temporar&#34;&gt;S3 Storage of Temporary Data&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;DATA&lt;/code&gt;: The storage location can only store persistent data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;USER&lt;/code&gt;: Users with READ and WRITE &lt;a href=&#34;../../../en/sql-reference/statements/grant-statements/grant-storage-location/&#34;&gt;privileges&lt;/a&gt; can access data and &lt;a href=&#34;../../../en/data-load/working-with-external-data/&#34;&gt;external tables&lt;/a&gt; of this storage location.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;DEPOT&lt;/code&gt;: The storage location is used in &lt;a class=&#34;glosslink&#34; href=&#34;../../../en/glossary/eon/&#34; title=&#34;Eon Mode is the database mode that optimizes your database for scalability.&#34;&gt;Eon Mode&lt;/a&gt; to store the depot. Only create &lt;code&gt;DEPOT&lt;/code&gt; storage locations on local Linux file systems.&lt;/p&gt;
&lt;p&gt;Vertica allows a single &lt;code&gt;DEPOT&lt;/code&gt; storage location per node. If you want to move your depot to different location (on a different file system, for example) you must first drop the old depot storage location, then create the new location.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Storing temp and data files in different storage locations is advantageous because the two types of data have different disk I/O access patterns. Temp files are distributed across locations based on available storage space. However, data files can be stored on different storage locations, based on storage policy, to reflect predicted or measured access patterns.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you plan to place storage locations on HDFS, see &lt;a href=&#34;../../../en/admin/managing-storage-locations/storage-locations-on-hdfs/requirements-hdfs-storage-locations/#&#34;&gt;Requirements for HDFS storage locations&lt;/a&gt; for additional requirements.&lt;/p&gt;
&lt;h2 id=&#34;creating-unlabeled-local-storage-locations&#34;&gt;Creating unlabeled local storage locations&lt;/h2&gt;
&lt;p&gt;This example shows a three-node cluster, each with a &lt;code&gt;vertica/SSD&lt;/code&gt; directory for storage.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/working-with-storage-locations1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;On each node in the cluster, create a directory where the node stores its data. For example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ mkdir /home/dbadmin/vertica/SSD
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It is recommended that you create the same directory path on each node. Use this path when creating a storage location.&lt;/p&gt;
&lt;p&gt;Use the &lt;a href=&#34;../../../en/sql-reference/statements/create-statements/create-location/#&#34;&gt;CREATE LOCATION&lt;/a&gt; statement to add a storage location. Specify the following information:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The path on the node where the database stores the data.&lt;/p&gt;

&lt;div class=&#34;admonition important&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Important&lt;/h4&gt;
The database does not validate the path that you specify. Confirm that the path value points to a valid location.
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The node where the location is available, or ALL NODES. If you specify ALL NODES, the statement creates the storage locations on all nodes in the cluster in a single transaction.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The type of information to be stored.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To give unprivileged (non-dbadmin) Linux users access to data, you must create a USER storage location. You can also use a USER storage location to give users without their own credentials access to shared file systems and object stores like HDFS and S3. See &lt;a href=&#34;#Creating&#34;&gt;Creating a Storage Location for USER Access&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The following example shows how to add a location available on all nodes to store only data:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LOCATION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;/home/dbadmin/vertica/SSD/&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ALL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NODES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USAGE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;DATA&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The following example shows how to add a location that is available on the v_vmart_node0001 node to store data and temporary files:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LOCATION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;/home/dbadmin/vertica/SSD/&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NODE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;v_vmart_node0001&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To create an additional communal storage location for an Eon Mode database, you must provide the COMMUNAL option and specify &lt;code&gt;&#39;DATA&#39;&lt;/code&gt; for the USAGE option:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LOCATION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;s3://bucket/s3&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;COMMUNAL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USAGE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;DATA&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LABEL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;s3&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Suppose you are using a storage location for data files and want to create ranked storage locations. In this ranking, columns are stored on different disks based on their measured performance. To create ranked storage locations, see &lt;a href=&#34;../../../en/admin/managing-storage-locations/measuring-storage-performance/#&#34;&gt;Measuring storage performance&lt;/a&gt; and &lt;a href=&#34;../../../en/admin/managing-storage-locations/setting-storage-performance/#&#34;&gt;Setting storage performance&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;After you create a storage location, you can alter the type of information it stores, with some restrictions. See &lt;a href=&#34;../../../en/admin/managing-storage-locations/altering-location-use/#&#34;&gt;Altering location use&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;storage-location-subdirectories&#34;&gt;Storage location subdirectories&lt;/h2&gt;
&lt;p&gt;You cannot create a storage location in a subdirectory of an existing storage location. Doing so results in an error similar to the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LOCATION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;/tmp/myloc&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ALL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NODES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USAGE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;TEMP&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LOCATION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LOCATION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;/tmp/myloc/ssd&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ALL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NODES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USAGE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;TEMP&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ERROR&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;5615&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;Location&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tmp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;myloc&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ssd&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;conflicts&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;with&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;existing&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;location&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;tmp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;myloc&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;on&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;node&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v_vmart_node0001&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;creating-labeled-storage-locations&#34;&gt;Creating labeled storage locations&lt;/h2&gt;
&lt;p&gt;You can add a storage location with a descriptive label using the CREATE LOCATION statement&#39;s LABEL keyword. You use labeled locations to set up storage policies. See &lt;a href=&#34;../../../en/admin/managing-storage-locations/creating-storage-policies/#&#34;&gt;Creating storage policies&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This example shows how to create a storage location on v_mart_node0002 with the label SSD:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LOCATION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;/home/dbadmin/SSD/schemas&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NODE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;v_vmart_node0002&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USAGE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;DATA&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LABEL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;SSD&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This example shows you how to create a storage location on all nodes. Specifying the ALL NODES keyword adds the storage location to all nodes in a single transaction:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LOCATION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;/home/dbadmin/SSD/schemas&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ALL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NODES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USAGE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;DATA&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LABEL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;SSD&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The new storage location is listed in the &lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/disk-storage/#&#34;&gt;DISK_STORAGE&lt;/a&gt; system table:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;*&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;FROM&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v_monitor&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;disk_storage&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RECORD&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;-----------+-----------------------------------------------------
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;node_name&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;               &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;v_vmart_node0002&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;storage_path&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;            &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;home&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;dbadmin&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SSD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;schemas&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;storage_usage&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;           &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DATA&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;rank&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;                    &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;throughput&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;              &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;latency&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;                 &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;storage_status&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;          &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Active&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;disk_block_size_bytes&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;4096&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;disk_space_used_blocks&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1549437&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;disk_space_used_mb&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;6053&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;disk_space_free_blocks&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;13380004&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;disk_space_free_mb&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;52265&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;disk_space_free_percent&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;|&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;89&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;%&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;...&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a name=&#34;Creating&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;creating-a-storage-location-for-user-access&#34;&gt;Creating a storage location for USER access&lt;/h2&gt;
&lt;p&gt;To give unprivileged (non-dbadmin) Linux users access to data, you must create a USER storage location.&lt;/p&gt;
&lt;p&gt;By default, OpenText™ Analytics Database uses user-provided credentials to access external file systems such as HDFS and cloud object stores. You can override this default and create a USER storage location to manage access to these locations. To override the default, set the &lt;a href=&#34;../../../en/sql-reference/config-parameters/general-parameters/#UseServerIdentityOverUserIdentity&#34;&gt;UseServerIdentityOverUserIdentity&lt;/a&gt; configuration parameter.&lt;/p&gt;
&lt;p&gt;After you create a USER storage location, you can grant one or more users access to it. USER storage locations grant access only to data files, not temp files. You cannot assign a USER storage location to a storage policy. You cannot change an existing storage location to have USER access.&lt;/p&gt;
&lt;p&gt;The following example shows how to create a USER storage location on a specific node:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LOCATION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;/home/dbadmin/UserStorage/BobStore&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NODE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;v_mcdb_node0007&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USAGE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;USER&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The following example shows how to grant a specific user read and write permissions to the location:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;GRANT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ALL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LOCATION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;/home/dbadmin/UserStorage/BobStore&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Bob&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;GRANT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;PRIVILEGE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The following example shows how to use a USER storage location to grant access to locations on S3. The database uses the server credential to access the location:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;--- set database-level credential (once):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ALTER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DATABASE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DEFAULT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;AWSAuth&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;myaccesskeyid123456:mysecretaccesskey123456789012345678901234&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LOCATION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;s3://datalake&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SHARED&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USAGE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;USER&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;LABEL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;s3user&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ROLE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ExtUsers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;   &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;--- Assign users to this role using GRANT (Role).
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;GRANT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;READ&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ON&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LOCATION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;s3://datalake&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;TO&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ExtUsers&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;For more information about configuring user privileges, see &lt;a href=&#34;../../../en/admin/db-users-and-privileges/#&#34;&gt;Database users and privileges&lt;/a&gt; and the &lt;a href=&#34;../../../en/sql-reference/statements/grant-statements/grant-storage-location/#&#34;&gt;GRANT (storage location)&lt;/a&gt; and &lt;a href=&#34;../../../en/sql-reference/statements/revoke-statements/revoke-storage-location/#&#34;&gt;REVOKE (storage location)&lt;/a&gt; reference pages.&lt;/p&gt;
&lt;p&gt;&lt;a name=&#34;Shared&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;shared-versus-local-storage&#34;&gt;Shared versus local storage&lt;/h2&gt;
&lt;p&gt;The SHARED keyword indicates that the location is shared by all nodes. Most remote file systems such as HDFS and S3 are shared. For these file systems, the &lt;em&gt;&lt;code&gt;path&lt;/code&gt;&lt;/em&gt; argument represents a single location in the remote file system where all nodes store data. Each node creates its own subdirectory in the shared storage location for its own files. Doing so prevents one node from overwriting files that belong to other nodes.&lt;/p&gt;
&lt;p&gt;If using a remote file system, you must specify SHARED, even for one-node clusters. If the location is declared as USER, the database does not create subdirectories for each node. The setting of USER takes precedence over SHARED.&lt;/p&gt;
&lt;p&gt;If you create a location and omit this keyword, the new storage location is treated as local. Each node must have unique access to the specified path. This location is usually a path in the node&#39;s own file system. Storage locations in file systems that are local to each node, such as Linux, are always local.

&lt;div class=&#34;admonition deprecated&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Deprecated&lt;/h4&gt;

SHARED DATA storage locations are deprecated.

&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&#34;Temporar&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;s3-storage-of-temporary-data-in-eon-mode&#34;&gt;S3 storage of temporary data in Eon Mode&lt;/h2&gt;
&lt;p&gt;If you are using OpenText™ Analytics Database in Eon Mode and have limited local disk space, that space might be insufficient to handle the large quantities of temporary data that some DML operations can generate. This is especially true for large load operations and refresh operations.&lt;/p&gt;
&lt;p&gt;You can leverage S3 storage to handle temporary data, as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create a remote storage location with &lt;a href=&#34;../../../en/sql-reference/statements/create-statements/create-location/#&#34;&gt;CREATE LOCATION&lt;/a&gt;, where &lt;em&gt;&lt;code&gt;path&lt;/code&gt;&lt;/em&gt; is set to S3 as follows:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;CREATE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;LOCATION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;s3://&lt;span class=&#34;code-variable&#34;&gt;bucket&lt;/span&gt;/&lt;span class=&#34;code-variable&#34;&gt;path&lt;/span&gt;&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ALL&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;NODES&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;SHARED&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;USAGE&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;TEMP&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set the RemoteStorageForTemp session configuration parameter to 1:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ALTER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SESSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SET&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RemoteStorageForTemp&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A temporary storage location must already exist on S3 before you set this parameter to 1; otherwise, the database throws an error and hint to create the storage location.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the queries that require extra temporary storage.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reset RemoteStorageForTemp to its default value:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;ALTER&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SESSION&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;DEFAULT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;CLEAR&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;RemoteStorageForTemp&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;When you set RemoteStorageForTemp, the database redirects temporary data for all DML operations to the specified remote location. The parameter setting remains in effect until it is explicitly reset to its default value (0), or the current session ends.

&lt;div class=&#34;admonition important&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Important&lt;/h4&gt;
Redirecting temporary data to S3 is liable to affect performance and require extra S3 API calls. Use it only for DML operations that involve large quantities of data.
&lt;/div&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Admin: Storage locations on HDFS</title>
      <link>/en/admin/managing-storage-locations/storage-locations-on-hdfs/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/managing-storage-locations/storage-locations-on-hdfs/</guid>
      <description>
        
        
        &lt;p&gt;You can place storage locations in HDFS, in addition to on the local Linux file system. Because HDFS storage locations are not local, querying them can be slower. You might use HDFS storage locations for lower-priority data or data that is rarely queried (cold data). Moving lower-priority data to HDFS frees space on your database cluster for higher-priority data.&lt;/p&gt;
&lt;p&gt;If you are using OpenText™ Analytics Database for SQL on Apache Hadoop, you typically place storage locations only on HDFS.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Admin: Altering location use</title>
      <link>/en/admin/managing-storage-locations/altering-location-use/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/managing-storage-locations/altering-location-use/</guid>
      <description>
        
        
        &lt;p&gt;
&lt;code&gt;&lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/alter-location-use/#&#34;&gt;ALTER_LOCATION_USE&lt;/a&gt;&lt;/code&gt; lets you change the type of files that the database stores at a storage location. You typically use labels only for DATA storage locations, not TEMP.&lt;/p&gt;
&lt;p&gt;This example shows how to alter the storage location on &lt;code&gt;v_vmartdb_node0004&lt;/code&gt; to store only data files:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT ALTER_LOCATION_USE (&amp;#39;/thirdVerticaStorageLocation/&amp;#39; , &amp;#39;v_vmartdb_node0004&amp;#39; , &amp;#39;DATA&amp;#39;);
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;altering-hdfs-storage-locations&#34;&gt;Altering HDFS storage locations&lt;/h2&gt;
&lt;p&gt;When altering an HDFS storage location, you must make the change for all nodes in the database cluster. To do so, specify a node value of &#39;&#39;, as in the following example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT ALTER_LOCATION_USE(&amp;#39;hdfs:///user/dbadmin/v_vmart&amp;#39;,
   &amp;#39;&amp;#39;,&amp;#39;TEMP&amp;#39;);
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;restrictions&#34;&gt;Restrictions&lt;/h2&gt;
&lt;p&gt;You cannot change a storage location from a USER usage type if you created the location that way, or to a USER type if you did not. You can change a USER storage location to specify DATA (storing TEMP files is not supported). However, doing so does not affect the primary objective of a USER storage location, to be accessible by non-dbadmin users with assigned privileges.&lt;/p&gt;
&lt;p&gt;You cannot change a storage location from SHARED TEMP or SHARED USER to SHARED DATA or the reverse.&lt;/p&gt;

&lt;h2 id=&#34;effects-of-altering-storage-location-use&#34;&gt;Effects of altering storage location use&lt;/h2&gt;
&lt;p&gt;Before altering a storage location use type, be aware that at least one location must remain for storing data and temp files on a node. You can store data and temp files in the same, or separate, storage locations.&lt;/p&gt;
&lt;p&gt;Altering an existing storage location has the following effects:

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Alter use from...&lt;/th&gt; 

&lt;th &gt;
To store only...&lt;/th&gt; 

&lt;th &gt;
Has this effect...&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Temp and data files (or data only)&lt;/td&gt; 

&lt;td &gt;


Temp files&lt;/td&gt; 

&lt;td &gt;




&lt;p&gt;Data content is eventually &lt;a href=&#34;../../../en/admin/managing-db/tuple-mover/mergeout/&#34;&gt;merged out&lt;/a&gt; by the Tuple Mover.You can also manually merge out data from the storage location using &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/do-tm-task/#&#34;&gt;DO_TM_TASK&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The location stores only temp files from that point forward.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Temp and data files (or temp only)&lt;/td&gt; 

&lt;td &gt;


Data files&lt;/td&gt; 

&lt;td &gt;




&lt;p&gt;The database continues to run all statements that use temp files (such as queries and loads).&lt;/p&gt;
&lt;p&gt;Subsequent statements no longer use the changed storage location for temp files, and the location stores only data files from that point forward.&lt;/p&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Admin: Altering location labels</title>
      <link>/en/admin/managing-storage-locations/altering-location-labels/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/managing-storage-locations/altering-location-labels/</guid>
      <description>
        
        
        &lt;p&gt;&lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/alter-location-label/#&#34;&gt;ALTER_LOCATION_LABEL&lt;/a&gt; lets you change the label for a storage location in several ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#Adding&#34;&gt;Add a label to an unlabeled storage location&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#Removing&#34;&gt;Remove a label&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&#34;#Removing&#34;&gt;Change an existing label&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can perform these operations on individual nodes or cluster-wide.&lt;/p&gt;
&lt;p&gt;&lt;a name=&#34;Adding&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;adding-a-location-label&#34;&gt;Adding a location label&lt;/h2&gt;
&lt;p&gt;You add a location label to an unlabeled storage location with ALTER_LOCATION_LABEL. For example, unlabeled storage location &lt;code&gt;/home/dbadmin/Vertica/SSD&lt;/code&gt; is defined on a three-node cluster:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../../../images/working-with-storage-locations1.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;You can label this storage location as &lt;code&gt;SSD&lt;/code&gt; on all nodes as follows:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT ALTER_LOCATION_LABEL(&amp;#39;/home/dbadmin/vertica/SSD&amp;#39;, &amp;#39;&amp;#39;, &amp;#39;SSD&amp;#39;);
&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;admonition caution&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Caution&lt;/h4&gt;

If you label a storage location that contains data, Vertica moves the data to an unlabeled location, if one exists. To prevent data movement between storage locations, labels should be applied either to all storage locations or none.

&lt;/div&gt;

&lt;p&gt;&lt;a name=&#34;Removing&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;removing-a-location-label&#34;&gt;Removing a location label&lt;/h2&gt;
&lt;p&gt;You can remove a location label only if the following conditions are both true:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;No database object has a storage policy that specifies this label.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The labeled location is not the last available storage for the objects associated with it.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The following statement removes the &lt;code&gt;SSD&lt;/code&gt; label from the specified storage location on all nodes:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT ALTER_LOCATION_LABEL(&amp;#39;/home/dbadmin/SSD/tables&amp;#39;,&amp;#39;&amp;#39;, &amp;#39;&amp;#39;);
          ALTER_LOCATION_LABEL
------------------------------------------
 /home/dbadmin/SSD/tables label changed.
(1 row)
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;altering-a-storage-location-label&#34;&gt;Altering a storage location label&lt;/h2&gt;
&lt;p&gt;You can relabel a storage location only if no database object has a storage policy that specifies this label.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Admin: Creating storage policies</title>
      <link>/en/admin/managing-storage-locations/creating-storage-policies/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/managing-storage-locations/creating-storage-policies/</guid>
      <description>
        
        
        &lt;p&gt;The OpenText™ Analytics Database meta-function 
&lt;code&gt;&lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/set-object-storage-policy/#&#34;&gt;SET_OBJECT_STORAGE_POLICY&lt;/a&gt;&lt;/code&gt; creates a &lt;a class=&#34;glosslink&#34; href=&#34;../../../en/glossary/storage-policy/&#34; title=&#34;A database object you create to associate a labeled location as the default storage location for the object.&#34;&gt;storage policy&lt;/a&gt; that associates a database object with a labeled storage location. When an object has a storage policy, the database uses the labeled location as the default storage location for that object&#39;s data.&lt;/p&gt;
&lt;p&gt;You can create storage policies for the database, schemas, tables, and partition ranges. Each object can be associated with one storage policy. Each time data is loaded and updated, the database checks whether the object has a storage policy. If it does, the database uses the labeled storage location. If no storage policy exists for an object or its parent entities, data storage processing continues using standard storage algorithms on available storage locations. If all storage locations are labeled, the database uses one of them.&lt;/p&gt;
&lt;p&gt;Storage policies let you determine where to store critical data. For example, you might create a storage location with the label &lt;code&gt;SSD&lt;/code&gt; that represents the fastest available storage on the cluster nodes. You then create storage policies to associate tables with that labeled location. For example, the following &lt;code&gt;SET_OBJECT_STORAGE_POLICY&lt;/code&gt; statement sets a storage policy on table &lt;code&gt;test&lt;/code&gt; to use the storage location labeled &lt;code&gt;SSD&lt;/code&gt; as its default location:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt;  SELECT SET_OBJECT_STORAGE_POLICY(&amp;#39;test&amp;#39;,&amp;#39;ssd&amp;#39;, true);
            SET_OBJECT_STORAGE_POLICY
--------------------------------------------------
Object storage policy set.
Task: moving storages
(Table: public.test) (Projection: public.test_b0)
(Table: public.test) (Projection: public.test_b1)

(1 row)
&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

You cannot include temporary files in storage policies. Storage policies are for use only with data files on storage locations for DATA. Storage policies are not valid for USER locations.

&lt;/div&gt;
&lt;p&gt;Creating one or more storage policies does not require that policies exist for all database objects. A site can support objects with or without storage policies. You can add storage policies for a discrete set of priority objects, while letting other objects exist without a policy, so they use available storage.&lt;/p&gt;
&lt;h2 id=&#34;creating-policies-based-on-storage-performance&#34;&gt;Creating policies based on storage performance&lt;/h2&gt;
&lt;p&gt;You can measure the performance of any disk storage location (see &lt;a href=&#34;../../../en/admin/managing-storage-locations/measuring-storage-performance/#&#34;&gt;Measuring storage performance&lt;/a&gt;). Then, using the performance measurements, set the storage location performance. The database uses the performance measurements you set to rank its storage locations and, through ranking, to determine which key projection columns to store on higher performing locations, as described in &lt;a href=&#34;../../../en/admin/managing-storage-locations/setting-storage-performance/#&#34;&gt;Setting storage performance&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you already set the performance of your site&#39;s storage locations, and decide to use storage policies, any storage location with an associated policy has a higher priority than the storage ranking setting.&lt;/p&gt;
&lt;p&gt;You can use storage policies to move older data to less-expensive storage locations while keeping it available for queries. See &lt;a href=&#34;../../../en/admin/managing-storage-locations/creating-storage-policies-low-priority-data/#&#34;&gt;Creating storage policies for low-priority data&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a name=&#34;Storage&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;storage-hierarchy-and-precedence&#34;&gt;Storage hierarchy and precedence&lt;/h2&gt;
&lt;p&gt;OpenText™ Analytics Database determines where to store object data according to the following hierarchy of storage policies, listed below in ascending order of precedence:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Database&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schema&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Table&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Table partition&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If an object lacks its own storage policy, it uses the storage policy of its parent object. For example, table &lt;code&gt;Region.Income&lt;/code&gt; in database &lt;code&gt;Sales&lt;/code&gt; is partitioned by months. Labeled storage policies &lt;code&gt;FAST&lt;/code&gt; and &lt;code&gt;STANDARD&lt;/code&gt; are assigned to the table and database, respectively. No storage policy is assigned to the table&#39;s partitions or its parent schema, so these use the storage policies of their parent objects, &lt;code&gt;FAST&lt;/code&gt; and &lt;code&gt;STANDARD&lt;/code&gt;, respectively:

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Object&lt;/th&gt; 

&lt;th &gt;
Storage policy&lt;/th&gt; 

&lt;th &gt;
Policy precedence&lt;/th&gt; 

&lt;th &gt;
Labeled location&lt;/th&gt; 

&lt;th &gt;
Default location&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


&lt;code&gt;Sales&lt;/code&gt; (database)&lt;/td&gt; 

&lt;td &gt;


YES&lt;/td&gt; 

&lt;td &gt;


4&lt;/td&gt; 

&lt;td &gt;


STANDARD&lt;/td&gt; 

&lt;td &gt;
STANDARD&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


&lt;code&gt;Region&lt;/code&gt; (schema)&lt;/td&gt; 

&lt;td &gt;


NO&lt;/td&gt; 

&lt;td &gt;


3&lt;/td&gt; 

&lt;td &gt;


N/A&lt;/td&gt; 

&lt;td &gt;
STANDARD&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


&lt;code&gt;Income&lt;/code&gt; (table)&lt;/td&gt; 

&lt;td &gt;


YES&lt;/td&gt; 

&lt;td &gt;


2&lt;/td&gt; 

&lt;td &gt;


FAST&lt;/td&gt; 

&lt;td &gt;
FAST&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


&lt;code&gt;MONTH&lt;/code&gt; (partitions)&lt;/td&gt; 

&lt;td &gt;


NO&lt;/td&gt; 

&lt;td &gt;


1&lt;/td&gt; 

&lt;td &gt;


N/A&lt;/td&gt; 

&lt;td &gt;
FAST&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;When Tuple Mover operations such as mergeout occur, all &lt;code&gt;Income&lt;/code&gt; data moves to the &lt;code&gt;FAST&lt;/code&gt; storage location. Other tables in the Region schema use their own storage policy. If a &lt;code&gt;Region&lt;/code&gt; table lacks its own storarage policy, Tuple Mover uses the next storage policy above it—in this case, it uses database storage policy and moves the table data to &lt;code&gt;STANDARD&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;querying-existing-storage-policies&#34;&gt;Querying existing storage policies&lt;/h2&gt;
&lt;p&gt;You can query existing storage policies, listed in the &lt;code&gt;location_label&lt;/code&gt; column of system table &lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/storage-containers/#&#34;&gt;STORAGE_CONTAINERS&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT node_name, projection_name, location_label FROM v_monitor.storage_containers;
    node_name     |   projection_name    | location_label
------------------+----------------------+----------------
 v_vmart_node0001 | states_p             |
 v_vmart_node0001 | states_p             |
 v_vmart_node0001 | t1_b1                |
 v_vmart_node0001 | newstates_b0         | LEVEL3
 v_vmart_node0001 | newstates_b0         | LEVEL3
 v_vmart_node0001 | newstates_b1         | LEVEL3
 v_vmart_node0001 | newstates_b1         | LEVEL3
 v_vmart_node0001 | newstates_b1         | LEVEL3
 v_vmart_node0001 | states_p_v1_node0001 | LEVEL3
 v_vmart_node0001 | states_p_v1_node0001 | LEVEL3
 v_vmart_node0001 | states_p_v1_node0001 | LEVEL3
 v_vmart_node0001 | states_p_v1_node0001 | LEVEL3
 v_vmart_node0001 | states_p_v1_node0001 | LEVEL3
 v_vmart_node0001 | states_p_v1_node0001 | LEVEL3
 v_vmart_node0001 | states_b0            | SSD
 v_vmart_node0001 | states_b0            | SSD
 v_vmart_node0001 | states_b1            | SSD
 v_vmart_node0001 | states_b1            | SSD
 v_vmart_node0001 | states_b1            | SSD
...
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;forcing-existing-data-storage-to-a-new-storage-location&#34;&gt;Forcing existing data storage to a new storage location&lt;/h2&gt;
&lt;p&gt;By default, the Tuple Mover enforces object storage policies after all pending mergeout operations are complete. &lt;code&gt;SET_OBJECT_STORAGE_POLICY&lt;/code&gt; moves existing data storage to a new location immediately, if you set its parameter &lt;em&gt;&lt;code&gt;enforce-storage-move&lt;/code&gt;&lt;/em&gt; to &lt;code&gt;true&lt;/code&gt;. You might want to force a move, even though it means waiting for the operation to complete before continuing, if the data being moved is old. The Tuple Mover runs less frequently on older data.

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

If parameter &lt;em&gt;&lt;code&gt;enforce-storage-move&lt;/code&gt;&lt;/em&gt; is set to &lt;code&gt;true&lt;/code&gt;, &lt;code&gt;SET_OBJECT_STORAGE_POLICY&lt;/code&gt; performs a cluster-wide operation. If an error occurs on any node, the function displays a warning message and skips that node. It then continues executing the operation on the remaining nodes.

&lt;/div&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Admin: Creating storage policies for low-priority data</title>
      <link>/en/admin/managing-storage-locations/creating-storage-policies-low-priority-data/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/managing-storage-locations/creating-storage-policies-low-priority-data/</guid>
      <description>
        
        
        &lt;p&gt;If some of your data is in a partitioned table, you can move less-queried partitions to less-expensive storage such as HDFS. The data is still accessible in queries, just at a slower speed. In this scenario, the faster storage is often referred to as &amp;quot;hot storage,&amp;quot; and the slower storage is referred to as &amp;quot;cold storage.&amp;quot;&lt;/p&gt;
&lt;p&gt;Suppose you have a table named messages (containing social-media messages) that is partitioned by the year and month of the message&#39;s timestamp. You can list the partitions in the table by querying the PARTITIONS system table.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT partition_key, projection_name, node_name, location_label FROM partitions
   ORDER BY partition_key;
partition_key | projection_name |    node_name     | location_label
--------------+-----------------+------------------+----------------
201309        | messages_b1     | v_vmart_node0001 |
201309        | messages_b0     | v_vmart_node0003 |
201309        | messages_b1     | v_vmart_node0002 |
201309        | messages_b1     | v_vmart_node0003 |
201309        | messages_b0     | v_vmart_node0001 |
201309        | messages_b0     | v_vmart_node0002 |
201310        | messages_b0     | v_vmart_node0002 |
201310        | messages_b1     | v_vmart_node0003 |
201310        | messages_b0     | v_vmart_node0001 |
. . .
201405        | messages_b0     | v_vmart_node0002 |
201405        | messages_b1     | v_vmart_node0003 |
201405        | messages_b1     | v_vmart_node0001 |
201405        | messages_b0     | v_vmart_node0001 |
(54 rows)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Next, suppose you find that most queries on this table access only the latest month or two of data. You might decide to move the older data to cold storage in an HDFS-based storage location. After you move the data, it is still available for queries, but with lower query performance.&lt;/p&gt;
&lt;p&gt;To move partitions to the HDFS storage location, supply the lowest and highest partition key values to be moved in the &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/set-object-storage-policy/#&#34;&gt;SET_OBJECT_STORAGE_POLICY&lt;/a&gt; function call. The following example shows how to move data between two dates. In this example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The partition key value 201309 represents September 2013.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The partition key value 201403 represents March 2014.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The name, coldstorage, is the label of the HDFS-based storage location.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The final argument, which is optional, is &lt;code&gt;true&lt;/code&gt;, meaning that the function does not return until the move is complete. By default the function returns immediately and the data is moved when the Tuple Mover next runs. When data is old, however, the Tuple Mover runs less frequently, which would delay recovering the original storage space.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT SET_OBJECT_STORAGE_POLICY(&amp;#39;messages&amp;#39;,&amp;#39;coldstorage&amp;#39;, &amp;#39;201309&amp;#39;, &amp;#39;201403&amp;#39;, &amp;#39;true&amp;#39;);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The partitions within the specified range are moved to the HDFS storage location labeled coldstorage the next time the &lt;a class=&#34;glosslink&#34; href=&#34;../../../en/glossary/tuple-mover-tm/&#34; title=&#34;The Tuple Mover manages ROS data storage.&#34;&gt;Tuple Mover&lt;/a&gt; runs. This location name now displays in the &lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/partitions/#&#34;&gt;PARTITIONS&lt;/a&gt; system table&#39;s location_label column.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT partition_key, projection_name, node_name, location_label
   FROM partitions ORDER BY partition_key;
partition_key | projection_name |    node_name     | location_label
--------------+-----------------+------------------+----------------
201309        | messages_b0     | v_vmart_node0003 | coldstorage
201309        | messages_b1     | v_vmart_node0001 | coldstorage
201309        | messages_b1     | v_vmart_node0002 | coldstorage
201309        | messages_b0     | v_vmart_node0001 | coldstorage
. . .
201403        | messages_b0     | v_vmart_node0002 | coldstorage
201404        | messages_b0     | v_vmart_node0001 |
201404        | messages_b0     | v_vmart_node0002 |
201404        | messages_b1     | v_vmart_node0001 |
201404        | messages_b1     | v_vmart_node0002 |
201404        | messages_b0     | v_vmart_node0003 |
201404        | messages_b1     | v_vmart_node0003 |
201405        | messages_b0     | v_vmart_node0001 |
201405        | messages_b1     | v_vmart_node0002 |
201405        | messages_b0     | v_vmart_node0002 |
201405        | messages_b0     | v_vmart_node0003 |
201405        | messages_b1     | v_vmart_node0001 |
201405        | messages_b1     | v_vmart_node0003 |
(54 rows)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;After your initial data move, you can move additional data to the HDFS storage location periodically. You can move individual partitions or a range of partitions from the &amp;quot;hot&amp;quot; storage to the &amp;quot;cold&amp;quot; storage location using the same method:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT SET_OBJECT_STORAGE_POLICY(&amp;#39;messages&amp;#39;, &amp;#39;coldstorage&amp;#39;, &amp;#39;201404&amp;#39;, &amp;#39;201404&amp;#39;, &amp;#39;true&amp;#39;);

=&amp;gt; SELECT projection_name, node_name, location_label
   FROM PARTITIONS WHERE PARTITION_KEY = &amp;#39;201404&amp;#39;;
 projection_name |    node_name     | location_label
-----------------+------------------+----------------
 messages_b0     | v_vmart_node0002 | coldstorage
 messages_b0     | v_vmart_node0003 | coldstorage
 messages_b1     | v_vmart_node0003 | coldstorage
 messages_b0     | v_vmart_node0001 | coldstorage
 messages_b1     | v_vmart_node0002 | coldstorage
 messages_b1     | v_vmart_node0001 | coldstorage
(6 rows)
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;moving-partitions-to-a-table-stored-on-hdfs&#34;&gt;Moving partitions to a table stored on HDFS&lt;/h2&gt;
&lt;p&gt;Another method of moving partitions from hot storage to cold storage is to move the partitions&#39; data to a separate table in the other storage location. This method breaks the data into two tables, one containing hot data and the other containing cold data. Use this method if you want to prevent queries from inadvertently accessing data stored in cold storage. To query the older data, you must explicitly query the cold table.&lt;/p&gt;
&lt;p&gt;To move partitions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create a new table whose schema matches that of the existing partitioned table.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Set the storage policy of the new table to use the HDFS-based storage location.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use the &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/partition-functions/move-partitions-to-table/#&#34;&gt;MOVE_PARTITIONS_TO_TABLE&lt;/a&gt; function to move a range of partitions from the hot table to the cold table. The partitions migrate when the Tuple Mover next runs.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The following example demonstrates these steps. You first create a table named cold_messages. You then assign it the HDFS-based storage location named coldstorage, and, finally, move a range of partitions.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE TABLE cold_messages LIKE messages INCLUDING PROJECTIONS;
=&amp;gt; SELECT SET_OBJECT_STORAGE_POLICY(&amp;#39;cold_messages&amp;#39;, &amp;#39;coldstorage&amp;#39;);
=&amp;gt; SELECT MOVE_PARTITIONS_TO_TABLE(&amp;#39;messages&amp;#39;,&amp;#39;201309&amp;#39;,&amp;#39;201403&amp;#39;,&amp;#39;cold_messages&amp;#39;);
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>Admin: Moving data storage locations</title>
      <link>/en/admin/managing-storage-locations/moving-data-storage-locations/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/managing-storage-locations/moving-data-storage-locations/</guid>
      <description>
        
        
        &lt;p&gt;&lt;span class=&#34;sql&#34;&gt;&lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/set-object-storage-policy/#&#34;&gt;SET_OBJECT_STORAGE_POLICY&lt;/a&gt;&lt;/span&gt; moves data storage from an existing location (labeled and unlabeled) to another labeled location. This function performs two tasks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Creates a storage policy for an object, or changes its current policy.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Moves all existing data for the specified objects to the target storage location.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Before it moves object data to the specified storage location, the database calculates the required storage and checks available space at the target. Before calling &lt;span class=&#34;sql&#34;&gt;SET_OBJECT_STORAGE_POLICY&lt;/span&gt;, check available space on the new target location. Be aware that checking does not guarantee that this space remains available when the Tuple Mover actually executes the move. If the storage location lacks sufficient free space, the function returns an error.

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

Moving an object&#39;s current storage to a new target is a cluster-wide operation. If a node is unavailable, the function returns a warning message, and then continues to implement the move on other nodes. When the node rejoins the cluster, the Tuple Mover updates it with the storage data.

&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;By default, the Tuple Mover moves object data to the new storage location after all pending mergeout tasks return. You can force the data to move immediately by setting the function&#39;s &lt;em&gt;&lt;code&gt;enforce-storage-move&lt;/code&gt;&lt;/em&gt; argument to true. For example, the following statement sets the storage policy for a table and implements the move immediately:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT SET_OBJECT_STORAGE_POLICY(&amp;#39;states&amp;#39;, &amp;#39;SSD&amp;#39;, &amp;#39;true&amp;#39;);
                            SET_OBJECT_STORAGE_POLICY
------------------------------------------------------------------------------------------------
 Object storage policy set.
Task: moving storages
(Table: public.states) (Projection: public.states_p1)
(Table: public.states) (Projection: public.states_p2)
(Table: public.states) (Projection: public.states_p3)
(1 row)
&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;alert admonition tip&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Tip&lt;/h4&gt;

Consider using the &lt;span class=&#34;sql&#34;&gt;&lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/enforce-object-storage-policy/#&#34;&gt;ENFORCE_OBJECT_STORAGE_POLICY&lt;/a&gt;&lt;/span&gt; meta-function to relocate the data of multiple database objects as needed, to bring them into compliance with current storage policies. Using this function is equivalent to calling &lt;span class=&#34;sql&#34;&gt;SET_OBJECT_STORAGE_POLICY&lt;/span&gt; successively on multiple database objects and setting the &lt;em&gt;&lt;code&gt;enforce-storage-move&lt;/code&gt;&lt;/em&gt; argument to true.

&lt;/div&gt;

      </description>
    </item>
    
    <item>
      <title>Admin: Clearing storage policies</title>
      <link>/en/admin/managing-storage-locations/clearing-storage-policies/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/managing-storage-locations/clearing-storage-policies/</guid>
      <description>
        
        
        &lt;p&gt;The &lt;span class=&#34;sql&#34;&gt;&lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/clear-object-storage-policy/#&#34;&gt;CLEAR_OBJECT_STORAGE_POLICY&lt;/a&gt;&lt;/span&gt; meta-function clears a storage policy from a database, schema, table, or table partition. For example, the following statement clears the storage policy for a table:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT CLEAR_OBJECT_STORAGE_POLICY (&amp;#39;store.store_sales_fact&amp;#39;);
  CLEAR_OBJECT_STORAGE_POLICY
--------------------------------
 Object storage policy cleared.
(1 row)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The Tuple Mover moves existing storage containers to the parent storage policy&#39;s location, or the default storage location if there is no parent policy. By default, this move occurs after all pending mergeout tasks return.&lt;/p&gt;
&lt;p&gt;You can force the data to move immediately by setting the function&#39;s &lt;em&gt;&lt;code&gt;enforce-storage-move&lt;/code&gt;&lt;/em&gt; argument to true. For example, the following statement clears the storage policy for a table and implements the move immediately:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT CLEAR_OBJECT_STORAGE_POLICY (&amp;#39;store.store_orders_fact&amp;#39;, &amp;#39;true&amp;#39;);
                         CLEAR_OBJECT_STORAGE_POLICY
-----------------------------------------------------------------------------
 Object storage policy cleared.
Task: moving storages
(Table: store.store_orders_fact) (Projection: store.store_orders_fact_b0)
(Table: store.store_orders_fact) (Projection: store.store_orders_fact_b1)

(1 row)
&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;alert admonition tip&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Tip&lt;/h4&gt;

Consider using the &lt;span class=&#34;sql&#34;&gt;&lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/enforce-object-storage-policy/#&#34;&gt;ENFORCE_OBJECT_STORAGE_POLICY&lt;/a&gt;&lt;/span&gt; meta-function to relocate the data of multiple database objects as needed, to bring them into compliance with current storage policies. Using this function is equivalent to calling &lt;span class=&#34;sql&#34;&gt;CLEAR_OBJECT_STORAGE_POLICY&lt;/span&gt; successively on multiple database objects and setting &lt;em&gt;&lt;code&gt;enforce-storage-move&lt;/code&gt;&lt;/em&gt; to true.

&lt;/div&gt;
&lt;h2 id=&#34;effects-on-related-elements&#34;&gt;Effects on related elements&lt;/h2&gt;
&lt;p&gt;Clearing a storage policy at one level, such as a table, does not necessarily affect storage policies at other levels, such as that table&#39;s partitions.&lt;/p&gt;
&lt;p&gt;For example, the &lt;code&gt;lineorder&lt;/code&gt; table has a storage policy to store table data at a location labeled &lt;code&gt;F2&lt;/code&gt;. Various partitions in this table are individually assigned their own storage locations, as verified by querying the &lt;span class=&#34;sql&#34;&gt;&lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/storage-policies/#&#34;&gt;STORAGE_POLICIES&lt;/a&gt;&lt;/span&gt; system table:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT * from v_monitor.storage_policies;
 schema_name | object_name |  policy_details  | location_label
-------------+-------------+------------------+----------------
             | public      | Schema           | F4
 public      | lineorder   | Partition [0, 0] | F1
 public      | lineorder   | Partition [1, 1] | F2
 public      | lineorder   | Partition [2, 2] | F4
 public      | lineorder   | Partition [3, 3] | M1
 public      | lineorder   | Partition [4, 4] | M3
(6 rows)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Clearing the current storage policy from the &lt;code&gt;lineorder&lt;/code&gt; table has no effect on the storage policies of its individual partitions. For example, given the following &lt;span class=&#34;sql&#34;&gt;CLEAR_OBJECT_STORAGE_POLICY&lt;/span&gt; statement:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT CLEAR_OBJECT_STORAGE_POLICY (&amp;#39;lineorder&amp;#39;);
      CLEAR_OBJECT_STORAGE_POLICY
-------------------------------------
 Default storage policy cleared.
(1 row)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The individual partitions in the table retain their storage policies:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;
=&amp;gt; SELECT * from v_monitor.storage_policies;
 schema_name | object_name |  policy_details  | location_label
-------------+-------------+------------------+----------------
             | public      | Schema           | F4
 public      | lineorder   | Partition [0, 0] | F1
 public      | lineorder   | Partition [1, 1] | F2
 public      | lineorder   | Partition [2, 2] | F4
 public      | lineorder   | Partition [3, 3] | M1
 public      | lineorder   | Partition [4, 4] | M3
(6 rows)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If you clear storage policies from a range of partitions key in a table, the storage policies of parent objects and other partition ranges are unaffected. For example, the following statement clears storage policies from partition keys 0 through 3:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT CLEAR_OBJECT_STORAGE_POLICY (&amp;#39;lineorder&amp;#39;,&amp;#39;0&amp;#39;,&amp;#39;3&amp;#39;);
      clear_object_storage_policy
-------------------------------------
 Default storage policy cleared.
(1 row)
=&amp;gt; SELECT * from storage_policies;
 schema_name | object_name |  policy_details  | location_label
-------------+-------------+------------------+----------------
             | public      | Schema           | F4
 public      | lineorder   | Table            | F2
 public      | lineorder   | Partition [4, 4] | M3
(2 rows)
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>Admin: Measuring storage performance</title>
      <link>/en/admin/managing-storage-locations/measuring-storage-performance/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/managing-storage-locations/measuring-storage-performance/</guid>
      <description>
        
        
        &lt;p&gt;OpenText™ Analytics Database lets you measure disk I/O performance on any storage location at your site. You can use the returned measurements to set performance, which automatically provides rank. Depending on your storage needs, you can also use performance to determine the storage locations needed for critical data as part of your site&#39;s storage policies. Storage performance measurements apply only to data storage locations, not temporary storage locations.&lt;/p&gt;
&lt;p&gt;Measuring storage location performance calculates the time it takes to read and write 1 MB of data from the disk, which equates to:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;IO time = time to read/write 1MB + time to seek = 1/throughput + 1/Latency
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Throughput is the average throughput of sequential reads/writes (expressed in megabytes per second).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Latency is for random reads only in seeks (units in seeks per second).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thus, the I/O time of a faster storage location is less than that of a slower storage location.

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

Measuring storage location performance requires extensive disk I/O, which is a resource-intensive operation. Consider starting this operation when fewer other operations are running.

&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;OpenText™ Analytics Database provides two ways to measure storage location performance, depending on whether the database is running. You can either:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Measure performance on a running database.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Measure performance before a cluster is set up.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Both methods return the throughput and latency for the storage location. Record or capture the throughput and latency information so you can use it to set the location performance (see &lt;a href=&#34;../../../en/admin/managing-storage-locations/setting-storage-performance/#&#34;&gt;Setting storage performance&lt;/a&gt;).&lt;/p&gt;
&lt;h2 id=&#34;measuring-performance-on-a-running-database&#34;&gt;Measuring performance on a running database&lt;/h2&gt;
&lt;p&gt;Use the &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/measure-location-performance/&#34;&gt;MEASURE_LOCATION_PERFORMANCE()&lt;/a&gt; function to measure performance for a storage location when the database is running. This function has the following requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The storage path must already exist in the database.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You need RAM*2 free space available in a storage location to measure its performance. For example, if you have 16 GB RAM, you need 32 GB of available disk space. If you do not have enough disk space, the function returns an error.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use the system table &lt;a href=&#34;../../../en/sql-reference/system-tables/v-monitor-schema/disk-storage/#&#34;&gt;DISK_STORAGE&lt;/a&gt; to obtain information about disk storage on each database node.&lt;/p&gt;
&lt;p&gt;The following example shows how to measure the performance of a storage location on &lt;code&gt;v_vmartdb_node0004&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT MEASURE_LOCATION_PERFORMANCE(&amp;#39;/secondVerticaStorageLocation/&amp;#39;,&amp;#39;v_vmartdb_node0004&amp;#39;);
WARNING:  measure_location_performance can take a long time. Please check logs for progress
           measure_location_performance
--------------------------------------------------
 Throughput : 122 MB/sec. Latency : 140 seeks/sec
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;measuring-performance-before-a-cluster-is-set-up&#34;&gt;Measuring performance before a cluster is set up&lt;/h2&gt;
&lt;p&gt;You can measure disk performance before setting up a cluster. This approach is useful when you want to verify that the disk is functioning within normal parameters. To perform this measurement, you must already have OpenText™ Analytics Database installed.&lt;/p&gt;
&lt;p&gt;To measure disk performance, use the following command:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;opt/vertica/bin/vertica -m &amp;lt;path to disk mount&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For example:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;opt/vertica/bin/vertica -m /secondVerticaStorageLocation/node0004_data
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>Admin: Setting storage performance</title>
      <link>/en/admin/managing-storage-locations/setting-storage-performance/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/managing-storage-locations/setting-storage-performance/</guid>
      <description>
        
        
        &lt;p&gt;You can use the measurements returned from the &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/measure-location-performance/#&#34;&gt;MEASURE_LOCATION_PERFORMANCE&lt;/a&gt; function as input values to the &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/set-location-performance/&#34;&gt;SET_LOCATION_PERFORMANCE()&lt;/a&gt; function.

&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

You must set the throughput and latency parameters of this function to 1 or more.

&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;The following example shows how to set the performance of a storage location on &lt;code&gt;v_vmartdb_node0004&lt;/code&gt;, using values for this location returned from the &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/measure-location-performance/#&#34;&gt;MEASURE_LOCATION_PERFORMANCE&lt;/a&gt; function. Set the throughput to &lt;code&gt;122&lt;/code&gt; MB/second and the latency to &lt;code&gt;140&lt;/code&gt; seeks/second. &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/measure-location-performance/#&#34;&gt;MEASURE_LOCATION_PERFORMANCE&lt;/a&gt;&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT SET_LOCATION_PERFORMANCE(&amp;#39;/secondVerticaStorageLocation/&amp;#39;,&amp;#39;node2&amp;#39;,&amp;#39;122&amp;#39;,&amp;#39;140&amp;#39;);
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;sort-order-ranking-by-location-performance-settings&#34;&gt;Sort order ranking by location performance settings&lt;/h2&gt;
&lt;p&gt;After you set performance-data parameters, the database automatically uses performance data to rank storage locations whenever it stores projection columns.&lt;/p&gt;
&lt;p&gt;The database stores columns included in the projection sort order on the fastest available storage locations. Columns not included in the projection sort order are stored on slower disks. Columns for each projection are ranked as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Columns in the sort order are given the highest priority (numbers &amp;gt; 1000).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The last column in the sort order is given the rank number 1001.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The next-to-last column in the sort order is given the rank number 1002, and so on until the first column in the sort order is given 1000 + # of sort columns.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The remaining columns are given numbers from 1000–1, starting with 1000 and decrementing by one per column.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The database then stores columns on disk from the highest ranking to the lowest ranking. It places highest-ranking columns on the fastest disks and the lowest-ranking columns on the slowest disks.&lt;/p&gt;

&lt;h2 id=&#34;using-location-performance-settings-with-storage-policies&#34;&gt;Using location performance settings with storage policies&lt;/h2&gt;
&lt;p&gt;You initially measure location performance and set it in the database. Then, you can use the performance results to determine the fastest storage to use in your storage policies.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Set the locations with the highest performance as the default locations for critical data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use slower locations as default locations for older, or less-important data. Such slower locations may not require policies at all, if you do not want to specify default locations.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;OpenText™ Analytics Database determines data storage as follows, depending on whether a storage policy exists:

&lt;table class=&#34;table table-bordered&#34; &gt;



&lt;tr&gt; 

&lt;th &gt;
Storage policy&lt;/th&gt; 

&lt;th &gt;
Label&lt;/th&gt; 

&lt;th &gt;
# Locations&lt;/th&gt; 

&lt;th &gt;
Action&lt;/th&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


No&lt;/td&gt; 

&lt;td &gt;


No&lt;/td&gt; 

&lt;td &gt;


Multiple&lt;/td&gt; 

&lt;td &gt;


Uses ranking (as described), choosing a location from all locations that exist.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Yes&lt;/td&gt; 

&lt;td &gt;


Yes&lt;/td&gt; 

&lt;td &gt;


Single&lt;/td&gt; 

&lt;td &gt;


Uses that storage location exclusively.&lt;/td&gt;&lt;/tr&gt;

&lt;tr&gt; 

&lt;td &gt;


Yes&lt;/td&gt; 

&lt;td &gt;


Yes&lt;/td&gt; 

&lt;td &gt;


Multiple&lt;/td&gt; 

&lt;td &gt;


Ranks storage (as described) among all same-name labeled locations.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Admin: Retiring storage locations</title>
      <link>/en/admin/managing-storage-locations/retiring-storage-locations/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/managing-storage-locations/retiring-storage-locations/</guid>
      <description>
        
        
        &lt;p&gt;You can retire a storage location to stop using it. Retiring a storage location prevents the database from storing data or temp files to it, but does not remove the actual location. Any data previously stored on the retired location is eventually &lt;a href=&#34;../../../en/admin/managing-db/tuple-mover/mergeout/&#34;&gt;merged out&lt;/a&gt; by the Tuple Mover. Use the &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/retire-location/#&#34;&gt;RETIRE_LOCATION&lt;/a&gt; function to retire a location.&lt;/p&gt;
&lt;p&gt;The following example retires a location from a single node:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT RETIRE_LOCATION(&amp;#39;/secondStorageLocation/&amp;#39; , &amp;#39;v_vmartdb_node0004&amp;#39;);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To retire a storage location on all nodes, use an empty string (&lt;code&gt;&#39;&#39;&lt;/code&gt;) for the second argument. If the location is SHARED, you can retire it only on all nodes.&lt;/p&gt;
&lt;p&gt;You can expedite retiring and then dropping a storage location by passing an optional third argument, &lt;em&gt;&lt;code&gt;enforce&lt;/code&gt;&lt;/em&gt;, as &lt;code&gt;true&lt;/code&gt;. With this directive, the function moves the data out of the storage location instead of waiting for the Tuple Mover, allowing you to drop the location immediately.&lt;/p&gt;
&lt;p&gt;You can also use the &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/enforce-object-storage-policy/#&#34;&gt;ENFORCE_OBJECT_STORAGE_POLICY&lt;/a&gt; function to trigger the move for all storage locations at once, which allows you to drop the locations. This approach is equivalent to using the &lt;em&gt;&lt;code&gt;enforce&lt;/code&gt;&lt;/em&gt; argument.&lt;/p&gt;
&lt;p&gt;The following example shows how to retire a storage location on all nodes so that it can be immediately dropped:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT RETIRE_LOCATION(&amp;#39;/secondStorageLocation/&amp;#39; , &amp;#39;&amp;#39;, true);
&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&#34;alert admonition note&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Note&lt;/h4&gt;

If the location used in a storage policy is the last available storage for its associated objects, you cannot retire it &lt;em&gt;unless&lt;/em&gt; you set &lt;em&gt;&lt;code&gt;enforce&lt;/code&gt;&lt;/em&gt; to &lt;code&gt;true&lt;/code&gt;.

&lt;/div&gt;
&lt;p&gt;Data and temp files can be stored in one, or multiple separate, storage locations.&lt;/p&gt;
&lt;p&gt;For further information on dropping a location after retiring it, see &lt;a href=&#34;../../../en/admin/managing-storage-locations/dropping-storage-locations/#&#34;&gt;Dropping storage locations&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Admin: Restoring retired storage locations</title>
      <link>/en/admin/managing-storage-locations/restoring-retired-storage-locations/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/managing-storage-locations/restoring-retired-storage-locations/</guid>
      <description>
        
        
        &lt;p&gt;You can restore a previously retired storage location. After the location is restored, the database re-ranks the storage location and uses the restored location to process queries as determined by its rank.&lt;/p&gt;
&lt;p&gt;Use the &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/restore-location/#&#34;&gt;RESTORE_LOCATION&lt;/a&gt; function to restore a retired storage location.&lt;/p&gt;
&lt;p&gt;The following example shows how to restore a retired storage location on a single node:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT RESTORE_LOCATION(&amp;#39;/secondStorageLocation/&amp;#39; , &amp;#39;v_vmartdb_node0004&amp;#39;);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To restore a storage location on all nodes, use an empty string (&lt;code&gt;&#39;&#39;&lt;/code&gt;) for the second argument. The following example demonstrates creating, retiring, and restoring a location on all nodes:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; CREATE LOCATION &amp;#39;/tmp/ab1&amp;#39; ALL NODES USAGE &amp;#39;TEMP&amp;#39;;
CREATE LOCATION

=&amp;gt; SELECT RETIRE_LOCATION(&amp;#39;/tmp/ab1&amp;#39;, &amp;#39;&amp;#39;);
retire_location
------------------------
/tmp/ab1 retired.
    (1 row)

=&amp;gt; SELECT location_id, node_name, location_path, location_usage, is_retired
          FROM STORAGE_LOCATIONS WHERE location_path ILIKE &amp;#39;/tmp/ab1&amp;#39;;
location_id       | node_name           | location_path | location_usage | is_retired
------------------+---------------------+---------------+----------------+------------
45035996273736724 | v_vmart_node0001    | /tmp/ab1      | TEMP           | t
45035996273736726 | v_vmart_node0002    | /tmp/ab1      | TEMP           | t
45035996273736728 | v_vmart_node0003    | /tmp/ab1      | TEMP           | t
45035996273736730 | v_vmart_node0004    | /tmp/ab1      | TEMP           | t
    (4 rows)

=&amp;gt; SELECT RESTORE_LOCATION(&amp;#39;/tmp/ab1&amp;#39;, &amp;#39;&amp;#39;);
restore_location
-------------------------
/tmp/ab1 restored.
    (1 row)

=&amp;gt; SELECT location_id, node_name, location_path, location_usage, is_retired
          FROM STORAGE_LOCATIONS WHERE location_path ILIKE &amp;#39;/tmp/ab1&amp;#39;;
location_id       | node_name           | location_path | location_usage | is_retired
------------------+---------------------+---------------+----------------+------------
45035996273736724 | v_vmart_node0001    | /tmp/ab1      | TEMP           | f
45035996273736726 | v_vmart_node0002    | /tmp/ab1      | TEMP           | f
45035996273736728 | v_vmart_node0003    | /tmp/ab1      | TEMP           | f
45035996273736730 | v_vmart_node0004    | /tmp/ab1      | TEMP           | f
    (4 rows)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;RESTORE_LOCATION restores the location only on the nodes where the location exists and is retired. The meta-function does not propagate the storage location to nodes where that location did not previously exist.&lt;/p&gt;
&lt;p&gt;Restoring on all nodes fails if the location has been dropped on any of them. If you have dropped the location on some nodes, you have two options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If you no longer want to use the node where the location was dropped, restore the location individually on each of the other nodes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Alternatively, you can re-create the location on the node where you dropped it. To do so, use &lt;a href=&#34;../../../en/sql-reference/statements/create-statements/create-location/#&#34;&gt;CREATE LOCATION&lt;/a&gt;. After you re-create the location, you can then restore it on all nodes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following example demonstrates the failure if you try to restore on nodes where you have dropped the location:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;=&amp;gt; SELECT RETIRE_LOCATION(&amp;#39;/tmp/ab1&amp;#39;, &amp;#39;&amp;#39;);
retire_location
------------------------
/tmp/ab1 retired.
    (1 row)

=&amp;gt; SELECT DROP_LOCATION(&amp;#39;/tmp/ab1&amp;#39;, &amp;#39;v_vmart_node0002&amp;#39;);
drop_location
------------------------
/tmp/ab1 dropped.
    (1 row)

==&amp;gt; SELECT location_id, node_name, location_path, location_usage, is_retired
          FROM STORAGE_LOCATIONS WHERE location_path ILIKE &amp;#39;/tmp/ab1&amp;#39;;
location_id       | node_name           | location_path | location_usage | is_retired
------------------+---------------------+---------------+----------------+------------
45035996273736724 | v_vmart_node0001    | /tmp/ab1      | TEMP           | t
45035996273736728 | v_vmart_node0003    | /tmp/ab1      | TEMP           | t
45035996273736730 | v_vmart_node0004    | /tmp/ab1      | TEMP           | t
    (3 rows)

=&amp;gt; SELECT RESTORE_LOCATION(&amp;#39;/tmp/ab1&amp;#39;, &amp;#39;&amp;#39;);
ERROR 2081:  [/tmp/ab1] is not a valid storage location on node v_vmart_node0002
&lt;/code&gt;&lt;/pre&gt;
      </description>
    </item>
    
    <item>
      <title>Admin: Dropping storage locations</title>
      <link>/en/admin/managing-storage-locations/dropping-storage-locations/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/en/admin/managing-storage-locations/dropping-storage-locations/</guid>
      <description>
        
        
        &lt;p&gt;To drop a storage location, use the &lt;a href=&#34;../../../en/sql-reference/functions/management-functions/storage-functions/drop-location/#&#34;&gt;DROP_LOCATION&lt;/a&gt; function. You can drop locations with DATA usage only if you have an Eon Mode database with multiple communal storage locations. If you drop a communal storage location, the data in that location is moved to the main communal location, which is the location configured during database creation. You cannot drop the main communal storage location.&lt;/p&gt;
&lt;p&gt;Because dropping a storage location cannot be undone, it is recommended that you first retire a storage location (see &lt;a href=&#34;../../../en/admin/managing-storage-locations/retiring-storage-locations/#&#34;&gt;Retiring storage locations&lt;/a&gt;). Retiring a storage location before dropping it lets you verify that there will be no adverse effects on any data access. If you decide not to drop it, you can restore it (see &lt;a href=&#34;../../../en/admin/managing-storage-locations/restoring-retired-storage-locations/#&#34;&gt;Restoring retired storage locations&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The following example shows how to drop a storage location on a single node:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;SELECT&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;DROP_LOCATION&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;/secondStorageLocation/&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;v_vmartdb_node0002&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;When you drop a storage location, the operation cascades to associated objects including any granted privileges to the storage.

&lt;div class=&#34;admonition caution&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;admonition-head&#34;&gt;Caution&lt;/h4&gt;

Dropping a storage location is a permanent operation and cannot be undone. Subsequent queries on storage used for external table access fail with a COPY COMMAND FAILED message.

&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;a name=&#34;Altering&#34;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;altering-storage-locations-before-dropping-them&#34;&gt;Altering storage locations before dropping them&lt;/h2&gt;
&lt;p&gt;You can drop only storage locations containing temp files. Thus, you must alter a storage location to the TEMP usage type before you can drop it. However, if data files still exist in the storage location, the database prevents you from dropping it. Deleting data files does not clear the storage location and can result in database corruption. To handle a storage area containing data files so that you can drop it, use one of these options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Manually &lt;a href=&#34;../../../en/admin/managing-db/tuple-mover/mergeout/&#34;&gt;merge out&lt;/a&gt; the data files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Wait for the Tuple Mover to merge out the data files automatically.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Retire the location, and force changes to take effect immediately.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Manually &lt;a href=&#34;../../../en/admin/partitioning-tables/managing-partitions/dropping-partitions/&#34;&gt;drop partitions&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;dropping-hdfs-storage-locations&#34;&gt;Dropping HDFS storage locations&lt;/h2&gt;
&lt;p&gt;After dropping a storage location on HDFS, clean up residual files and snapshots on HDFS as explained in &lt;a href=&#34;../../../en/hadoop-integration/using-hdfs-storage-locations/removing-hdfs-storage-locations/#&#34;&gt;Removing HDFS storage locations&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;dropping-user-storage-locations&#34;&gt;Dropping USER storage locations&lt;/h2&gt;
&lt;p&gt;Storage locations that you create with the USER usage type can contain only data files, not temp files. However, you can drop a USER location, regardless of any remaining data files. This behavior differs from that of a storage location not designated for USER access.&lt;/p&gt;
&lt;h2 id=&#34;checking-location-properties&#34;&gt;Checking location properties&lt;/h2&gt;
&lt;p&gt;You can check the properties of a storage location, such as whether it is a USER location or is being used only for TEMP files, in the &lt;a href=&#34;../../../en/sql-reference/system-tables/v-catalog-schema/storage-locations/#&#34;&gt;STORAGE_LOCATIONS&lt;/a&gt; system table. You can also use this table to verify that a location has been retired.&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
