<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-11844393</id><updated>2026-09-24T16:41:10.946+03:00</updated><category term="mysql"/><category term="11gR2"/><category term="automatic"/><category term="bit data type"/><category term="database"/><category term="install"/><category term="oracle"/><category term="partition"/><category term="sqlserver"/><category term="teradata"/><title type='text'>Buzznt - MySQL &amp;amp; Oracle</title><subtitle type='html'>In my work I tackle problems on a daily basis, this involved searching the web for solutions or writing the solutions myself. In this blog I will try to share my problems and solutions.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11844393.post-3834780106901190958</id><published>2026-01-27T09:30:05.278+02:00</published><updated>2026-01-27T10:03:22.050+02:00</updated><title type='text'>Sql Server Partition Menegment </title><content type='html'>&lt;div&gt;I&#39;ll provide you with several scripts to reverse engineer SQL Server partition tables. These scripts will help you understand the partitioning schema, functions, schemes, and data distribution.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1. Basic Partition Information Script&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Get basic partition information for all partitioned tables&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; OBJECT_SCHEMA_NAME(p.object_id) AS SchemaName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; OBJECT_NAME(p.object_id) AS TableName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; p.partition_number AS PartitionNumber,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; p.rows AS RowsInPartition,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; au.total_pages AS TotalPages,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; au.used_pages AS UsedPages,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; au.data_pages AS DataPages,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ds.name AS PartitionScheme,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pf.name AS PartitionFunction,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; prv.value AS BoundaryValue&lt;/div&gt;&lt;div&gt;FROM sys.partitions p&lt;/div&gt;&lt;div&gt;INNER JOIN sys.allocation_units au&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON au.container_id = p.hobt_id&lt;/div&gt;&lt;div&gt;INNER JOIN sys.destination_data_spaces dds&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON dds.destination_id = p.partition_number&lt;/div&gt;&lt;div&gt;INNER JOIN sys.data_spaces ds&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON ds.data_space_id = dds.partition_scheme_id&lt;/div&gt;&lt;div&gt;INNER JOIN sys.partition_schemes ps&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON ps.data_space_id = ds.data_space_id&lt;/div&gt;&lt;div&gt;INNER JOIN sys.partition_functions pf&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON pf.function_id = ps.function_id&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.partition_range_values prv&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON prv.function_id = pf.function_id&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AND prv.boundary_id = p.partition_number - 1&lt;/div&gt;&lt;div&gt;WHERE p.index_id IN (0, 1) -- Heap or Clustered Index&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AND OBJECTPROPERTY(p.object_id, &#39;IsUserTable&#39;) = 1&lt;/div&gt;&lt;div&gt;ORDER BY SchemaName, TableName, p.partition_number;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;2. Detailed Partition Schema Analysis&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Analyze partition function and scheme details&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pf.name AS PartitionFunction,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pf.type_desc AS FunctionType,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pf.fanout AS PartitionCount,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pf.boundary_value_on_right AS IsRightBoundary,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ps.name AS PartitionScheme,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ds.name AS FileGroup,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; dds.destination_id AS PartitionNumber&lt;/div&gt;&lt;div&gt;FROM sys.partition_functions pf&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.partition_schemes ps&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON ps.function_id = pf.function_id&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.destination_data_spaces dds&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON dds.partition_scheme_id = ps.data_space_id&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.data_spaces ds&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON ds.data_space_id = dds.data_space_id&lt;/div&gt;&lt;div&gt;ORDER BY pf.name, dds.destination_id;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;3. Partition Boundary Values&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Get all boundary values for partition functions&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pf.name AS PartitionFunction,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CASE pf.boundary_value_on_right&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN 1 THEN &#39;RIGHT&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ELSE &#39;LEFT&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; END AS RangeType,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; prv.boundary_id AS BoundaryID,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; prv.value AS BoundaryValue,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; TYPE_NAME(prv.system_type_id) AS DataType&lt;/div&gt;&lt;div&gt;FROM sys.partition_functions pf&lt;/div&gt;&lt;div&gt;INNER JOIN sys.partition_range_values prv&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON prv.function_id = pf.function_id&lt;/div&gt;&lt;div&gt;ORDER BY pf.name, prv.boundary_id;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;4. Table-Level Partition Analysis&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Comprehensive table partition analysis&lt;/div&gt;&lt;div&gt;WITH PartitionInfo AS (&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t.object_id,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; OBJECT_SCHEMA_NAME(t.object_id) AS SchemaName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t.name AS TableName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.name AS IndexName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; i.type_desc AS IndexType,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.partition_number,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; p.rows,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; au.total_pages * 8 / 1024 AS SizeMB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ps.name AS PartitionScheme,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; pf.name AS PartitionFunction&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; FROM sys.tables t&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; INNER JOIN sys.indexes i&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ON t.object_id = i.object_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; INNER JOIN sys.partitions p&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ON i.object_id = p.object_id AND i.index_id = p.index_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; LEFT JOIN sys.partition_schemes ps&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ON i.data_space_id = ps.data_space_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; LEFT JOIN sys.partition_functions pf&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ON ps.function_id = pf.function_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; LEFT JOIN sys.allocation_units au&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ON au.container_id = p.hobt_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; WHERE i.index_id IN (0, 1) -- Heap or Clustered&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AND pf.name IS NOT NULL -- Only partitioned tables&lt;/div&gt;&lt;div&gt;)&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SchemaName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; TableName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; PartitionScheme,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; PartitionFunction,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; COUNT(*) AS PartitionCount,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(rows) AS TotalRows,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(SizeMB) AS TotalSizeMB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; MIN(rows) AS MinRowsPerPartition,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; MAX(rows) AS MaxRowsPerPartition,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AVG(rows) AS AvgRowsPerPartition&lt;/div&gt;&lt;div&gt;FROM PartitionInfo&lt;/div&gt;&lt;div&gt;GROUP BY SchemaName, TableName, PartitionScheme, PartitionFunction&lt;/div&gt;&lt;div&gt;ORDER BY TotalRows DESC;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;5. Partition Data Distribution Analysis&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Analyze data distribution across partitions&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; QUOTENAME(OBJECT_SCHEMA_NAME(p.object_id)) + &#39;.&#39; +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; QUOTENAME(OBJECT_NAME(p.object_id)) AS TableName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; p.partition_number AS PartitionNumber,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; p.rows AS RowCount,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CAST(p.rows * 100.0 / SUM(p.rows) OVER(PARTITION BY p.object_id)&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AS DECIMAL(5,2)) AS PercentOfTotal,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CASE&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN prv.value IS NULL THEN &#39;Partition &#39; + CAST(p.partition_number AS VARCHAR)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ELSE &#39;&amp;lt;= &#39; + CAST(prv.value AS VARCHAR)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; END AS UpperBoundary,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; au.total_pages * 8 / 1024 AS SizeMB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; fg.name AS FileGroupName&lt;/div&gt;&lt;div&gt;FROM sys.partitions p&lt;/div&gt;&lt;div&gt;JOIN sys.indexes i&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON p.object_id = i.object_id AND p.index_id = i.index_id&lt;/div&gt;&lt;div&gt;JOIN sys.partition_schemes ps&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON i.data_space_id = ps.data_space_id&lt;/div&gt;&lt;div&gt;JOIN sys.partition_functions pf&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON ps.function_id = pf.function_id&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.partition_range_values prv&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON pf.function_id = prv.function_id&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AND p.partition_number = prv.boundary_id + CASE pf.boundary_value_on_right&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN 1 THEN 0&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ELSE 1&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;END&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.destination_data_spaces dds&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON dds.partition_scheme_id = ps.data_space_id&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AND dds.destination_id = p.partition_number&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.filegroups fg&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON fg.data_space_id = dds.data_space_id&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.allocation_units au&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON au.container_id = p.hobt_id&lt;/div&gt;&lt;div&gt;WHERE i.index_id IN (0, 1)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AND OBJECTPROPERTY(p.object_id, &#39;IsUserTable&#39;) = 1&lt;/div&gt;&lt;div&gt;ORDER BY TableName, p.partition_number;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;6. Generate Partition Recreation Script&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Generate scripts to recreate partition functions and schemes&lt;/div&gt;&lt;div&gt;DECLARE @PartitionFunctionName NVARCHAR(128) = NULL; -- Set to specific function or NULL for all&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;-- Partition Function: &#39; + pf.name AS Comment,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;CREATE PARTITION FUNCTION &#39; + QUOTENAME(pf.name) + &#39; (&#39; +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; TYPE_NAME(prv.system_type_id) + &#39;)&#39; + CHAR(13) +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;AS RANGE &#39; +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CASE pf.boundary_value_on_right&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN 1 THEN &#39;RIGHT&#39;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ELSE &#39;LEFT&#39;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; END + &#39; FOR VALUES (&#39; + CHAR(13) +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; STUFF((&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SELECT &#39;, &#39; +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CASE&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;WHEN prv.value IS NULL THEN &#39;NULL&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;WHEN TYPE_NAME(prv.system_type_id) IN (&#39;datetime&#39;, &#39;date&#39;, &#39;smalldatetime&#39;)&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;THEN &#39;&#39;&#39;&#39; + CONVERT(VARCHAR, prv.value, 121) + &#39;&#39;&#39;&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;WHEN TYPE_NAME(prv.system_type_id) IN (&#39;int&#39;, &#39;bigint&#39;, &#39;smallint&#39;)&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;THEN CAST(prv.value AS VARCHAR)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ELSE &#39;&#39;&#39;&#39; + CAST(prv.value AS VARCHAR) + &#39;&#39;&#39;&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;END&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FROM sys.partition_range_values prv&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE prv.function_id = pf.function_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ORDER BY prv.boundary_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FOR XML PATH(&#39;&#39;)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ), 1, 2, &#39;&amp;nbsp; &amp;nbsp; &#39;) + CHAR(13) + &#39;);&#39; AS CreateFunctionScript,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CHAR(13) + CHAR(13) +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;-- Partition Scheme: &#39; + ps.name AS SchemeComment,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;CREATE PARTITION SCHEME &#39; + QUOTENAME(ps.name) + CHAR(13) +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;AS PARTITION &#39; + QUOTENAME(pf.name) + CHAR(13) +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;TO (&#39; + CHAR(13) +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; STUFF((&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SELECT &#39;, &#39; + QUOTENAME(ds.name)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FROM sys.destination_data_spaces dds&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JOIN sys.data_spaces ds ON dds.data_space_id = ds.data_space_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE dds.partition_scheme_id = ps.data_space_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ORDER BY dds.destination_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FOR XML PATH(&#39;&#39;)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ), 1, 2, &#39;&amp;nbsp; &amp;nbsp; &#39;) + CHAR(13) + &#39;);&#39; AS CreateSchemeScript&lt;/div&gt;&lt;div&gt;FROM sys.partition_functions pf&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.partition_schemes ps ON ps.function_id = pf.function_id&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.partition_range_values prv ON prv.function_id = pf.function_id&lt;/div&gt;&lt;div&gt;WHERE (@PartitionFunctionName IS NULL OR pf.name = @PartitionFunctionName)&lt;/div&gt;&lt;div&gt;GROUP BY pf.name, pf.boundary_value_on_right, ps.name, ps.data_space_id,&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;prv.system_type_id, pf.function_id&lt;/div&gt;&lt;div&gt;ORDER BY pf.name;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;7. Partition Maintenance Information&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Get partition maintenance information&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; t.name AS TableName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; c.name AS PartitionColumn,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ty.name AS DataType,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pf.name AS PartitionFunction,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; pf.boundary_value_on_right AS IsRightBoundary,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ps.name AS PartitionScheme,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; p.partition_number,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; prv.value AS BoundaryValue,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; fg.name AS FileGroup,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; p.rows,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; stat.rowmodctr AS ModificationsSinceLastStatsUpdate,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; stat.last_updated AS LastStatsUpdate&lt;/div&gt;&lt;div&gt;FROM sys.tables t&lt;/div&gt;&lt;div&gt;INNER JOIN sys.indexes i&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON t.object_id = i.object_id&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AND i.index_id IN (0, 1)&lt;/div&gt;&lt;div&gt;INNER JOIN sys.partitions p&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON i.object_id = p.object_id&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AND i.index_id = p.index_id&lt;/div&gt;&lt;div&gt;INNER JOIN sys.partition_schemes ps&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON i.data_space_id = ps.data_space_id&lt;/div&gt;&lt;div&gt;INNER JOIN sys.partition_functions pf&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON ps.function_id = pf.function_id&lt;/div&gt;&lt;div&gt;INNER JOIN sys.index_columns ic&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON i.object_id = ic.object_id&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AND i.index_id = ic.index_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AND ic.partition_ordinal &amp;gt; 0&lt;/div&gt;&lt;div&gt;INNER JOIN sys.columns c&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON ic.object_id = c.object_id&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AND ic.column_id = c.column_id&lt;/div&gt;&lt;div&gt;INNER JOIN sys.types ty&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON c.system_type_id = ty.system_type_id&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.partition_range_values prv&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON pf.function_id = prv.function_id&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AND p.partition_number = prv.boundary_id + 1&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.destination_data_spaces dds&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON ps.data_space_id = dds.partition_scheme_id&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AND p.partition_number = dds.destination_id&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.filegroups fg&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON dds.data_space_id = fg.data_space_id&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.sysindexes stat&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON t.object_id = stat.id&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AND i.index_id = stat.indid&lt;/div&gt;&lt;div&gt;WHERE OBJECTPROPERTY(t.object_id, &#39;IsUserTable&#39;) = 1&lt;/div&gt;&lt;div&gt;ORDER BY t.name, p.partition_number;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Usage Instructions:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1. Start with script #1 to get a basic overview of all partitioned tables&lt;/div&gt;&lt;div&gt;2. Use script #2 to understand the partition schemes and filegroup mappings&lt;/div&gt;&lt;div&gt;3. Script #3 will show you the actual boundary values for each partition function&lt;/div&gt;&lt;div&gt;4. Script #4 provides table-level summary statistics&lt;/div&gt;&lt;div&gt;5. Script #5 gives detailed data distribution analysis&lt;/div&gt;&lt;div&gt;6. Script #6 can generate recreation scripts for your partition functions and schemes&lt;/div&gt;&lt;div&gt;7. Script #7 helps with partition maintenance planning&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Tips for Reverse Engineering:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1. Identify the partition key column - This is crucial for understanding the partitioning strategy&lt;/div&gt;&lt;div&gt;2. Check boundary values - Understand whether it&#39;s RANGE LEFT or RANGE RIGHT&lt;/div&gt;&lt;div&gt;3. Analyze data distribution - Look for unbalanced partitions&lt;/div&gt;&lt;div&gt;4. Review filegroup assignments - Understand the storage layout&lt;/div&gt;&lt;div&gt;5. Consider partition alignment - Check if indexes are aligned with the table partitioning&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;These scripts will help you thoroughly understand any existing SQL Server partitioning implementation.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;https://chat.deepseek.com/share/2enklnyb6ed7vq1647&lt;/div&gt;&lt;div&gt;=====================================&lt;/div&gt;&lt;div&gt;&lt;div&gt;If your goal is to reverse‑engineer a SQL Server partitioned table—meaning:&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;- extract the partition function,&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;- extract the partition scheme,&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;- extract the boundary values,&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;- extract the table definition including partitioning,&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;…I can give you a set of scripts that reconstruct everything needed to recreate the partitioning structure.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Below is a complete, production‑ready toolkit you can run on any SQL Server instance.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🧩 1. Script to Generate Partition Function Definition&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;`sql&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;CREATE PARTITION FUNCTION [&#39; + pf.name + &#39;] (&#39; +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t.name +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;) AS RANGE &#39; +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CASE pf.boundaryvalueon_right&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN 1 THEN &#39;RIGHT&#39;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ELSE &#39;LEFT&#39;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39; FOR VALUES (&#39; +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; STRINGAGG(CONVERT(varchar(max), prv.value), &#39;, &#39;) WITHIN GROUP (ORDER BY prv.boundaryid)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; + &#39;);&#39; AS PartitionFunctionScript&lt;/div&gt;&lt;div&gt;FROM sys.partition_functions pf&lt;/div&gt;&lt;div&gt;JOIN sys.types t ON pf.systemtypeid = t.systemtypeid&lt;/div&gt;&lt;div&gt;JOIN sys.partitionrangevalues prv ON pf.functionid = prv.functionid&lt;/div&gt;&lt;div&gt;GROUP BY pf.name, t.name, pf.boundaryvalueon_right;&lt;/div&gt;&lt;div&gt;`&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🧩 2. Script to Generate Partition Scheme Definition&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;`sql&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;CREATE PARTITION SCHEME [&#39; + ps.name + &#39;] AS PARTITION [&#39; + pf.name + &#39;] TO (&#39; +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; STRINGAGG(ds.name, &#39;, &#39;) WITHIN GROUP (ORDER BY p.partitionnumber)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; + &#39;);&#39; AS PartitionSchemeScript&lt;/div&gt;&lt;div&gt;FROM sys.partition_schemes ps&lt;/div&gt;&lt;div&gt;JOIN sys.partitionfunctions pf ON ps.functionid = pf.function_id&lt;/div&gt;&lt;div&gt;JOIN sys.destinationdataspaces dds ON ps.dataspaceid = dds.partitionschemeid&lt;/div&gt;&lt;div&gt;JOIN sys.dataspaces ds ON dds.dataspaceid = ds.dataspace_id&lt;/div&gt;&lt;div&gt;JOIN sys.partitions p ON p.partitionnumber = dds.destinationid&lt;/div&gt;&lt;div&gt;GROUP BY ps.name, pf.name;&lt;/div&gt;&lt;div&gt;`&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🧩 3. Script to Reverse‑Engineer a Partitioned Table Definition&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This script extracts the table DDL including the partition scheme:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;`sql&lt;/div&gt;&lt;div&gt;DECLARE @TableName sysname = &#39;YourTableName&#39;;&lt;/div&gt;&lt;div&gt;DECLARE @SchemaName sysname = &#39;dbo&#39;;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; c.COLUMN_NAME,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; c.DATA_TYPE,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; c.CHARACTERMAXIMUMLENGTH,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; c.NUMERIC_PRECISION,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; c.NUMERIC_SCALE,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; c.IS_NULLABLE&lt;/div&gt;&lt;div&gt;FROM INFORMATION_SCHEMA.COLUMNS c&lt;/div&gt;&lt;div&gt;WHERE c.TABLE_NAME = @TableName&lt;/div&gt;&lt;div&gt;&amp;nbsp; AND c.TABLE_SCHEMA = @SchemaName&lt;/div&gt;&lt;div&gt;ORDER BY c.ORDINAL_POSITION;&lt;/div&gt;&lt;div&gt;`&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Then extract the partitioning column:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;`sql&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; i.name AS IndexName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ic.indexcolumnid,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; col.name AS ColumnName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ps.name AS PartitionScheme&lt;/div&gt;&lt;div&gt;FROM sys.indexes i&lt;/div&gt;&lt;div&gt;JOIN sys.indexcolumns ic ON i.objectid = ic.objectid AND i.indexid = ic.index_id&lt;/div&gt;&lt;div&gt;JOIN sys.columns col ON col.objectid = i.objectid AND col.columnid = ic.columnid&lt;/div&gt;&lt;div&gt;JOIN sys.dataspaces ds ON i.dataspaceid = ds.dataspace_id&lt;/div&gt;&lt;div&gt;JOIN sys.partitionschemes ps ON ds.dataspaceid = ps.dataspace_id&lt;/div&gt;&lt;div&gt;WHERE i.objectid = OBJECTID(@SchemaName + &#39;.&#39; + @TableName)&lt;/div&gt;&lt;div&gt;&amp;nbsp; AND i.index_id &amp;lt; 2;&amp;nbsp; -- clustered index only&lt;/div&gt;&lt;div&gt;`&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🧩 4. Script to Generate Full CREATE TABLE With Partitioning&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This script outputs the full CREATE TABLE including partition scheme:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;`sql&lt;/div&gt;&lt;div&gt;DECLARE @TableName sysname = &#39;YourTableName&#39;;&lt;/div&gt;&lt;div&gt;DECLARE @SchemaName sysname = &#39;dbo&#39;;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;CREATE TABLE [&#39; + @SchemaName + &#39;].[&#39; + @TableName + &#39;] (&#39; +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; STRING_AGG(&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &#39; [&#39; + c.name + &#39;] &#39; +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; t.name +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CASE&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN t.name IN (&#39;varchar&#39;,&#39;nvarchar&#39;,&#39;char&#39;,&#39;nchar&#39;)&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; THEN &#39;(&#39; +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CASE WHEN c.maxlength = -1 THEN &#39;MAX&#39; ELSE CAST(c.maxlength AS varchar(10)) END&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + &#39;)&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN t.name IN (&#39;decimal&#39;,&#39;numeric&#39;)&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; THEN &#39;(&#39; + CAST(c.precision AS varchar(10)) + &#39;,&#39; + CAST(c.scale AS varchar(10)) + &#39;)&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ELSE &#39;&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CASE WHEN c.is_nullable = 0 THEN &#39; NOT NULL&#39; ELSE &#39; NULL&#39; END&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; , &#39;,&#39; + CHAR(10)) +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;)&#39; +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CHAR(10) +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;ON &#39; + ps.name + &#39;;&#39; AS CreateTableScript&lt;/div&gt;&lt;div&gt;FROM sys.columns c&lt;/div&gt;&lt;div&gt;JOIN sys.types t ON c.usertypeid = t.usertypeid&lt;/div&gt;&lt;div&gt;JOIN sys.indexes i ON i.objectid = c.objectid AND i.index_id = 1&lt;/div&gt;&lt;div&gt;JOIN sys.indexcolumns ic ON ic.objectid = c.objectid AND ic.indexid = 1 AND ic.columnid = c.columnid&lt;/div&gt;&lt;div&gt;JOIN sys.partitionschemes ps ON i.dataspaceid = ps.dataspace_id&lt;/div&gt;&lt;div&gt;JOIN sys.columns col ON col.objectid = c.objectid AND col.columnid = ic.columnid&lt;/div&gt;&lt;div&gt;WHERE c.objectid = OBJECTID(@SchemaName + &#39;.&#39; + @TableName)&lt;/div&gt;&lt;div&gt;GROUP BY ps.name, col.name;&lt;/div&gt;&lt;div&gt;`&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Want me to bundle all of this into a single reusable stored procedure?&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;I can assemble a one‑click reverse‑engineering tool that outputs:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;- Partition function script&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;- Partition scheme script&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;- Table DDL&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;- Index DDL&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;- Filegroup mapping&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Just tell me the table name and I can package it into a clean stored procedure.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;======================================&lt;/div&gt;&lt;div&gt;&lt;div&gt;Reverse engineering a partition table in SQL Server is a bit like putting a puzzle back together. You can&#39;t just script the table; you have to extract the Partition Function (the logic) and the Partition Scheme (the physical mapping) first.&lt;/div&gt;&lt;div&gt;Here is a comprehensive script to extract the definitions for all three components.&lt;/div&gt;&lt;div&gt;1. Reverse Engineer the Partition Function&lt;/div&gt;&lt;div&gt;This script generates the CREATE PARTITION FUNCTION statement, including the range type (LEFT or RIGHT) and the boundary values.&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;CREATE PARTITION FUNCTION &#39; + QUOTENAME(f.name) + &#39; (&#39; + QUOTENAME(t.name) + &#39;)&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AS RANGE &#39; + CASE WHEN f.boundary_value_on_right = 1 THEN &#39;RIGHT&#39; ELSE &#39;LEFT&#39; END + &#39;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; FOR VALUES (&#39; +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; STUFF((SELECT &#39;, &#39; +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CASE&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN t.name IN (&#39;varchar&#39;, &#39;char&#39;, &#39;nvarchar&#39;, &#39;nchar&#39;, &#39;text&#39;) THEN &#39;&#39;&#39;&#39; + CAST(rv.value AS nvarchar(max)) + &#39;&#39;&#39;&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN t.name IN (&#39;datetime&#39;, &#39;date&#39;, &#39;datetime2&#39;) THEN &#39;&#39;&#39;&#39; + CONVERT(nvarchar, rv.value, 121) + &#39;&#39;&#39;&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ELSE CAST(rv.value AS nvarchar(max))&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FROM sys.partition_range_values rv&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE rv.function_id = f.function_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ORDER BY rv.boundary_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FOR XML PATH(&#39;&#39;), TYPE).value(&#39;.&#39;, &#39;NVARCHAR(MAX)&#39;), 1, 2, &#39;&#39;) + &#39;);&#39; AS CreateFunctionScript&lt;/div&gt;&lt;div&gt;FROM sys.partition_functions f&lt;/div&gt;&lt;div&gt;JOIN sys.partition_parameters p ON f.function_id = p.function_id&lt;/div&gt;&lt;div&gt;JOIN sys.types t ON p.system_type_id = t.system_type_id AND p.user_type_id = t.user_type_id&lt;/div&gt;&lt;div&gt;WHERE p.parameter_id = 1;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;2. Reverse Engineer the Partition Scheme&lt;/div&gt;&lt;div&gt;This maps the function to specific Filegroups.&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;CREATE PARTITION SCHEME &#39; + QUOTENAME(s.name) + &#39;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AS PARTITION &#39; + QUOTENAME(f.name) + &#39;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; TO (&#39; +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; STUFF((SELECT &#39;, &#39; + QUOTENAME(fg.name)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FROM sys.destination_data_spaces dds&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JOIN sys.filegroups fg ON dds.data_space_id = fg.data_space_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE dds.partition_scheme_id = s.data_space_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ORDER BY dds.destination_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FOR XML PATH(&#39;&#39;), TYPE).value(&#39;.&#39;, &#39;NVARCHAR(MAX)&#39;), 1, 2, &#39;&#39;) + &#39;);&#39; AS CreateSchemeScript&lt;/div&gt;&lt;div&gt;FROM sys.partition_schemes s&lt;/div&gt;&lt;div&gt;JOIN sys.partition_functions f ON s.function_id = f.function_id;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;3. Identify Partitioned Tables and Columns&lt;/div&gt;&lt;div&gt;To finish the &quot;reverse engineering,&quot; you need to know which tables use these schemes and on which columns.&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; OBJECT_NAME(i.object_id) AS TableName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; i.name AS IndexName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; s.name AS PartitionScheme,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; c.name AS PartitionedColumn&lt;/div&gt;&lt;div&gt;FROM sys.indexes i&lt;/div&gt;&lt;div&gt;JOIN sys.partition_schemes s ON i.data_space_id = s.data_space_id&lt;/div&gt;&lt;div&gt;JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id&lt;/div&gt;&lt;div&gt;JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id&lt;/div&gt;&lt;div&gt;WHERE ic.partition_ordinal &amp;gt; 0;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Important Considerations&lt;/div&gt;&lt;div&gt;&amp;nbsp;* Data Types: My script handles basic strings and dates, but if you have specialized types (like varbinary), you might need to adjust the CAST logic in the first script.&lt;/div&gt;&lt;div&gt;&amp;nbsp;* Filegroups: Ensure the destination database has the exact same Filegroup names, or the Scheme script will fail.&lt;/div&gt;&lt;div&gt;&amp;nbsp;* Permissions: You’ll need VIEW DEFINITION or db_owner permissions to query these system catalog views.&lt;/div&gt;&lt;div&gt;Would you like me to combine these into a single stored procedure that generates the entire script for a specific table?&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;This script combines the logic into a single block. It targets a specific table, identifies its partition scheme and function, and then generates the DDL (Data Definition Language) for the entire stack.&lt;/div&gt;&lt;div&gt;The All-in-One Generator&lt;/div&gt;&lt;div&gt;Replace &#39;YourTableName&#39; in the first line with the table you are investigating.&lt;/div&gt;&lt;div&gt;DECLARE @TableName NVARCHAR(256) = &#39;YourTableName&#39;; -- Set your table name here&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-- 1. Get Partition Function Script&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;--- PARTITION FUNCTION ---&#39; + CHAR(13) +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;CREATE PARTITION FUNCTION &#39; + QUOTENAME(pf.name) + &#39; (&#39; + QUOTENAME(t.name) + &#39;)&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AS RANGE &#39; + CASE WHEN pf.boundary_value_on_right = 1 THEN &#39;RIGHT&#39; ELSE &#39;LEFT&#39; END + &#39;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; FOR VALUES (&#39; +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; STUFF((SELECT &#39;, &#39; +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CASE&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN t.name IN (&#39;varchar&#39;, &#39;char&#39;, &#39;nvarchar&#39;, &#39;nchar&#39;) THEN &#39;&#39;&#39;&#39; + CAST(rv.value AS nvarchar(max)) + &#39;&#39;&#39;&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN t.name IN (&#39;datetime&#39;, &#39;date&#39;, &#39;datetime2&#39;) THEN &#39;&#39;&#39;&#39; + CONVERT(nvarchar, rv.value, 121) + &#39;&#39;&#39;&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ELSE CAST(rv.value AS nvarchar(max))&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FROM sys.partition_range_values rv&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE rv.function_id = pf.function_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ORDER BY rv.boundary_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FOR XML PATH(&#39;&#39;), TYPE).value(&#39;.&#39;, &#39;NVARCHAR(MAX)&#39;), 1, 2, &#39;&#39;) + &#39;);&#39; AS Script&lt;/div&gt;&lt;div&gt;FROM sys.indexes i&lt;/div&gt;&lt;div&gt;JOIN sys.partition_schemes ps ON i.data_space_id = ps.data_space_id&lt;/div&gt;&lt;div&gt;JOIN sys.partition_functions pf ON ps.function_id = pf.function_id&lt;/div&gt;&lt;div&gt;JOIN sys.partition_parameters pp ON pf.function_id = pp.function_id&lt;/div&gt;&lt;div&gt;JOIN sys.types t ON pp.system_type_id = t.system_type_id AND pp.user_type_id = t.user_type_id&lt;/div&gt;&lt;div&gt;WHERE i.object_id = OBJECT_ID(@TableName) AND i.index_id &amp;lt;= 1&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;UNION ALL&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-- 2. Get Partition Scheme Script&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;--- PARTITION SCHEME ---&#39; + CHAR(13) +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;CREATE PARTITION SCHEME &#39; + QUOTENAME(ps.name) + &#39;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AS PARTITION &#39; + QUOTENAME(pf.name) + &#39;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; TO (&#39; +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; STUFF((SELECT &#39;, &#39; + QUOTENAME(fg.name)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FROM sys.destination_data_spaces dds&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JOIN sys.filegroups fg ON dds.data_space_id = fg.data_space_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE dds.partition_scheme_id = ps.data_space_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ORDER BY dds.destination_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FOR XML PATH(&#39;&#39;), TYPE).value(&#39;.&#39;, &#39;NVARCHAR(MAX)&#39;), 1, 2, &#39;&#39;) + &#39;);&#39;&lt;/div&gt;&lt;div&gt;FROM sys.indexes i&lt;/div&gt;&lt;div&gt;JOIN sys.partition_schemes ps ON i.data_space_id = ps.data_space_id&lt;/div&gt;&lt;div&gt;JOIN sys.partition_functions pf ON ps.function_id = pf.function_id&lt;/div&gt;&lt;div&gt;WHERE i.object_id = OBJECT_ID(@TableName) AND i.index_id &amp;lt;= 1&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;UNION ALL&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-- 3. Get Table Application Info&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;--- TABLE USAGE ---&#39; + CHAR(13) +&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39;-- Table: &#39; + QUOTENAME(OBJECT_SCHEMA_NAME(i.object_id)) + &#39;.&#39; + QUOTENAME(OBJECT_NAME(i.object_id)) +&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &#39; is partitioned on column [&#39; + c.name + &#39;] using Scheme &#39; + QUOTENAME(ps.name)&lt;/div&gt;&lt;div&gt;FROM sys.indexes i&lt;/div&gt;&lt;div&gt;JOIN sys.partition_schemes ps ON i.data_space_id = ps.data_space_id&lt;/div&gt;&lt;div&gt;JOIN sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id&lt;/div&gt;&lt;div&gt;JOIN sys.columns c ON ic.object_id = c.object_id AND ic.column_id = c.column_id&lt;/div&gt;&lt;div&gt;WHERE i.object_id = OBJECT_ID(@TableName) AND i.index_id &amp;lt;= 1 AND ic.partition_ordinal &amp;gt; 0;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;How to use this output&lt;/div&gt;&lt;div&gt;&amp;nbsp;* Run the script: Copy the text results from the &quot;Script&quot; column.&lt;/div&gt;&lt;div&gt;&amp;nbsp;* Order Matters: When executing the generated code on a new database, you must follow this sequence:&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;* Create the Filegroups (manually, as they are physical file structures).&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;* Run the Partition Function script.&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;* Run the Partition Scheme script.&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;* Create or Alter your Table to use the scheme.&lt;/div&gt;&lt;div&gt;Quick Tip for SSMS Users&lt;/div&gt;&lt;div&gt;If you prefer a GUI approach, you can right-click the table in Object Explorer, go to Storage &amp;gt; Manage Partitioning, or use Script Table as &amp;gt; CREATE To, which often includes the partitioning clause if the options are enabled in your SSMS settings.&lt;/div&gt;&lt;div&gt;Would you like me to create a script that also identifies the row counts and data distribution across these partitions?&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;======================================&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;
  &lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiDTdPQrTaCyCTHFVMdqgLzDyxcTUvDP8D8JYfX3jPp-FFlophdd9ow2mRChRtSuXO9igRhvaNPpA47ucxg8LPI92XRYyRMYLc0YgSSprBmPCZhruo13xKfJOo4cFKs74j6fzL4yYnyUsSbNIaqwESLbun-mfcZa0tLRxqxVP3QTDUrpPxxbbrN&quot;&gt;
    &lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEiDTdPQrTaCyCTHFVMdqgLzDyxcTUvDP8D8JYfX3jPp-FFlophdd9ow2mRChRtSuXO9igRhvaNPpA47ucxg8LPI92XRYyRMYLc0YgSSprBmPCZhruo13xKfJOo4cFKs74j6fzL4yYnyUsSbNIaqwESLbun-mfcZa0tLRxqxVP3QTDUrpPxxbbrN&quot; width=&quot;400&quot;&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;br&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/3834780106901190958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/3834780106901190958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/3834780106901190958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/3834780106901190958'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2026/01/sql-server-partition-menegment.html' title='Sql Server Partition Menegment '/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEiDTdPQrTaCyCTHFVMdqgLzDyxcTUvDP8D8JYfX3jPp-FFlophdd9ow2mRChRtSuXO9igRhvaNPpA47ucxg8LPI92XRYyRMYLc0YgSSprBmPCZhruo13xKfJOo4cFKs74j6fzL4yYnyUsSbNIaqwESLbun-mfcZa0tLRxqxVP3QTDUrpPxxbbrN=s72-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-7863649719155987465</id><published>2026-01-12T11:57:18.743+02:00</published><updated>2026-01-12T11:57:20.182+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="teradata"/><title type='text'>Teradata Session Resource Monitoring </title><content type='html'>&lt;div&gt;I&#39;ll help you monitor user session resource usage in Teradata. Here are several approaches:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1. Basic Current Session Monitoring&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Check your own session resource usage&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; UserName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AccountName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SessionNo,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CurrentDate AS Date,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CurrentTime AS Time,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; Request_Text AS Last_Query,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AMPCPUTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ParserCPUTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CPUTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; DiskIO,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ReqIOKB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SpoolUsed,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; MaxSpool,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; StartTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; FirstStepTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; FirstRespTime&lt;/div&gt;&lt;div&gt;FROM DBC.SessionInfoV&lt;/div&gt;&lt;div&gt;WHERE UserName = USER&lt;/div&gt;&lt;div&gt;&amp;nbsp; AND SessionNo = SESSION;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;2. Monitor Active Sessions (Real-time)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Monitor all active sessions with resource usage&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; si.UserName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; si.SessionNo,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; si.AccountName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; si.CurrentDate,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; si.CurrentTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; si.Request_Text AS Last_Query,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; si.AMPCPUTime AS AMP_CPU_Seconds,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; si.ParserCPUTime AS Parser_CPU_Seconds,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; si.CPUTime AS Total_CPU_Seconds,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; si.DiskIO,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; si.ReqIOKB/1024 AS IO_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; si.SpoolUsed/1024/1024 AS Spool_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; si.MaxSpool/1024/1024 AS MaxSpool_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; rq.EstimatedRows,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; rq.NumberOfResponses,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; rq.StatementType,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; rq.SessionMode,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CASE WHEN si.State = &#39;Active&#39; THEN &#39;Running&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;WHEN si.State = &#39;Idle&#39; THEN &#39;Idle&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ELSE si.State END AS Session_State&lt;/div&gt;&lt;div&gt;FROM DBC.SessionInfoV si&lt;/div&gt;&lt;div&gt;LEFT JOIN DBC.RequestTextV rq&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON si.SessionNo = rq.SessionNo&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AND si.RequestNum = rq.RequestNum&lt;/div&gt;&lt;div&gt;WHERE si.State = &#39;Active&#39;&lt;/div&gt;&lt;div&gt;ORDER BY si.AMPCPUTime DESC;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;3. Historical Resource Usage by User&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Resource usage by user for current day&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; UserName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AccountName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; COUNT(*) AS Query_Count,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(AMPCPUTime) AS Total_AMP_CPU_Seconds,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(ParserCPUTime) AS Total_Parser_CPU_Seconds,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(DiskIO) AS Total_DiskIO,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(ReqIOKB)/1024 AS Total_IO_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(SpoolUsed)/1024/1024 AS Total_Spool_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; MAX(MaxSpool)/1024/1024 AS Max_Spool_MB_Used,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AVG(AMPCPUTime) AS Avg_AMP_CPU_Seconds&lt;/div&gt;&lt;div&gt;FROM DBC.DBQLogTbl&lt;/div&gt;&lt;div&gt;WHERE CollectTimeStamp &amp;gt;= CURRENT_DATE&lt;/div&gt;&lt;div&gt;GROUP BY 1, 2&lt;/div&gt;&lt;div&gt;ORDER BY Total_AMP_CPU_Seconds DESC;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;4. Monitoring Script with Thresholds&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Monitor sessions exceeding thresholds&lt;/div&gt;&lt;div&gt;WITH Session_Metrics AS (&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; UserName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SessionNo,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AccountName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Request_Text,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AMPCPUTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ParserCPUTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CPUTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SpoolUsed/1024/1024 AS Spool_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MaxSpool/1024/1024 AS MaxSpool_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (SpoolUsed * 100.0 / NULLIF(MaxSpool,0)) AS Spool_Pct,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DiskIO,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; StartTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FirstStepTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FirstRespTime&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; FROM DBC.SessionInfoV&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; WHERE State = &#39;Active&#39;&lt;/div&gt;&lt;div&gt;)&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; UserName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SessionNo,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AccountName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; LEFT(Request_Text, 100) AS Query_Preview,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AMPCPUTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ParserCPUTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CPUTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; Spool_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; MaxSpool_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; Spool_Pct,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; DiskIO,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CASE&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN AMPCPUTime &amp;gt; 3600 THEN &#39;HIGH CPU - 1HR+&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN Spool_Pct &amp;gt; 80 THEN &#39;HIGH SPOOL USAGE&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN DiskIO &amp;gt; 1000000 THEN &#39;HIGH DISK IO&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ELSE &#39;NORMAL&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; END AS Alert_Level&lt;/div&gt;&lt;div&gt;FROM Session_Metrics&lt;/div&gt;&lt;div&gt;WHERE AMPCPUTime &amp;gt; 300&amp;nbsp; -- More than 5 minutes CPU&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;OR Spool_Pct &amp;gt; 70&amp;nbsp; &amp;nbsp; &amp;nbsp;-- More than 70% spool used&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;OR DiskIO &amp;gt; 500000&amp;nbsp; &amp;nbsp; -- High disk I/O&lt;/div&gt;&lt;div&gt;ORDER BY AMPCPUTime DESC;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;5. Comprehensive Monitoring Procedure&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Create a stored procedure for regular monitoring&lt;/div&gt;&lt;div&gt;REPLACE PROCEDURE Monitor_Session_Resources()&lt;/div&gt;&lt;div&gt;BEGIN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; DECLARE high_cpu_count INT;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; DECLARE high_spool_count INT;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; -- Create temporary table for active session metrics&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CREATE VOLATILE TABLE vt_session_monitor AS&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; (&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; UserName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SessionNo,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AccountName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Request_Text,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AMPCPUTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SpoolUsed/1024/1024 AS Spool_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MaxSpool/1024/1024 AS MaxSpool_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; (SpoolUsed * 100.0 / NULLIF(MaxSpool,0)) AS Spool_Pct,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DiskIO,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; StartTime,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CurrentTimestamp AS Monitor_Time&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FROM DBC.SessionInfoV&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE State = &#39;Active&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ) WITH DATA&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; PRIMARY INDEX (UserName)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ON COMMIT PRESERVE ROWS;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; -- Get alert counts&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SELECT COUNT(*) INTO high_cpu_count&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; FROM vt_session_monitor&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; WHERE AMPCPUTime &amp;gt; 600; -- 10 minutes&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SELECT COUNT(*) INTO high_spool_count&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; FROM vt_session_monitor&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; WHERE Spool_Pct &amp;gt; 85;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; -- Display results&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &#39;SESSION MONITOR REPORT&#39; AS Report_Title,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CURRENT_TIMESTAMP AS Report_Time,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; high_cpu_count AS Sessions_High_CPU,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; high_spool_count AS Sessions_High_Spool;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; -- Detail view&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; UserName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SessionNo,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AccountName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; LEFT(Request_Text, 50) AS Query,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AMPCPUTime AS CPU_Seconds,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Spool_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Spool_Pct,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CASE&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN AMPCPUTime &amp;gt; 600 THEN &#39;⚠️ HIGH CPU&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHEN Spool_Pct &amp;gt; 85 THEN &#39;⚠️ HIGH SPOOL&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ELSE &#39;✓ OK&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END AS Status&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; FROM vt_session_monitor&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; WHERE AMPCPUTime &amp;gt; 300 OR Spool_Pct &amp;gt; 70&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ORDER BY AMPCPUTime DESC;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; -- Cleanup&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; DROP TABLE vt_session_monitor;&lt;/div&gt;&lt;div&gt;END;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;6. Resource Usage by Query Type&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Analyze resource usage by statement type&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; StatementType,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; COUNT(*) AS Execution_Count,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(AMPCPUTime) AS Total_AMP_CPU_Time,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AVG(AMPCPUTime) AS Avg_AMP_CPU_Time,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(ParserCPUTime) AS Total_Parser_CPU_Time,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(DiskIO) AS Total_DiskIO,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(ReqIOKB)/1024 AS Total_IO_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(SpoolUsed)/1024/1024 AS Total_Spool_MB&lt;/div&gt;&lt;div&gt;FROM DBC.DBQLogTbl&lt;/div&gt;&lt;div&gt;WHERE CollectTimeStamp &amp;gt;= DATE - 7&lt;/div&gt;&lt;div&gt;GROUP BY StatementType&lt;/div&gt;&lt;div&gt;ORDER BY Total_AMP_CPU_Time DESC;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;7. Top Resource-Consuming Users&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Top users by resource consumption (last hour)&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; UserName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; AccountName,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; COUNT(*) AS Query_Count,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(AMPCPUTime) AS Total_CPU_Seconds,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(DiskIO) AS Total_DiskIO,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(ReqIOKB)/1024 AS Total_IO_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUM(SpoolUsed)/1024/1024 AS Total_Spool_MB,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; MAX(SpoolUsed)/1024/1024 AS Peak_Spool_MB&lt;/div&gt;&lt;div&gt;FROM DBC.DBQLogTbl&lt;/div&gt;&lt;div&gt;WHERE CollectTimeStamp &amp;gt;= CURRENT_TIMESTAMP - INTERVAL &#39;1&#39; HOUR&lt;/div&gt;&lt;div&gt;GROUP BY 1, 2&lt;/div&gt;&lt;div&gt;HAVING SUM(AMPCPUTime) &amp;gt; 60&amp;nbsp; -- More than 1 minute total CPU&lt;/div&gt;&lt;div&gt;ORDER BY Total_CPU_Seconds DESC;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Usage Tips:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1. Permissions Required: You need appropriate privileges to query system tables like DBC.SessionInfoV, DBC.DBQLogTbl&lt;/div&gt;&lt;div&gt;2. Monitor Regularly: Schedule these queries to run periodically using Teradata Workload Scheduler or external schedulers&lt;/div&gt;&lt;div&gt;3. Set Thresholds: Adjust thresholds based on your system&#39;s capacity and workload patterns&lt;/div&gt;&lt;div&gt;4. Consider Performance: These queries access system tables which can be resource-intensive - run during off-peak hours for historical analysis&lt;/div&gt;&lt;div&gt;5. Alert Integration: Integrate high-threshold alerts with your monitoring system.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/7863649719155987465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/7863649719155987465' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/7863649719155987465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/7863649719155987465'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2026/01/teradata-session-resource-monitoring.html' title='Teradata Session Resource Monitoring '/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-8617109495713809662</id><published>2025-11-26T09:17:24.642+02:00</published><updated>2025-11-26T09:17:26.051+02:00</updated><title type='text'>sqlserver partition split by identity</title><content type='html'>&lt;div&gt;I&#39;ll show you how to implement this SQL Server partition management solution. Here&#39;s a complete approach:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1. First, Create the Partition Function and Scheme&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Create partition function&lt;/div&gt;&lt;div&gt;CREATE PARTITION FUNCTION pf_IdentityPartition (BIGINT)&lt;/div&gt;&lt;div&gt;AS RANGE RIGHT FOR VALUES (0);&amp;nbsp; -- Start with single partition&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-- Create partition scheme&lt;/div&gt;&lt;div&gt;CREATE PARTITION SCHEME ps_IdentityPartition&lt;/div&gt;&lt;div&gt;AS PARTITION pf_IdentityPartition&lt;/div&gt;&lt;div&gt;ALL TO ([PRIMARY]);&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;2. Create or Alter Your Table to Use Partitioning&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- If creating new table:&lt;/div&gt;&lt;div&gt;CREATE TABLE dbo.YourTable (&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; ID BIGINT IDENTITY(1,1) PRIMARY KEY,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CreatedDate DATETIME2 NOT NULL DEFAULT GETDATE(),&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; -- other columns...&lt;/div&gt;&lt;div&gt;) ON ps_IdentityPartition(ID);&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-- If altering existing table, you&#39;ll need to:&lt;/div&gt;&lt;div&gt;-- 1. Create new partitioned table&lt;/div&gt;&lt;div&gt;-- 2. Migrate data&lt;/div&gt;&lt;div&gt;-- 3. Drop old table and rename new one&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;3. Create the Partition Maintenance Procedure&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;CREATE PROCEDURE dbo.usp_MaintainPartitions&lt;/div&gt;&lt;div&gt;AS&lt;/div&gt;&lt;div&gt;BEGIN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SET NOCOUNT ON;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; DECLARE @CutoffDate DATE = DATEADD(DAY, -4, CAST(GETDATE() AS DATE));&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; DECLARE @SplitValue BIGINT;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; DECLARE @NextBoundary BIGINT;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; DECLARE @PartitionNumber INT;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; DECLARE @MaxID BIGINT;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; BEGIN TRY&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BEGIN TRANSACTION;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- Find the max ID for the 4th oldest day&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SELECT @SplitValue = MAX(ID)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FROM dbo.YourTable&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE CAST(CreatedDate AS DATE) = @CutoffDate;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- If no data for that specific day, find the closest previous ID&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IF @SplitValue IS NULL&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BEGIN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SELECT @SplitValue = MAX(ID)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FROM dbo.YourTable&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE CAST(CreatedDate AS DATE) &amp;lt; @CutoffDate;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- If we found a boundary value, split the partition&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IF @SplitValue IS NOT NULL&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BEGIN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- Get next boundary value&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SELECT @NextBoundary = CAST(prv.value AS BIGINT)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FROM sys.partition_functions pf&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JOIN sys.partition_range_values prv ON pf.function_id = prv.function_id&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE pf.name = &#39;pf_IdentityPartition&#39;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AND prv.boundary_id = 1; -- First boundary&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- Only split if our split value is greater than existing boundary&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IF @SplitValue &amp;gt; @NextBoundary&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BEGIN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- Split at the calculated value&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ALTER PARTITION FUNCTION pf_IdentityPartition()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SPLIT RANGE (@SplitValue);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- Get the partition number that contains old data (partition 1)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SET @PartitionNumber = 1;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- Check if partition has data older than 3 days&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IF EXISTS (&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SELECT 1&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FROM dbo.YourTable&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE $PARTITION.pf_IdentityPartition(ID) = @PartitionNumber&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AND CAST(CreatedDate AS DATE) &amp;lt; DATEADD(DAY, -3, CAST(GETDATE() AS DATE))&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BEGIN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- Truncate the old partition&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TRUNCATE TABLE dbo.YourTable&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WITH (PARTITIONS (@PartitionNumber));&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- Merge the empty partition back&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ALTER PARTITION FUNCTION pf_IdentityPartition()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MERGE RANGE (@NextBoundary);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; COMMIT TRANSACTION;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PRINT &#39;Partition maintenance completed successfully&#39;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; END TRY&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; BEGIN CATCH&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IF @@TRANCOUNT &amp;gt; 0&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ROLLBACK TRANSACTION;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DECLARE @ErrorMessage NVARCHAR(4000) = ERROR_MESSAGE();&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DECLARE @ErrorSeverity INT = ERROR_SEVERITY();&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DECLARE @ErrorState INT = ERROR_STATE();&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; END CATCH&lt;/div&gt;&lt;div&gt;END;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;4. Alternative Simplified Version&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;If you prefer a simpler approach that just keeps the last 3 days:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;CREATE PROCEDURE dbo.usp_SimplePartitionMaintenance&lt;/div&gt;&lt;div&gt;AS&lt;/div&gt;&lt;div&gt;BEGIN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SET NOCOUNT ON;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; DECLARE @CutoffDate DATE = DATEADD(DAY, -3, CAST(GETDATE() AS DATE));&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; DECLARE @OldestIDToKeep BIGINT;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; BEGIN TRY&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BEGIN TRANSACTION;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- Find the minimum ID from the last 3 days&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SELECT @OldestIDToKeep = MIN(ID)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; FROM dbo.YourTable&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WHERE CAST(CreatedDate AS DATE) &amp;gt;= @CutoffDate;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- If we have data older than 3 days&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IF @OldestIDToKeep IS NOT NULL AND @OldestIDToKeep &amp;gt; 1&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; BEGIN&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- Split at the boundary to isolate old data&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ALTER PARTITION FUNCTION pf_IdentityPartition()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SPLIT RANGE (@OldestIDToKeep);&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- Truncate the first partition (old data)&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; TRUNCATE TABLE dbo.YourTable&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; WITH (PARTITIONS (1));&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -- Merge the empty partition&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ALTER PARTITION FUNCTION pf_IdentityPartition()&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; MERGE RANGE (1); -- Merge the lowest boundary&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; END&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; COMMIT TRANSACTION;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PRINT &#39;Simple partition maintenance completed&#39;;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; END TRY&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; BEGIN CATCH&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; IF @@TRANCOUNT &amp;gt; 0&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ROLLBACK TRANSACTION;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; THROW;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; END CATCH&lt;/div&gt;&lt;div&gt;END;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;5. Monitoring and Utility Queries&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Check partition information&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; p.partition_number,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; p.rows,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; prv.value AS boundary_value&lt;/div&gt;&lt;div&gt;FROM sys.partitions p&lt;/div&gt;&lt;div&gt;LEFT JOIN sys.partition_range_values prv ON p.partition_number = prv.boundary_id&lt;/div&gt;&lt;div&gt;WHERE p.object_id = OBJECT_ID(&#39;dbo.YourTable&#39;)&lt;/div&gt;&lt;div&gt;ORDER BY p.partition_number;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-- Check data distribution by date&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CAST(CreatedDate AS DATE) as Date,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; COUNT(*) as RecordCount,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; MIN(ID) as MinID,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; MAX(ID) as MaxID&lt;/div&gt;&lt;div&gt;FROM dbo.YourTable&lt;/div&gt;&lt;div&gt;GROUP BY CAST(CreatedDate AS DATE)&lt;/div&gt;&lt;div&gt;ORDER BY Date DESC;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;6. Scheduling the Procedure&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;You can schedule this to run daily:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Create SQL Agent Job that runs daily:&lt;/div&gt;&lt;div&gt;EXEC dbo.usp_MaintainPartitions;&lt;/div&gt;&lt;div&gt;-- or&lt;/div&gt;&lt;div&gt;EXEC dbo.usp_SimplePartitionMaintenance;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Key Points:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1. Partition Function: Uses RANGE RIGHT which is typically more intuitive for identity columns&lt;/div&gt;&lt;div&gt;2. Transaction Safety: Wrapped in transactions with proper error handling&lt;/div&gt;&lt;div&gt;3. Flexibility: Handles cases where there might be no data for the exact cutoff day&lt;/div&gt;&lt;div&gt;4. Performance: Uses partition truncation which is much faster than DELETE operations&lt;/div&gt;&lt;div&gt;5. Maintenance: The procedure finds the appropriate split point based on your 3-day retention policy&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The procedure will automatically maintain partitions to keep only the last 3 days of data while leveraging the performance benefits of partitioning.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/8617109495713809662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/8617109495713809662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/8617109495713809662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/8617109495713809662'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2025/11/sqlserver-partition-split-by-identity.html' title='sqlserver partition split by identity'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-4107766200453936165</id><published>2025-11-25T08:53:25.716+02:00</published><updated>2025-11-25T08:58:05.970+02:00</updated><title type='text'>sqlserver convert string to date</title><content type='html'>&lt;div&gt;Here are several ways to convert the string &#39;20251121 163356&#39; to datetime in SQL Server:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Solution 1: Using CONVERT with Style 112&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;SELECT CONVERT(DATETIME, &#39;20251121 163356&#39;, 112) AS ResultDateTime;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Solution 2: Using CAST (if the format is recognized)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;SELECT CAST(&#39;20251121 163356&#39; AS DATETIME) AS ResultDateTime;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Solution 3: Using PARSE (SQL Server 2012+)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;SELECT PARSE(&#39;20251121 163356&#39; AS DATETIME) AS ResultDateTime;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Solution 4: Using SUBSTRING to format properly&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;SELECT CONVERT(DATETIME,&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUBSTRING(&#39;20251121 163356&#39;, 1, 4) + &#39;-&#39; +  -- Year&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUBSTRING(&#39;20251121 163356&#39;, 5, 2) + &#39;-&#39; +  -- Month&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUBSTRING(&#39;20251121 163356&#39;, 7, 2) + &#39; &#39; +  -- Day&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUBSTRING(&#39;20251121 163356&#39;, 10, 2) + &#39;:&#39; + -- Hour&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUBSTRING(&#39;20251121 163356&#39;, 12, 2) + &#39;:&#39; + -- Minute&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUBSTRING(&#39;20251121 163356&#39;, 14, 2)         -- Second&lt;/div&gt;&lt;div&gt;) AS ResultDateTime;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Solution 5: Using DATETIMEFROMPARTS (SQL Server 2012+)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;SELECT DATETIMEFROMPARTS(&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUBSTRING(&#39;20251121 163356&#39;, 1, 4),   -- Year&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUBSTRING(&#39;20251121 163356&#39;, 5, 2),   -- Month&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUBSTRING(&#39;20251121 163356&#39;, 7, 2),   -- Day&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUBSTRING(&#39;20251121 163356&#39;, 10, 2),  -- Hour&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUBSTRING(&#39;20251121 163356&#39;, 12, 2),  -- Minute&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SUBSTRING(&#39;20251121 163356&#39;, 14, 2),  -- Second&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; 0                                     -- Millisecond&lt;/div&gt;&lt;div&gt;) AS ResultDateTime;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Solution 6: Using FORMAT (SQL Server 2012+)&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;SELECT CONVERT(DATETIME,&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; FORMAT(CONVERT(DATETIME, &#39;20251121 163356&#39;, 112), &#39;yyyy-MM-dd HH:mm:ss&#39;)&lt;/div&gt;&lt;div&gt;) AS ResultDateTime;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Complete Example with Error Handling&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Safe conversion with error handling&lt;/div&gt;&lt;div&gt;BEGIN TRY&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SELECT CONVERT(DATETIME, &#39;20251121 163356&#39;, 112) AS ResultDateTime;&lt;/div&gt;&lt;div&gt;END TRY&lt;/div&gt;&lt;div&gt;BEGIN CATCH&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; SELECT NULL AS ResultDateTime, ERROR_MESSAGE() AS ErrorMessage;&lt;/div&gt;&lt;div&gt;END CATCH&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;For DATETIME2 Data Type&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;SELECT CONVERT(DATETIME2, &#39;20251121 163356&#39;, 112) AS ResultDateTime2;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Using in a Table Context&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;-- Example with table data&lt;/div&gt;&lt;div&gt;CREATE TABLE #TempData (DateString VARCHAR(20));&lt;/div&gt;&lt;div&gt;INSERT INTO #TempData VALUES (&#39;20251121 163356&#39;), (&#39;20241201 120000&#39;);&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;SELECT&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; DateString,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CONVERT(DATETIME, DateString, 112) AS ConvertedDateTime&lt;/div&gt;&lt;div&gt;FROM #TempData;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Recommended Approach&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Solution 1 using CONVERT with style 112 is the most efficient and reliable:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;```sql&lt;/div&gt;&lt;div&gt;SELECT CONVERT(DATETIME, &#39;20251121 163356&#39;, 112) AS ResultDateTime;&lt;/div&gt;&lt;div&gt;```&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Result: 2025-11-21 16:33:56.000&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The style 112 corresponds to the yyyymmdd format, which matches your date string perfectly.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Style Code Reference&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;· 112: yyyymmdd format (ISO standard)&lt;/div&gt;&lt;div&gt;· 120: yyyy-mm-dd hh:mi:ss format&lt;/div&gt;&lt;div&gt;· 121: yyyy-mm-dd hh:mi:ss.mmm format&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;The CONVERT function with style 112 is the best choice because:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;· It&#39;s the most performant&lt;/div&gt;&lt;div&gt;· Handles the exact format of your string&lt;/div&gt;&lt;div&gt;· Works across all SQL Server versions&lt;/div&gt;&lt;div&gt;· Provides proper error handling&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Ah, that explains it — SQL Server is picky about formats. The string &#39;20251121 142350&#39; isn’t directly recognized by CONVERT with style 120, which is why you’re seeing the out of range error. You need to reshape the string into a format SQL Server can parse.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Here’s a safe way to do it:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;`sql&lt;/div&gt;&lt;div&gt;DECLARE @input VARCHAR(20) = &#39;20251121 142350&#39;;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-- Reformat the string into ISO style: YYYY-MM-DD HH:MM:SS&lt;/div&gt;&lt;div&gt;SELECT CONVERT(DATETIME,&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;STUFF(STUFF(STUFF(@input, 9, 0, &#39; &#39;), 12, 0, &#39;:&#39;), 15, 0, &#39;:&#39;), 120) AS ConvertedDateTime;&lt;/div&gt;&lt;div&gt;`&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;How it works:&lt;/div&gt;&lt;div&gt;- STUFF(@input, 9, 0, &#39; &#39;) → inserts a space between date and time.&lt;/div&gt;&lt;div&gt;- STUFF(..., 12, 0, &#39;:&#39;) → inserts a colon between hours and minutes.&lt;/div&gt;&lt;div&gt;- STUFF(..., 15, 0, &#39;:&#39;) → inserts a colon between minutes and seconds.&lt;/div&gt;&lt;div&gt;- Result becomes &#39;2025-11-21 14:23:50&#39;, which SQL Server can parse with style 120.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;✅ If you want the final result as a string (not a DATETIME):&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;`sql&lt;/div&gt;&lt;div&gt;DECLARE @input VARCHAR(20) = &#39;20251121 142350&#39;;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;SELECT CONVERT(VARCHAR(19),&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CONVERT(DATETIME, STUFF(STUFF(STUFF(@input, 9, 0, &#39; &#39;), 12, 0, &#39;:&#39;), 15, 0, &#39;:&#39;), 120), 120)&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;AS FormattedDateTime;&lt;/div&gt;&lt;div&gt;`&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This guarantees you get &#39;2025-11-21 14:23:50&#39; without errors.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Would you like me to also show you a function version (UDF) so you can reuse this conversion across multiple columns or queries?&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/4107766200453936165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/4107766200453936165' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/4107766200453936165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/4107766200453936165'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2025/11/sqlserver-convert-string-to-date.html' title='sqlserver convert string to date'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-7489116815226776420</id><published>2025-11-24T09:15:33.688+02:00</published><updated>2025-11-24T09:15:35.575+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sqlserver"/><title type='text'>sqlserver automatic partition </title><content type='html'>&lt;div&gt;Perfect — let’s sketch out a sliding window partitioning strategy for your 200M-row table. This approach will let you drop old data almost instantly instead of running massive deletes.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🛠 Step 1: Create a Partition Function&lt;/div&gt;&lt;div&gt;Partition by CreatedAt (assuming it’s a datetime column).&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div&gt;We’ll define boundaries for each day:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;`sql&lt;/div&gt;&lt;div&gt;-- Partition function: defines date boundaries&lt;/div&gt;&lt;div&gt;CREATE PARTITION FUNCTION pf_CreatedAt (datetime)&lt;/div&gt;&lt;div&gt;AS RANGE RIGHT FOR VALUES (&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CAST(GETDATE() AS date),&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CAST(DATEADD(DAY, -1, GETDATE()) AS date),&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CAST(DATEADD(DAY, -2, GETDATE()) AS date),&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CAST(DATEADD(DAY, -3, GETDATE()) AS date)&lt;/div&gt;&lt;div&gt;);&lt;/div&gt;&lt;div&gt;`&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This creates partitions for today, yesterday, 2 days ago, and older.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🛠 Step 2: Create a Partition Scheme&lt;/div&gt;&lt;div&gt;Map partitions to filegroups (you can use PRIMARY or separate filegroups for performance):&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;`sql&lt;/div&gt;&lt;div&gt;-- Partition scheme: maps partitions to filegroups&lt;/div&gt;&lt;div&gt;CREATE PARTITION SCHEME ps_CreatedAt&lt;/div&gt;&lt;div&gt;AS PARTITION pf_CreatedAt&lt;/div&gt;&lt;div&gt;TO ([PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY]);&lt;/div&gt;&lt;div&gt;`&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🛠 Step 3: Create the Table on the Partition Scheme&lt;/div&gt;&lt;div&gt;`sql&lt;/div&gt;&lt;div&gt;CREATE TABLE dbo.YourTable (&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; Id BIGINT IDENTITY(1,1) PRIMARY KEY,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; CreatedAt DATETIME NOT NULL,&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; Data NVARCHAR(200) -- your payload&lt;/div&gt;&lt;div&gt;)&lt;/div&gt;&lt;div&gt;ON ps_CreatedAt(CreatedAt);&lt;/div&gt;&lt;div&gt;`&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;🛠 Step 4: Automate Sliding Window&lt;/div&gt;&lt;div&gt;Each day, you’ll:&lt;/div&gt;&lt;div&gt;1. Split the partition function to add a new boundary for today.&lt;/div&gt;&lt;div&gt;2. Merge the oldest boundary to drop data older than 3 days.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Example:&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;`sql&lt;/div&gt;&lt;div&gt;-- Add new boundary for today&lt;/div&gt;&lt;div&gt;ALTER PARTITION FUNCTION pf_CreatedAt()&lt;/div&gt;&lt;div&gt;SPLIT RANGE (CAST(GETDATE() AS date));&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;-- Drop oldest partition (older than 3 days)&lt;/div&gt;&lt;div&gt;ALTER PARTITION FUNCTION pf_CreatedAt()&lt;/div&gt;&lt;div&gt;MERGE RANGE (CAST(DATEADD(DAY, -3, GETDATE()) AS date));&lt;/div&gt;&lt;div&gt;`&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;This instantly removes old data without row-by-row deletes.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;⚡ Why This Works&lt;/div&gt;&lt;div&gt;- Instant cleanup: Dropping a partition is metadata-only, no massive delete.&lt;/div&gt;&lt;div&gt;- Scalable: Handles billions of rows easily.&lt;/div&gt;&lt;div&gt;- Minimal logging: No giant transaction logs.&lt;/div&gt;&lt;div&gt;- Automatable: Wrap the SPLIT/MERGE in a SQL Server Agent Job.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;---&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;👉 Would you like me to write a full SQL Server Agent Job script that runs daily and automatically does the SPLIT/MERGE for you, so you don’t have to manage it manually?&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/7489116815226776420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/7489116815226776420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/7489116815226776420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/7489116815226776420'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2025/11/sqlserver-automatic-partition.html' title='sqlserver automatic partition '/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-6885188414806561780</id><published>2024-07-09T14:14:00.003+03:00</published><updated>2024-07-09T14:14:51.007+03:00</updated><title type='text'>ScyllaDB Re-Schedule Job</title><content type='html'>&lt;div style=&quot;text-align: left;&quot;&gt;To schedule a repair job in ScyllaDB using the &lt;code&gt;sctool repair&lt;/code&gt; command with the &lt;code&gt;--cron&lt;/code&gt; option, you&#39;ll need to specify the desired timing for the repair job in a cron-like syntax.&lt;/div&gt;&lt;h3&gt;Using &lt;code&gt;sctool repair --cron&lt;/code&gt;&lt;/h3&gt;&lt;p&gt;The &lt;code&gt;--cron&lt;/code&gt; option allows you to specify when the repair job should run using a cron expression. Here’s how you can do it:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Open your terminal&lt;/strong&gt; where you have access to the &lt;code&gt;sctool&lt;/code&gt; command.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;Run the &lt;code&gt;sctool repair&lt;/code&gt; command&lt;/strong&gt; with the &lt;code&gt;--cron&lt;/code&gt; option and provide the appropriate cron expression.&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Example&lt;/h3&gt;&lt;p&gt;If you want to schedule the repair job to run this Sunday at 5 AM, you would use the following cron expression:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;0 5 * * 0&lt;/code&gt; means &quot;at 5:00 AM every Sunday.&quot;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The complete command would look like this:&lt;/p&gt;&lt;pre&gt;&lt;div class=&quot;dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium&quot;&gt;&lt;div class=&quot;flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md&quot;&gt;sctool repair --cron &lt;span class=&quot;hljs-string&quot;&gt;&#39;0 5 * * 0&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;h3&gt;Breaking Down the Cron Expression&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;0&lt;/code&gt;: The minute field, meaning the 0th minute of the hour.&lt;/li&gt;&lt;li&gt;&lt;code&gt;5&lt;/code&gt;: The hour field, meaning 5 AM.&lt;/li&gt;&lt;li&gt;&lt;code&gt;*&lt;/code&gt;: The day of the month field, meaning any day of the month.&lt;/li&gt;&lt;li&gt;&lt;code&gt;*&lt;/code&gt;: The month field, meaning any month.&lt;/li&gt;&lt;li&gt;&lt;code&gt;0&lt;/code&gt;: The day of the week field, meaning Sunday (0 represents Sunday in cron syntax).&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Scheduling the Repair Job&lt;/h3&gt;&lt;p&gt;Run the command with the desired cron expression:&lt;/p&gt;&lt;pre&gt;&lt;div class=&quot;dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium&quot;&gt;&lt;div class=&quot;flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md&quot;&gt;sctool repair --cron &lt;span class=&quot;hljs-string&quot;&gt;&#39;0 5 * * 0&#39;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p&gt;This command will schedule the repair job to run every Sunday at 5 AM.&lt;/p&gt;&lt;h3&gt;Additional Information&lt;/h3&gt;&lt;p&gt;Ensure you have the necessary permissions to run &lt;code&gt;sctool&lt;/code&gt; and that your ScyllaDB setup supports the &lt;code&gt;--cron&lt;/code&gt; option for scheduling repairs.&lt;/p&gt;&lt;p&gt;If you need more details about &lt;code&gt;sctool&lt;/code&gt; options or further assistance with cron syntax, refer to the &lt;a rel=&quot;noreferrer&quot; target=&quot;_new&quot;&gt;ScyllaDB documentation&lt;/a&gt; or use the &lt;code&gt;--help&lt;/code&gt; option with &lt;code&gt;sctool&lt;/code&gt;:&lt;/p&gt;&lt;pre&gt;&lt;div class=&quot;dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium&quot;&gt;&lt;div class=&quot;flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md&quot;&gt;sctool repair --&lt;span class=&quot;hljs-built_in&quot;&gt;help&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p&gt;This command will provide you with detailed information on all available options and usage instructions for &lt;code&gt;sctool repair&lt;/code&gt;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/6885188414806561780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/6885188414806561780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/6885188414806561780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/6885188414806561780'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2024/07/scylladb-re-schedule-job.html' title='ScyllaDB Re-Schedule Job'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-3508470252568719779</id><published>2024-06-18T12:34:00.002+03:00</published><updated>2024-06-21T23:47:13.290+03:00</updated><title type='text'>Trouble Shutting Poor IO on DB Server</title><content type='html'>&lt;p&gt;From time to time, I
get a replication delay even dup the CPU is not loaded, I can see that the
slave as a lot of relay logs that he is unable to apply on time, what could be
the reason?&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Replication delay in
MySQL can be caused by several factors even if the CPU is not heavily loaded.
The presence of many relay logs that the slave is unable to apply in a timely
manner suggests that the issue may lie elsewhere. Here are some potential reasons
and solutions for replication delay:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Potential Causes of Replication Delay&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;ol start=&quot;1&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;I/O Bottlenecks&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;The slave might be experiencing I/O
      bottlenecks, which can delay the application of relay logs. This can
      happen if the disk subsystem is slow or overloaded.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;&lt;span&gt;Solution&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Monitor disk I/O performance using
      tools like &lt;/span&gt;&lt;span&gt;iostat&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;vmstat&lt;/span&gt;&lt;span&gt;, or MySQL&#39;s &lt;/span&gt;&lt;span&gt;performance_schema&lt;/span&gt;&lt;span&gt;. Consider upgrading the disk subsystem
      or tuning the I/O performance.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Inadequate Memory&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Insufficient memory can cause the slave
      to use disk-based temporary tables more frequently, slowing down the
      replication process.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;&lt;span&gt;Solution&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Ensure the slave has adequate memory.
      Monitor memory usage and adjust MySQL&#39;s memory-related configuration
      parameters (&lt;/span&gt;&lt;span&gt;innodb_buffer_pool_size&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;query_cache_size&lt;/span&gt;&lt;span&gt;, etc.).&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Large Transactions&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Large transactions on the master can
      cause delays on the slave because it has to apply the entire transaction
      before moving to the next one.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;&lt;span&gt;Solution&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Break large transactions into smaller
      ones if possible. Monitor the size of transactions and the relay log
      processing.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Table Locks&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Frequent or long-lasting table locks on
      the slave can delay replication.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;&lt;span&gt;Solution&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Optimize queries to reduce locking.
      Use InnoDB (which has row-level locking) instead of MyISAM (which has
      table-level locking).&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Slow Queries&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Slow queries on the slave can cause
      delays. If the slave is executing queries that take a long time to
      complete, it will fall behind.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;&lt;span&gt;Solution&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Optimize slow queries. Use the &lt;/span&gt;&lt;span&gt;slow_query_log&lt;/span&gt;&lt;span&gt; to identify and optimize slow queries.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Replication Configuration&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Suboptimal replication configuration
      can cause delays.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;&lt;span&gt;Solution&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Ensure that replication settings like
      &lt;/span&gt;&lt;span&gt;slave_parallel_workers&lt;/span&gt;&lt;span&gt; (for multi-threaded replication) and &lt;/span&gt;&lt;span&gt;slave_parallel_type&lt;/span&gt;&lt;span&gt; are optimally configured.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Diagnosing Replication Delay&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;ol start=&quot;1&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Check Slave Status&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Run &lt;/span&gt;&lt;span&gt;SHOW SLAVE STATUS\G&lt;/span&gt;&lt;span&gt; on the slave to get detailed
      information about the replication process. Key fields to look at:&lt;/span&gt;&lt;/li&gt;
  &lt;ul type=&quot;square&quot;&gt;
   &lt;li&gt;&lt;span&gt;Seconds_Behind_Master&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
   &lt;li&gt;&lt;span&gt;Slave_IO_Running&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
   &lt;li&gt;&lt;span&gt;Slave_SQL_Running&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
   &lt;li&gt;&lt;span&gt;Exec_Master_Log_Pos&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
   &lt;li&gt;&lt;span&gt;Relay_Log_Space&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Monitor Relay Log Application&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Check the &lt;/span&gt;&lt;span&gt;Relay_Log_Space&lt;/span&gt;&lt;span&gt; and &lt;/span&gt;&lt;span&gt;Relay_Log_Pos&lt;/span&gt;&lt;span&gt; to understand how the relay logs are being
      processed.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Check Disk I/O&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Use &lt;/span&gt;&lt;span&gt;iostat&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;vmstat&lt;/span&gt;&lt;span&gt;, or similar tools to monitor disk I/O
      performance.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Analyze Slow Queries&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Enable the slow query log on the slave
      and analyze slow queries that might be causing delays.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Example Commands&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Checking Slave Status&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;SHOW SLAVE STATUS\G;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Monitoring Disk I/O&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;iostat -x 5&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Enabling Slow Query Log&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Add the following
lines to your MySQL configuration file (usually &lt;/span&gt;&lt;span&gt;my.cnf&lt;/span&gt;&lt;span&gt; or &lt;/span&gt;&lt;span&gt;my.ini&lt;/span&gt;&lt;span&gt;):&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;[mysqld]&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;slow_query_log = 1&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;slow_query_log_file = /var/log/mysql/slow.log&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;long_query_time = 2&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;After making these
changes, restart MySQL:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;sudo systemctl restart mysql&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Using &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt;innodb_status&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Check the InnoDB
status for locks and other potential bottlenecks:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;SHOW ENGINE INNODB STATUS\G;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Example of Multi-Threaded Replication Configuration&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;If you are using MySQL
5.7 or newer, you can enable and configure multi-threaded replication to help
reduce replication lag.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Add or update the
following settings in your MySQL configuration file:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;[mysqld]&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;slave_parallel_workers = 4&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;slave_parallel_type = LOGICAL_CLOCK&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Monitoring and Optimization Tools&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;ol start=&quot;1&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Performance Schema&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Use MySQL&#39;s Performance Schema to
      monitor and diagnose performance issues.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;sql&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Copy code&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;SELECT * FROM performance_schema.events_statements_summary_by_digest ORDER
BY COUNT_STAR DESC LIMIT 10;&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;2&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;pt-query-digest&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Use the &lt;/span&gt;&lt;span&gt;pt-query-digest&lt;/span&gt;&lt;span&gt; tool from Percona Toolkit to analyze query
      performance.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;MySQL Enterprise Monitor&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;If available, use MySQL Enterprise
      Monitor for comprehensive monitoring and alerting.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Conclusion&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Replication delay can
be caused by various factors other than CPU load. By carefully monitoring disk
I/O, memory usage, slow queries, and optimizing your replication configuration,
you can identify and address the root causes of the delay. Regular monitoring
and performance tuning are essential to maintaining an efficient and reliable
replication setup.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;to use &lt;/span&gt;&lt;span&gt;iostat&lt;/span&gt;&lt;span&gt; and &lt;/span&gt;&lt;span&gt;vmstat&lt;/span&gt;&lt;span&gt; to monitor system
performance, particularly focusing on disk I/O and general system statistics.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;iostat&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt; Examples&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;The &lt;/span&gt;&lt;span&gt;iostat&lt;/span&gt;&lt;span&gt; command is used to
monitor system input/output device loading. By observing the time the devices
are active in relation to their average transfer rates, you can determine the
system&#39;s I/O performance.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Basic Usage&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;iostat&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;This command provides
a summary of CPU and I/O statistics since the system was booted.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Monitoring Disk I/O Every 5 Seconds&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;iostat -x 5&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;This command shows
extended statistics for each device every 5 seconds. The &lt;/span&gt;&lt;span&gt;-x&lt;/span&gt;&lt;span&gt; option provides more
detailed statistics, including:&lt;/span&gt;&lt;/p&gt;

&lt;ul type=&quot;disc&quot;&gt;
 &lt;li&gt;&lt;span&gt;%user&lt;/span&gt;&lt;span&gt;: Percentage of CPU utilization that occurred
     while executing at the user level.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;span&gt;%nice&lt;/span&gt;&lt;span&gt;: Percentage of CPU utilization that occurred
     while executing at the user level with nice priority.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;span&gt;%system&lt;/span&gt;&lt;span&gt;: Percentage of CPU utilization that occurred
     while executing at the system (kernel) level.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;span&gt;%iowait&lt;/span&gt;&lt;span&gt;: Percentage of time that the CPU or CPUs were
     idle during which the system had an outstanding disk I/O request.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;span&gt;%steal&lt;/span&gt;&lt;span&gt;: Percentage of time spent in involuntary wait
     by the virtual CPU or CPUs while the hypervisor was servicing another
     virtual processor.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;span&gt;%idle&lt;/span&gt;&lt;span&gt;: Percentage of time that the CPU or CPUs were
     idle and the system did not have an outstanding disk I/O request.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;span&gt;tps&lt;/span&gt;&lt;span&gt;: Total number of transfers per second that
     were issued to the device.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;span&gt;kB_read/s&lt;/span&gt;&lt;span&gt;: Number of kilobytes read from the device per
     second.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;span&gt;kB_wrtn/s&lt;/span&gt;&lt;span&gt;: Number of kilobytes written to the device
     per second.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;span&gt;await&lt;/span&gt;&lt;span&gt;: The average time (in milliseconds) for I/O
     requests issued to the device to be served.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;span&gt;svctm&lt;/span&gt;&lt;span&gt;: The average service time (in milliseconds)
     for I/O requests that were issued to the device.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Monitoring Specific Device&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;iostat -dx sda 5&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;This command provides
detailed statistics for the &lt;/span&gt;&lt;span&gt;sda&lt;/span&gt;&lt;span&gt; device every 5 seconds.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;vmstat&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt; Examples&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;The &lt;/span&gt;&lt;span&gt;vmstat&lt;/span&gt;&lt;span&gt; command reports
information about processes, memory, paging, block I/O, traps, and CPU
activity.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Basic Usage&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;vmstat&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;This command provides
a summary of the system’s virtual memory usage since the last reboot.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Monitoring System Performance Every 2 Seconds&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;vmstat 2&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;This command provides
a continuous update of system statistics every 2 seconds.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Detailed Breakdown of &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt;vmstat&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt; Output&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;procs -----------memory---------- ---swap-- -----io---- -system--
------cpu-----&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;r&lt;span&gt;&amp;nbsp;
&lt;/span&gt;b&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;swpd&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;free&lt;span&gt;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;buff&lt;span&gt;&amp;nbsp; &lt;/span&gt;cache&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;si&lt;span&gt;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;so&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bi&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;bo&lt;span&gt;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;in&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;cs us sy id wa st&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;2&lt;span&gt;&amp;nbsp;
&lt;/span&gt;0&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0 163840&lt;span&gt;&amp;nbsp; &lt;/span&gt;32000 256000&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;0&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;2&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;2&lt;span&gt;&amp;nbsp; &lt;/span&gt;1&lt;span&gt;&amp;nbsp; &lt;/span&gt;1
97&lt;span&gt;&amp;nbsp; &lt;/span&gt;0&lt;span&gt;&amp;nbsp;
&lt;/span&gt;0&lt;/span&gt;&lt;/p&gt;

&lt;ul type=&quot;disc&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;procs&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;r&lt;/span&gt;&lt;span&gt;: Number of processes waiting for run time.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;: Number of processes in uninterruptible
      sleep.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;memory&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;swpd&lt;/span&gt;&lt;span&gt;: Amount of virtual memory used.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;free&lt;/span&gt;&lt;span&gt;: Amount of idle memory.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;buff&lt;/span&gt;&lt;span&gt;: Amount of memory used as buffers.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;cache&lt;/span&gt;&lt;span&gt;: Amount of memory used as cache.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;swap&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;si&lt;/span&gt;&lt;span&gt;: Amount of memory swapped in from disk (per
      second).&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;so&lt;/span&gt;&lt;span&gt;: Amount of memory swapped out to disk (per
      second).&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;io&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;bi&lt;/span&gt;&lt;span&gt;: Blocks received from a block device (per
      second).&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;bo&lt;/span&gt;&lt;span&gt;: Blocks sent to a block device (per second).&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;system&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt;: Number of interrupts per second, including
      the clock.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;cs&lt;/span&gt;&lt;span&gt;: Number of context switches per second.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;cpu&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;us&lt;/span&gt;&lt;span&gt;: Time spent running non-kernel code (user
      time, including nice time).&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;sy&lt;/span&gt;&lt;span&gt;: Time spent running kernel code (system
      time).&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;: Time spent idle.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;wa&lt;/span&gt;&lt;span&gt;: Time spent waiting for I/O.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;st&lt;/span&gt;&lt;span&gt;: Time stolen from a virtual machine.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Monitoring with Timestamp&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;To include a timestamp
with each line of output:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;while true; do echo -n &quot;$(date +%Y-%m-%d\ %H:%M:%S) &quot;; vmstat
1 2 | tail -1; sleep 1; done&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;This script provides a
timestamp along with the &lt;/span&gt;&lt;span&gt;vmstat&lt;/span&gt;&lt;span&gt; output every second.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Using &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt;iostat&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt; and &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt;vmstat&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt; Together&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;To get a comprehensive
view of system performance, you can run both &lt;/span&gt;&lt;span&gt;iostat&lt;/span&gt;&lt;span&gt; and &lt;/span&gt;&lt;span&gt;vmstat&lt;/span&gt;&lt;span&gt; in parallel. For
example, you can use &lt;/span&gt;&lt;span&gt;watch&lt;/span&gt;&lt;span&gt; to run these commands continuously:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;watch -n 2 &#39;iostat -x; vmstat 1 2&#39;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;This command will run &lt;/span&gt;&lt;span&gt;iostat -x&lt;/span&gt;&lt;span&gt; and &lt;/span&gt;&lt;span&gt;vmstat 1 2&lt;/span&gt;&lt;span&gt; every 2 seconds,
allowing you to see both I/O and memory/CPU statistics simultaneously.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;By using &lt;/span&gt;&lt;span&gt;iostat&lt;/span&gt;&lt;span&gt; and &lt;/span&gt;&lt;span&gt;vmstat&lt;/span&gt;&lt;span&gt; effectively, you can
monitor and diagnose performance issues related to disk I/O, memory usage, and
CPU activity on your system.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/3508470252568719779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/3508470252568719779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/3508470252568719779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/3508470252568719779'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2024/06/trouble-shutting-poor-io-on-db-server.html' title='Trouble Shutting Poor IO on DB Server'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-7867245143762536968</id><published>2024-06-17T11:11:00.005+03:00</published><updated>2024-06-21T23:46:46.769+03:00</updated><title type='text'>Creating a Larger then 2TB Disk on Debian 12</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;b&gt;&lt;span&gt;&lt;span&gt;Creating a Larger then
2TB Disk on Debian 12&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;To format a newly
created 4TB NVMe disk to a single XFS partition on a Debian server, follow
these steps:&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;1&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Identify the NVMe disk&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Use &lt;/span&gt;&lt;span&gt;lsblk&lt;/span&gt;&lt;span&gt; to list the block devices and identify the
     NVMe disk. Assume the disk is &lt;/span&gt;&lt;span&gt;/dev/nvme0n1&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;lsblk&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;2&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Create a single partition&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Use &lt;/span&gt;&lt;span&gt;fdisk&lt;/span&gt;&lt;span&gt; or &lt;/span&gt;&lt;span&gt;parted&lt;/span&gt;&lt;span&gt; to create a single partition that spans the
     entire disk.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;Using &lt;/span&gt;&lt;span&gt;fdisk&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;sudo fdisk /dev/nvme0n1&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;In the &lt;/span&gt;&lt;span&gt;fdisk&lt;/span&gt;&lt;span&gt; interactive prompt, follow these steps:&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;2&quot; type=&quot;1&quot;&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Type &lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt; to create a new partition.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;Press &lt;/span&gt;&lt;span&gt;Enter&lt;/span&gt;&lt;span&gt; to accept the default partition number (1).&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;Press &lt;/span&gt;&lt;span&gt;Enter&lt;/span&gt;&lt;span&gt; to accept the default starting sector
      (usually 2048).&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;Press &lt;/span&gt;&lt;span&gt;Enter&lt;/span&gt;&lt;span&gt; to accept the default ending sector (which
      will create a partition that spans the entire disk).&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;Type &lt;/span&gt;&lt;span&gt;w&lt;/span&gt;&lt;span&gt; to write the changes and exit.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Format the partition to XFS&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Use &lt;/span&gt;&lt;span&gt;mkfs.xfs&lt;/span&gt;&lt;span&gt; to format the partition.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;sudo mkfs.xfs /dev/nvme0n1p1&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;4&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Create a mount point&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Create a directory where you want to
     mount the new partition.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;sudo mkdir -p /mnt/data&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;5&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Mount the partition&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Mount the newly formatted XFS
     partition.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;sudo mount /dev/nvme0n1p1 /mnt/data&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;6&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Update /etc/fstab&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: To ensure the partition is mounted
     automatically at boot, add an entry to the &lt;/span&gt;&lt;span&gt;/etc/fstab&lt;/span&gt;&lt;span&gt; file.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;First, get the UUID of the partition:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;sudo blkid /dev/nvme0n1p1&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Add an entry to &lt;/span&gt;&lt;span&gt;/etc/fstab&lt;/span&gt;&lt;span&gt; with the UUID:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;sudo nano /etc/fstab&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Add the following line (replace &lt;/span&gt;&lt;span&gt;UUID=your-uuid&lt;/span&gt;&lt;span&gt; with the actual UUID from the &lt;/span&gt;&lt;span&gt;blkid&lt;/span&gt;&lt;span&gt; command):&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;plaintext&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Copy code&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;UUID=your-uuid /mnt/data xfs defaults,nofail 0 2&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Example Commands&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;ol start=&quot;1&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Identify the NVMe disk&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;$ lsblk&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;NAME&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;MAJ:MIN RM&lt;span&gt;&amp;nbsp; &lt;/span&gt;SIZE RO TYPE MOUNTPOINT&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;nvme0n1&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;259:0&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;0&lt;span&gt;&amp;nbsp;
&lt;/span&gt;3.7T&lt;span&gt;&amp;nbsp; &lt;/span&gt;0 disk&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;2&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Create a single partition using &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt;fdisk&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;$ sudo fdisk /dev/nvme0n1&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Follow the &lt;/span&gt;&lt;span&gt;fdisk&lt;/span&gt;&lt;span&gt; prompts as described above.&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;3&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Format the partition to XFS&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;$ sudo mkfs.xfs /dev/nvme0n1p1&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;4&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Create a mount point&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;$ sudo mkdir -p /mnt/data&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;5&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Mount the partition&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;$ sudo mount /dev/nvme0n1p1 /mnt/data&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;6&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Update /etc/fstab&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;Get the UUID:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;$ sudo blkid /dev/nvme0n1p1&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;/dev/nvme0n1p1: UUID=&quot;your-uuid&quot; TYPE=&quot;xfs&quot;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Edit &lt;/span&gt;&lt;span&gt;/etc/fstab&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;$ sudo nano /etc/fstab&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Add the entry:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;UUID=your-uuid /mnt/data xfs defaults,nofail 0 2&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;These steps will
create, format, and mount a single 4TB XFS partition on your NVMe disk.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/7867245143762536968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/7867245143762536968' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/7867245143762536968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/7867245143762536968'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2024/06/creating-larger-then-2tb-disk-on-debian.html' title='Creating a Larger then 2TB Disk on Debian 12'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-496002598988632095</id><published>2024-06-17T11:04:00.002+03:00</published><updated>2024-06-21T23:46:22.590+03:00</updated><title type='text'>MySQL 8.0 Messages MY-010562 &amp; MY-010897 in &quot;mysqld.log&quot;  </title><content type='html'>&lt;p&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;MySQL 8.0 Messages&amp;nbsp;&lt;/span&gt;&lt;span&gt;MY-010562&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;amp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;MY-010897&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;in &quot;mysqld.log&quot;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;The log message &lt;/span&gt;&lt;span&gt;[System] [MY-010562] [Repl] Slave I/O thread for channel&lt;/span&gt;&lt;span&gt; indicates an issue related to replication in
MySQL. This message is part of MySQL&#39;s replication framework, and it typically
pertains to the Slave I/O thread, which is responsible for reading the binary
log from the master server and writing it to the relay log on the slave server.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;To better understand
and resolve the issue, we need to look at the complete log entry and
potentially additional context around it. The full log entry might look
something like this:&lt;/span&gt;&lt;/p&gt;

&lt;table border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;
 &lt;tbody&gt;&lt;tr&gt;
  &lt;td valign=&quot;top&quot; width=&quot;601&quot;&gt;
  &lt;p&gt;&lt;span&gt;[System]
  [MY-010562] [Repl] Slave I/O thread for channel &#39;&amp;lt;channel_name&amp;gt;&#39;
  connected to master &#39;&amp;lt;master_host&amp;gt;:&amp;lt;port&amp;gt;&#39;, replication started
  in log &#39;&amp;lt;binlog_file&amp;gt;&#39; at position &amp;lt;position&amp;gt;.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
  &lt;/td&gt;
 &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;&lt;span&gt;Here are some common
issues and troubleshooting steps related to the Slave I/O thread in MySQL
replication:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;1. Network Issues&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;If the Slave I/O
thread cannot connect to the master, it might be due to network issues.&lt;/span&gt;&lt;/p&gt;

&lt;ul type=&quot;disc&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Check Network Connectivity&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Ensure that the slave server can reach
      the master server over the network.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;Use tools like &lt;/span&gt;&lt;span&gt;ping&lt;/span&gt;&lt;span&gt; and &lt;/span&gt;&lt;span&gt;telnet&lt;/span&gt;&lt;span&gt; to verify connectivity to the master&#39;s IP
      and port (usually 3306).&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;2. Authentication Issues&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Incorrect username or
password for the replication user can cause the I/O thread to fail.&lt;/span&gt;&lt;/p&gt;

&lt;ul type=&quot;disc&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Verify Replication User Credentials&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Check that the replication user has the
      correct privileges on the master server.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;Verify that the username and password
      configured on the slave match those on the master.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;3. Binary Log File or Position Issues&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;If the slave is trying
to read a binary log file or position that doesn&#39;t exist on the master, it will
fail.&lt;/span&gt;&lt;/p&gt;

&lt;ul type=&quot;disc&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Check Binary Log File and Position&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Ensure that the binary log file and
      position specified in the replication configuration exist on the master
      server.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;You can find the current binary log
      file and position on the master using:&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;span&gt;SHOW MASTER STATUS;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;4. Configuration Issues&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Misconfiguration on
either the master or slave can lead to replication problems.&lt;/span&gt;&lt;/p&gt;

&lt;ul type=&quot;disc&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Check Replication Configuration&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Verify the &lt;/span&gt;&lt;span&gt;CHANGE MASTER TO&lt;/span&gt;&lt;span&gt; settings on the slave.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;Ensure the master&#39;s &lt;/span&gt;&lt;span&gt;server_id&lt;/span&gt;&lt;span&gt; is unique and different from the slave&#39;s &lt;/span&gt;&lt;span&gt;server_id&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;5. Log File Corruption or Errors&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;If there are errors or
corruption in the binary log or relay log, the I/O thread can fail.&lt;/span&gt;&lt;/p&gt;

&lt;ul type=&quot;disc&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Check for Log File Corruption&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Look for errors in the master&#39;s error
      log and the slave&#39;s relay log.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;If needed, you can skip over corrupted
      log entries, but this should be done with caution as it might lead to
      data inconsistency.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Steps to Troubleshoot&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;ol start=&quot;1&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Examine the Full Log Message&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Look for any additional details in the &lt;/span&gt;&lt;span&gt;mysqld.log&lt;/span&gt;&lt;span&gt; around the &lt;/span&gt;&lt;span&gt;[MY-010562]&lt;/span&gt;&lt;span&gt; message.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;Search for preceding or subsequent log
      entries that might provide more context or specific error messages.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Verify Replication Status&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Check the replication status on the
      slave using:&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;SHOW SLAVE STATUS\G;&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;2&quot; type=&quot;1&quot;&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Look for the fields &lt;/span&gt;&lt;span&gt;Slave_IO_Running&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;Slave_SQL_Running&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;Last_IO_Error&lt;/span&gt;&lt;span&gt;, and &lt;/span&gt;&lt;span&gt;Last_SQL_Error&lt;/span&gt;&lt;span&gt; for any issues.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Check Network and Authentication&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Ensure network connectivity between the
      master and slave.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;Verify the replication user credentials
      and permissions.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Inspect Master and Relay Logs&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Check the master&#39;s binary log files
      using:&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;SHOW BINARY LOGS;&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;4&quot; type=&quot;1&quot;&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Inspect the slave&#39;s relay logs and the &lt;/span&gt;&lt;span&gt;Relay_Log_File&lt;/span&gt;&lt;span&gt; and &lt;/span&gt;&lt;span&gt;Relay_Log_Pos&lt;/span&gt;&lt;span&gt; fields in the &lt;/span&gt;&lt;span&gt;SHOW SLAVE STATUS\G&lt;/span&gt;&lt;span&gt; output.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Example Troubleshooting Steps&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Here is an example of
how you might go through the troubleshooting process:&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;1&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Check the Slave Status&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;SHOW SLAVE STATUS\G;&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;1&quot; type=&quot;1&quot;&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Look for &lt;/span&gt;&lt;span&gt;Slave_IO_Running: No&lt;/span&gt;&lt;span&gt; and check &lt;/span&gt;&lt;span&gt;Last_IO_Error&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Check Network Connectivity&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;ping master_host&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;telnet master_host 3306&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;3&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Verify Replication User Credentials&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Ensure the user exists and has
      replication privileges on the master:&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;GRANT REPLICATION SLAVE ON *.* TO &#39;replication_user&#39;@&#39;slave_host&#39;
IDENTIFIED BY &#39;password&#39;;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;FLUSH PRIVILEGES;&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;4&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Check Binary Log Position&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;On the master:&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;SHOW MASTER STATUS;&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;4&quot; type=&quot;1&quot;&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Compare with the slave’s &lt;/span&gt;&lt;span&gt;Exec_Master_Log_Pos&lt;/span&gt;&lt;span&gt; and &lt;/span&gt;&lt;span&gt;Relay_Master_Log_File&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;By following these
steps, you should be able to identify and resolve the issue with the Slave I/O
thread. If you provide the complete log entry and additional context, I can
offer more specific guidance.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;This is the full
message: &quot;[System] [MY-010562] [Repl] Slave I/O thread for channel &#39;&#39;:
connected to master &#39;repl1@10.117.10.33:3306&#39;,replication started in log
&#39;db-prod-ams-mcmts-binlog.001109&#39; at position 231714179&quot;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;The log message you
provided indicates that the Slave I/O thread has successfully connected to the
master and started replication. Here’s the breakdown of the message:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;[System] [MY-010562] [Repl] Slave I/O thread for channel &#39;&#39;: connected
to master &#39;repl1@10.117.10.33:3306&#39;, replication started in log &#39;db-prod-ams-mcmts-binlog.001109&#39;
at position 231714179&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;This message generally
suggests that the replication connection is established and the I/O thread is
working as expected. Here’s what each part means:&lt;/span&gt;&lt;/p&gt;

&lt;ul type=&quot;disc&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;[System] [MY-010562] [Repl]&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: These are identifiers for the log
     entry, indicating that it is a system message related to replication.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Slave I/O thread for channel &#39;&#39;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: This specifies the channel name. In
     this case, it’s empty, meaning the default replication channel.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;connected to master
     &#39;repl1@10.117.10.33:3306&#39;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: The slave I/O thread has connected to the
     master server with the user &lt;/span&gt;&lt;span&gt;repl1&lt;/span&gt;&lt;span&gt; at the IP &lt;/span&gt;&lt;span&gt;10.117.10.33&lt;/span&gt;&lt;span&gt; on port &lt;/span&gt;&lt;span&gt;3306&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;replication started in log
     &#39;db-prod-ams-mcmts-binlog.001109&#39; at position 231714179&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Replication is reading from the binary
     log file &lt;/span&gt;&lt;span&gt;db-prod-ams-mcmts-binlog.001109&lt;/span&gt;&lt;span&gt; starting at position &lt;/span&gt;&lt;span&gt;231714179&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Interpretation&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;The message indicates
that the replication process is starting correctly. If this is the only message
you are seeing and there are no errors, it implies that the replication setup
is functioning as expected.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Possible Issues and Next Steps&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Even though the
message indicates that the I/O thread has started correctly, you may want to
check for other potential issues or confirm that the replication process is
running smoothly. Here are some steps you can take:&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;1&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Check the Slave Status&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Run the following command on the slave
      to get detailed status information about the replication process:&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;SHOW SLAVE STATUS\G;&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;1&quot; type=&quot;1&quot;&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Look for the following fields in the
      output:&lt;/span&gt;&lt;/li&gt;
  &lt;ul type=&quot;square&quot;&gt;
   &lt;li&gt;&lt;span&gt;Slave_IO_Running&lt;/span&gt;&lt;span&gt;: Should be &lt;/span&gt;&lt;span&gt;Yes&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/li&gt;
   &lt;li&gt;&lt;span&gt;Slave_SQL_Running&lt;/span&gt;&lt;span&gt;: Should be &lt;/span&gt;&lt;span&gt;Yes&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/li&gt;
   &lt;li&gt;&lt;span&gt;Last_IO_Error&lt;/span&gt;&lt;span&gt;: Should be empty or &lt;/span&gt;&lt;span&gt;None&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/li&gt;
   &lt;li&gt;&lt;span&gt;Last_SQL_Error&lt;/span&gt;&lt;span&gt;: Should be empty or &lt;/span&gt;&lt;span&gt;None&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/li&gt;
  &lt;/ul&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Monitor Replication Progress&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Ensure that the &lt;/span&gt;&lt;span&gt;Seconds_Behind_Master&lt;/span&gt;&lt;span&gt; field is not increasing, which would
      indicate that the slave is falling behind the master.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;Check that &lt;/span&gt;&lt;span&gt;Exec_Master_Log_Pos&lt;/span&gt;&lt;span&gt; and &lt;/span&gt;&lt;span&gt;Read_Master_Log_Pos&lt;/span&gt;&lt;span&gt; are advancing, which means that the
      slave is processing the master’s binary logs.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Check for Errors in the Log&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Review the MySQL error log for any
      errors or warnings that might indicate replication issues.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Verify Data Consistency&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Ensure that data on the slave is
      consistent with the master. You can use tools like &lt;/span&gt;&lt;span&gt;pt-table-checksum&lt;/span&gt;&lt;span&gt; and &lt;/span&gt;&lt;span&gt;pt-table-sync&lt;/span&gt;&lt;span&gt; from Percona Toolkit for this purpose.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Troubleshooting Common Replication Issues&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;If you encounter any
issues or the replication status shows errors, here are some common
troubleshooting steps:&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;1&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Network Issues&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Ensure there is no network latency or
      connectivity issues between the master and slave.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;Verify that the master server’s
      firewall allows connections from the slave’s IP address.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;User Privileges&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Ensure that the replication user (&lt;/span&gt;&lt;span&gt;repl1&lt;/span&gt;&lt;span&gt; in this case) has the necessary privileges:&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;GRANT REPLICATION SLAVE ON *.* TO &#39;repl1&#39;@&#39;slave_ip&#39; IDENTIFIED BY &#39;password&#39;;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;FLUSH PRIVILEGES;&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;3&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Binary Log Issues&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Ensure that the binary log files on the
      master are not corrupted and that the master is not purging the binary
      logs before the slave can read them.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Configuration Issues&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
 &lt;ul type=&quot;circle&quot;&gt;
  &lt;li&gt;&lt;span&gt;Verify that the &lt;/span&gt;&lt;span&gt;server_id&lt;/span&gt;&lt;span&gt; is unique for both master and slave.&lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;&lt;span&gt;Check the &lt;/span&gt;&lt;span&gt;CHANGE MASTER TO&lt;/span&gt;&lt;span&gt; configuration on the slave to ensure
      it points to the correct master log file and position.&lt;/span&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Example of Checking Slave Status&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Here’s an example of
how to check the slave status and interpret the output:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;SHOW SLAVE STATUS\G;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Sample output:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;*************************** 1. row ***************************&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Slave_IO_State: Waiting
for master to send event&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Master_Host: 10.117.10.33&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Master_User: repl1&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Master_Port: 3306&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Connect_Retry: 60&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Master_Log_File: db-prod-ams-mcmts-binlog.001109&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Read_Master_Log_Pos: 231714179&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Relay_Log_File: relay-bin.000002&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Relay_Log_Pos: 231714179&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Relay_Master_Log_File: db-prod-ams-mcmts-binlog.001109&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Slave_IO_Running: Yes&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Slave_SQL_Running: Yes&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Replicate_Do_DB: &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Replicate_Ignore_DB: &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Replicate_Do_Table: &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Replicate_Ignore_Table: &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Replicate_Wild_Do_Table: &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp; Replicate_Wild_Ignore_Table: &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Last_Errno: 0&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Last_Error: &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Skip_Counter: 0&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exec_Master_Log_Pos: 231714179&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Relay_Log_Space: 231714179&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Until_Condition: None&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Until_Log_File: &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Until_Log_Pos: 0&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Seconds_Behind_Master: 0&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Conclusion&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;The log message you
provided indicates that the replication I/O thread has started successfully and
connected to the master. By checking the slave status and monitoring the
replication process, you can ensure that replication is functioning correctly
and address any issues that arise. If there are specific problems you
encounter, providing additional details will help in diagnosing and resolving
the issue.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Other Issues in The Log File&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;the message before is:
&quot;[Warning] [MY-010897] [Repl] Storing MySQL user name or password
information in the master info repository is not secure and is therefore not
recommended. Please consider using the USER and PASSWORD connection options for
START SLAVE; see the &#39;START SLAVE Syntax&#39; in the MySQL Manual for more
information.&quot;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;The warning message &lt;/span&gt;&lt;span&gt;[Warning] [MY-010897] [Repl] Storing MySQL user name or password
information in the master info repository is not secure and is therefore not
recommended. Please consider using the USER and PASSWORD connection options for
START SLAVE; see the &#39;START SLAVE Syntax&#39; in the MySQL Manual for more
information.&lt;/span&gt;&lt;span&gt; indicates a security
concern about storing replication credentials in the master info repository in
plaintext. This is a common security advisory in MySQL replication setups to
encourage better practices.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Understanding the Warning&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;MySQL traditionally
stores replication user credentials in the &lt;/span&gt;&lt;span&gt;master.info&lt;/span&gt;&lt;span&gt; file. This file contains sensitive
information in plaintext, which poses a security risk. The recommendation is to
use more secure methods to store and handle replication credentials.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Secure Handling of Replication Credentials&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;MySQL 8.0 introduced
the ability to use the &lt;/span&gt;&lt;span&gt;MASTER_USER&lt;/span&gt;&lt;span&gt; and &lt;/span&gt;&lt;span&gt;MASTER_PASSWORD&lt;/span&gt;&lt;span&gt; options in conjunction with the &lt;/span&gt;&lt;span&gt;START SLAVE&lt;/span&gt;&lt;span&gt; command to securely
manage replication credentials. This approach avoids storing credentials in
plaintext files.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Steps to Address the Warning&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;ol start=&quot;1&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Stop the Slave&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;STOP SLAVE;&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;2&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Update the Slave Configuration&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Use the &lt;/span&gt;&lt;span&gt;CHANGE MASTER TO&lt;/span&gt;&lt;span&gt; command with the &lt;/span&gt;&lt;span&gt;MASTER_USER&lt;/span&gt;&lt;span&gt; and &lt;/span&gt;&lt;span&gt;MASTER_PASSWORD&lt;/span&gt;&lt;span&gt; options. These options will securely store
     the credentials without exposing them in the &lt;/span&gt;&lt;span&gt;master.info&lt;/span&gt;&lt;span&gt; file.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp; CHANGE MASTER TO&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp; MASTER_HOST=&#39;10.117.10.33&#39;,&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp; MASTER_USER=&#39;repl1&#39;,&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp; MASTER_PASSWORD=&#39;your_password&#39;,&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp; MASTER_LOG_FILE=&#39;db-prod-ams-mcmts-binlog.001109&#39;,&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp; MASTER_LOG_POS=231714179;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Replace &lt;/span&gt;&lt;span&gt;&#39;your_password&#39;&lt;/span&gt;&lt;span&gt; with the actual password for the replication
user.&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;3&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Start the Slave&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;START SLAVE;&lt;/span&gt;&lt;/p&gt;

&lt;ol start=&quot;4&quot; type=&quot;1&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;Verify Slave Status&lt;/span&gt;&lt;/b&gt;&lt;span&gt;:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;span&gt;SHOW SLAVE STATUS\G;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Ensure that both &lt;/span&gt;&lt;span&gt;Slave_IO_Running&lt;/span&gt;&lt;span&gt; and &lt;/span&gt;&lt;span&gt;Slave_SQL_Running&lt;/span&gt;&lt;span&gt; are &lt;/span&gt;&lt;span&gt;Yes&lt;/span&gt;&lt;span&gt; and that there are no errors.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Example&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;Here&#39;s a complete
example of how to update the replication configuration securely:&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;STOP SLAVE;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;CHANGE MASTER TO&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp; MASTER_HOST=&#39;10.117.10.33&#39;,&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp; MASTER_USER=&#39;repl1&#39;,&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp; MASTER_PASSWORD=&#39;your_password&#39;,&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp; MASTER_LOG_FILE=&#39;db-prod-ams-mcmts-binlog.001109&#39;,&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp; MASTER_LOG_POS=231714179;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;START SLAVE;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;SHOW SLAVE STATUS\G;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;span&gt;Explanation&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;ul type=&quot;disc&quot;&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;STOP SLAVE&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Stops the replication process.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;CHANGE MASTER TO&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Updates the replication configuration
     with secure credentials.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;START SLAVE&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Restarts the replication process with
     the updated configuration.&lt;/span&gt;&lt;/li&gt;
 &lt;li&gt;&lt;b&gt;&lt;span&gt;SHOW SLAVE STATUS\G&lt;/span&gt;&lt;/b&gt;&lt;span&gt;: Verifies the status of the replication
     process.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;span&gt;By following these
steps, you address the security warning about storing plaintext credentials and
ensure that your replication setup is more secure. If you encounter any issues
or need further assistance, please provide the specific details, and I can help
you troubleshoot them.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/496002598988632095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/496002598988632095' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/496002598988632095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/496002598988632095'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2024/06/mysql-8.html' title='MySQL 8.0 Messages MY-010562 &amp; MY-010897 in &quot;mysqld.log&quot;  '/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-4622418549915807087</id><published>2023-05-08T10:05:00.000+03:00</published><updated>2023-05-09T08:39:25.474+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bit data type"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><title type='text'>MySQL BIT type operations in SQL&#39;s</title><content type='html'>&lt;h4 style=&quot;text-align: left;&quot;&gt;The SQL:&amp;nbsp;&lt;/h4&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;SELECT
  PA.v1,&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SU.userv2_ID,&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SU.v3,
  PA.v4&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;&amp;nbsp; FROM
  aaa.bbbb PA&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;INNER JOIN aaa.cccc SU ON SU.v2 = PA.v2&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;&amp;nbsp;WHERE
  PA.v5 = &#39;position&#39;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;&amp;nbsp; &amp;nbsp;AND PA.v6 = &#39;Yes&#39;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;&amp;nbsp; &amp;nbsp;AND PA.v7 = 0&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;&amp;nbsp; &amp;nbsp;AND SU.v8 = 3&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;&amp;nbsp; &amp;nbsp;AND SU.v9 &amp;amp; 128 = 128;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;Do you know what is the meaning of the line &quot;&lt;/span&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;span style=&quot;color: #0b5394;&quot;&gt;AND SU.v9 &amp;amp; 128 = 128&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #38761d;&quot;&gt;&quot;?&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In MySQL, the &lt;span style=&quot;color: red; font-family: courier;&quot;&gt;&lt;b&gt;&amp;amp;&lt;/b&gt;&lt;/span&gt; operator performs a bitwise AND operation. The expression &quot;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;SU.v9 &amp;amp; 128&quot;&lt;/span&gt; will return a value that represents the result of performing a bitwise AND operation between the value of &quot;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;SU.v9&quot;&lt;/span&gt; and the binary value 10000000 (which is decimal 128).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In this case, the line &quot;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;AND SU.v9 &amp;amp; 128 = 128&lt;/span&gt;&quot; is checking whether the binary value 10000000 (decimal 128) is set in the &quot;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;SU.v9&quot;&lt;/span&gt;&amp;nbsp;field. If the binary value 10000000 is set, then the result of the expression will be 128, which is equal to the binary value 10000000. If the binary value 10000000 is not set, then the result of the expression will be 0.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the line is effectively checking whether the 8th bit (from right to left) of the &quot;&lt;span style=&quot;color: #0b5394; font-family: courier;&quot;&gt;SU.v9&quot;&lt;/span&gt;&amp;nbsp;field is set to 1. If it is set to 1, then the condition is true and the row will be included in the query&#39;s results. If it is set to 0, then the condition is false and the row will be excluded from the query&#39;s results.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/4622418549915807087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/4622418549915807087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/4622418549915807087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/4622418549915807087'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2023/05/mysql-bit-type-operations-in-sqls.html' title='MySQL BIT type operations in SQL&#39;s'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-5526650407160864508</id><published>2012-02-06T09:11:00.004+02:00</published><updated>2023-05-23T17:19:13.524+03:00</updated><title type='text'>SchemaSpy</title><content type='html'>I uses &quot;SchemaSpy&quot; to get a order view of our sachem&#39;s and give the 
developers a tool to check their work. It is simple to use and install 
and powerful enough to spot problems and keep documentation of the 
database environment.&lt;br /&gt;
&lt;br /&gt;
You can try it at:&lt;div&gt;https://github.com/schemaspy/schemaspy&lt;br /&gt;
&lt;a href=&quot;http://schemaspy.sourceforge.net/&quot;&gt;http://schemaspy.sourceforge.net&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
At
 the end of installation U need to edit (or create new) batch file to 
run against your databases, the default file is located at the root and 
called &quot;run.bat&quot;, for Oracle I uses:&lt;br /&gt;
&lt;span style=&quot;color: #134f5c; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;java -jar &quot;[path]\schemaSpy_5.0.0.jar&quot; -dp &quot;[path]\ojdbc6.jar&quot; -t orathin -db [SID] -host [IP] -port 1521 -u [admin_user] -p [passwd] -o &quot;[output_path]&quot; -schemas [ora_user1,ora_user2,ora_user3,...]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/5526650407160864508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/5526650407160864508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/5526650407160864508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/5526650407160864508'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2012/02/schemaspy.html' title='SchemaSpy'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-8135327263759327629</id><published>2012-02-05T11:50:00.002+02:00</published><updated>2012-02-06T09:23:03.774+02:00</updated><title type='text'>Memcached and UDF for MySQL on Centos</title><content type='html'>We decided to go for Memcached in order to increase our &quot;Select&quot; performance from MySQL.&lt;br /&gt;
&lt;br /&gt;
We are working with Linux Centos:&lt;br /&gt;
&lt;div style=&quot;color: #073763; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
Linux host01 2.6.18-274.17.1.el5xen #1 SMP Tue Jan 10 18:06:37 EST 2012 x86_64 x86_64 x86_64 GNU/Linux&lt;/div&gt;
&lt;br /&gt;
The usual had to be installed in order to create compilation env. (gcc and several libs).&lt;br /&gt;
&lt;br /&gt;
Then those had to be installed in this order: &lt;br /&gt;
1. libevent&lt;br /&gt;
2. Memcached&amp;nbsp; &lt;br /&gt;
2. libmemcached&lt;br /&gt;
3. memcached_functions_mysql&lt;br /&gt;
&lt;br /&gt;
For &quot;libevent&quot; I download and installed: &quot;libevent-2.0.16-stable&quot; from: http://libevent.org/.&lt;br /&gt;
&lt;br /&gt;
For &quot;Memcached&quot; I installed: &quot;memcached-1.4.11&quot; from: http://memcached.org/.&lt;br /&gt;
&lt;br /&gt;
Here the problems begin, when I went for the latest versions of &quot;libmemcached&quot; &amp;amp; &quot;memcached_functions_mysql&quot; I was unable to compile the &quot;memcached_functions_mysql&quot; (I coul&#39;d compile any of the &quot;libmemcached&quot; versions).&lt;br /&gt;
First I installed &quot;libmemcached-1.0.3&quot; and when I tried the install &quot;memcached_functions_mysql&quot; the &quot;configure&quot; failed to find the &quot;libmemcached&quot;, I looked around and the problem was that the default installation of &quot;libmemcached&quot; went to /usr/local/lib while the configure looked for it under: /usr/lib64 so I created a soft link on /usr/lib64 for the following:&lt;br /&gt;
&lt;div style=&quot;color: #073763; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;/usr/lib64/libmemcachedprotocol.so -&amp;gt; /usr/local/lib/libmemcachedprotocol.so&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #073763; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;/usr/lib64/libmemcachedprotocol.so.0 -&amp;gt; /usr/local/lib/libmemcachedprotocol.so.0&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #073763; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;/usr/lib64/libmemcached.so -&amp;gt; /usr/local/lib/libmemcached.so&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #073763; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;/usr/lib64/libmemcached.so.3 -&amp;gt; /usr/local/lib/libmemcached.so.3&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #073763; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;/usr/lib64/libmemcachedutil.so -&amp;gt; /usr/local/lib/libmemcachedutil.so&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #073763; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;/usr/lib64/libmemcachedutil.so.0 -&amp;gt; /usr/local/lib/libmemcachedutil.so.0&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Now the configure was working, but the &quot;make&quot; command failed:&lt;br /&gt;
&lt;div style=&quot;color: #073763; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;make[2]: Entering directory `/root/Install/mysql_memcach/memcached_functions_mysql-1.1/src&#39;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;/bin/sh ../libtool --preserve-dup-deps --tag=CC   --mode=compile gcc 
-DHAVE_CONFIG_H -I. -I../include -I/opt/mysql/mysql/include  -g 
-DUNIV_LINUX -DUNIV_LINUX    -g -O2 -MT util.lo -MD -MP -MF 
.deps/util.Tpo -c -o util.lo util.c
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../include 
-I/opt/mysql/mysql/include -g -DUNIV_LINUX -DUNIV_LINUX -g -O2 -MT 
util.lo -MD -MP -MF .deps/util.Tpo -c util.c  -fPIC -DPIC -o 
.libs/util.o
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c: In function &#39;string_create&#39;:
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:172: error: invalid application of &#39;sizeof&#39; to incomplete type &#39;my_string_st&#39;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:173: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:174: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:175: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:176: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:177: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:178: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:178: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c: In function &#39;string_append&#39;:
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:185: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:185: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:188: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:190: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:197: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:202: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:202: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:202: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:204: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:207: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:208: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:209: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c: In function &#39;free_string&#39;:
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:216: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c: In function &#39;string_reset&#39;:
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:222: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:222: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:223: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:224: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;util.c:224: error: dereferencing pointer to incomplete type
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;make[2]: *** [util.lo] Error 1
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;make[2]: Leaving directory `/root/Install/mysql_memcach/memcached_functions_mysql-1.1/src&#39;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;make[1]: *** [all] Error 2
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;make[1]: Leaving directory `/root/Install/mysql_memcach/memcached_functions_mysql-1.1/src&#39;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;make: *** [all-recursive] Error 1&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
So next I tried a different combination (after searching the internet):&lt;br /&gt;
&lt;br /&gt;
libmemcached-0.34
&lt;br /&gt;
memcached_functions_mysql-0.9
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When running:
&lt;br /&gt;
&lt;span style=&quot;color: #073763; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;mysql -u root -p &amp;lt; ./sql/install_functions.sql
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
I run into the following error:
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
&lt;span style=&quot;color: #073763;&quot;&gt;mysql&amp;gt; CREATE FUNCTION memc_servers_version RETURNS STRING SONAME &quot;libmemcached_functions_mysql.so&quot;;
&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;color: #073763;&quot;&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;
ERROR 1127 (HY000): Can&#39;t find symbol &#39;memc_servers_version&#39; in library&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
And some things where working, but the main &quot;set()&#39; for values did not worked, so next I tried:&lt;br /&gt;
memcached_functions_mysql-1.1&lt;br /&gt;
&lt;br /&gt;
And this time everything is working, I am able to set values in &quot;memcached&quot; and all other activities.&lt;br /&gt;
&lt;br /&gt;
So currently the combination that is working on our environment&amp;nbsp; is:&lt;br /&gt;
&lt;div style=&quot;color: #38761d;&quot;&gt;
&lt;i&gt;&lt;span style=&quot;font-size: large;&quot;&gt;CentOs + libmemcavhed0.34 + memcached_functions_mysql-1.1&lt;/span&gt;&lt;/i&gt;
&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/8135327263759327629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/8135327263759327629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/8135327263759327629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/8135327263759327629'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2012/02/memcached-and-udf-for-mysql-on-centos.html' title='Memcached and UDF for MySQL on Centos'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-5211124238301749818</id><published>2011-11-27T14:44:00.001+02:00</published><updated>2011-11-27T15:52:16.575+02:00</updated><title type='text'>MySQL - command line monitoring</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;strong&gt;Part 1&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Basicly I perfer to use command line rather then a GUI to monitor and connect to MySQL in real time.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;u&gt;I use two types of monitors:&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;u&gt;1. &lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&#39;mytop&#39;&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;The current version is maitain on: &lt;/span&gt;&lt;a href=&quot;http://www.mysqlfanboy.com/mytop/&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Mysqlfunboy Site&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp;- from the site:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;em&gt;&quot;Mytop is a console-based (non-gui) tool for monitoring the threads and overall 
performance of a MySQL 3.22.x, 3.23.x, 4.x and 5.x server. It runs on most Unix 
systems (including Mac OS X) which have Perl, &lt;/em&gt;&lt;/span&gt;&lt;a href=&quot;http://search.cpan.org/search?dist=DBI&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;em&gt;DBI&lt;/em&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;em&gt;, and &lt;/em&gt;&lt;/span&gt;&lt;a href=&quot;http://search.cpan.org/search?dist=TermReadKey&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;em&gt;Term::ReadKey&lt;/em&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;em&gt; 
installed. And with &lt;/em&gt;&lt;/span&gt;&lt;a href=&quot;http://search.cpan.org/search?dist=ANSIColor&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;em&gt;Term::ANSIColor&lt;/em&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;em&gt; 
installed you even get color. If you install &lt;/em&gt;&lt;/span&gt;&lt;a href=&quot;http://search.cpan.org/search?mode=module&amp;amp;query=Time%3A%3AHiRes&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;em&gt;Time: 
:HiRes&lt;/em&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;em&gt;, you&#39;ll get good real-time queries/second stats.&quot;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;From the /? those are the options:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;? - display this screen&lt;br /&gt;&amp;nbsp; # - toggle short/long numbers (not yet implemented)&lt;br /&gt;&amp;nbsp; ! - force past replication error&lt;br /&gt;&amp;nbsp; c - command summary view (based on Com_* counters)&lt;br /&gt;&amp;nbsp; C - turn color on and off&lt;br /&gt;&amp;nbsp; d - show only a specific database&lt;br /&gt;&amp;nbsp; e - explain the query that a thread is running&lt;br /&gt;&amp;nbsp; E - display current replication error&lt;br /&gt;&amp;nbsp; f - show full query info for a given thread&lt;br /&gt;&amp;nbsp; F - unFilter the dispaly&lt;br /&gt;&amp;nbsp; h - show only a specifc host&#39;s connections&lt;br /&gt;&amp;nbsp; H - toggle the mytop header&lt;br /&gt;&amp;nbsp; i - toggle the display of idle (sleeping) threads&lt;br /&gt;&amp;nbsp; I - show innodb status&lt;br /&gt;&amp;nbsp; k - kill a thread&lt;br /&gt;&amp;nbsp; p - pause the display&lt;br /&gt;&amp;nbsp; l - change long running queries hightlighing&lt;br /&gt;&amp;nbsp; m - switch [mode] to qps (queries/sec) scrolling view&lt;br /&gt;&amp;nbsp; M - switch [mode] to status&lt;br /&gt;&amp;nbsp; o - reverse the sort order (toggle)&lt;br /&gt;&amp;nbsp; q - quit&lt;br /&gt;&amp;nbsp; r - reset the status counters (via FLUSH STATUS on your server)&lt;br /&gt;&amp;nbsp; R - change reverse IP lookup&lt;br /&gt;&amp;nbsp; s - change the delay between screen updates&lt;br /&gt;&amp;nbsp; S - change slow quiery hightlighting&lt;br /&gt;&amp;nbsp; t - switch to thread view (default)&lt;br /&gt;&amp;nbsp; u - show only a specific user&lt;br /&gt;&amp;nbsp; V - show variablesi&lt;br /&gt;&amp;nbsp; : - enter a command (not yet implemented)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;As U can see it has a lot of option and it can be used to monitor remote hosts using the -h option.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;This the default (thread) view, U can see the use of collors to make it more readable.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHJuIrm6hDidF4eJvqtbI00pAHKkUyoao_az-BGSXupvSWNXIyEOkJppo9g4JCXVEV6fnwiqKqDGFre3S1ytNnopOscIRuO8WezSw3LcapB4lkKP48Vpw60Gm4RALPgSzficaY/s1600/mytop_01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;114&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHJuIrm6hDidF4eJvqtbI00pAHKkUyoao_az-BGSXupvSWNXIyEOkJppo9g4JCXVEV6fnwiqKqDGFre3S1ytNnopOscIRuO8WezSw3LcapB4lkKP48Vpw60Gm4RALPgSzficaY/s320/mytop_01.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;See U in Part 2.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/5211124238301749818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/5211124238301749818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/5211124238301749818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/5211124238301749818'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2011/11/mysql-command-line-monitoring.html' title='MySQL - command line monitoring'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHJuIrm6hDidF4eJvqtbI00pAHKkUyoao_az-BGSXupvSWNXIyEOkJppo9g4JCXVEV6fnwiqKqDGFre3S1ytNnopOscIRuO8WezSw3LcapB4lkKP48Vpw60Gm4RALPgSzficaY/s72-c/mytop_01.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-2967951361175750440</id><published>2011-11-27T14:29:00.001+02:00</published><updated>2011-11-27T14:36:00.676+02:00</updated><title type='text'>mysqldump: Error 2020: Got packet bigger than &#39;max_allowed_packet&#39; bytes when dumping table</title><content type='html'>&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;strong&gt;mysqldump: Error 2020: Got packet bigger than &#39;max_allowed_packet&#39; bytes when dumping table&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;strong&gt;mysqldump: Couldn&#39;t execute &#39;use `XXX`&#39;: MySQL server has gone away (2006)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;&lt;strong&gt;mysqldump: Got error: 2006: MySQL server has gone away when selecting the database&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;While creating a bzckup of MySQL using &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;mysqldump&lt;/span&gt; I got the above 3 error&#39;s, the obius solution was to change the the &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&#39;max_allowed_packet&#39;&lt;/span&gt; on &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;my.cnf&lt;/span&gt; to a bigger value but on day to day basis that is not necasery, so I went to the other solution, add the &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&#39;--max_allowed_packet=512M&#39;&lt;/span&gt; to the &lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;mysqldump&lt;/span&gt; command line.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;That remove all of the errors from the dump.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/2967951361175750440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/2967951361175750440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/2967951361175750440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/2967951361175750440'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2011/11/mysqldump-error-2020-got-packet-bigger.html' title='mysqldump: Error 2020: Got packet bigger than &#39;max_allowed_packet&#39; bytes when dumping table'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-6760407044154337474</id><published>2011-11-15T14:47:00.001+02:00</published><updated>2011-11-27T14:36:54.084+02:00</updated><title type='text'>ORA-07217: sltln: environment variable cannot be evaluated.</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;strong&gt;&lt;u&gt;ORA-07217: sltln: environment variable cannot be evaluated.&lt;/u&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;

&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;What&#39;s nice about Oracle
error codes is that you can understand one thing while they meant something
else. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;Like today we tried to start an instance that was created by someone else
and strangely we got the above error.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;

&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;Checking the env vars shows
that they are all define correctly and still the instance will not start, so
the next step was to check the SPFILE. &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;

&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;Well the server was a VM with
4GB of memory, the installation was done by TAR/UNTAR the oracle installation
from other server and the memory parameters shows definition for more then 4GB. So the error was
in the SPFILE definition and not the OS env.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Times New Roman;&quot;&gt;

&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;By starting the instance with
a PFILE:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;sql&amp;gt; startup PFILE=&#39;/path/&lt;pfile&gt;&#39;;&lt;/pfile&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;It fixed the problem (the memory target was define to 1.7GB). I immediatly created a SPFILE from that PFILE:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;sql&amp;gt; create SPFILE FROM PFILE=&#39;/path/&lt;pfile&gt;&#39;;&lt;/pfile&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;So that next time it will work.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/6760407044154337474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/6760407044154337474' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/6760407044154337474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/6760407044154337474'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2011/11/ora-07217.html' title='ORA-07217: sltln: environment variable cannot be evaluated.'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-1736172916541832582</id><published>2011-11-13T15:25:00.001+02:00</published><updated>2012-10-23T16:11:53.052+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="automatic"/><category scheme="http://www.blogger.com/atom/ns#" term="mysql"/><category scheme="http://www.blogger.com/atom/ns#" term="partition"/><title type='text'>MySQL Automatic Partition Management</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: x-large;&quot;&gt;&lt;b&gt;&lt;u&gt;MySQL Automatic Partition Management&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;b&gt;&lt;u&gt;Framework&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;I created a new database called: `maintenance` and&amp;nbsp;four tables, two control tables and two log tables:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;
&lt;/span&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;`daily_partitioned_tables`&lt;/span&gt; - this table is controling partitions based on days between.&lt;/span&gt;&lt;/li&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;
&lt;/span&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;`maintpartitionsmetadata`&lt;/span&gt; - this table control partition by&amp;nbsp;amount tables.&lt;/span&gt;&lt;/li&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;
&lt;/span&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;`maintpartitionsruntime`&lt;/span&gt; - log every time a partiion is added.&lt;/span&gt;&lt;/li&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;
&lt;/span&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;`maint_partitions_norun_log`&lt;/span&gt; - log every run.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;ul&gt;&lt;table border=&quot;2&quot; cellpadding=&quot;3&quot; cellspacing=&quot;0&quot; style=&quot;height: 259px; width: 545px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;daily_partitioned_tables&lt;/span&gt;&lt;/b&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;DROP TABLE IF EXISTS `daily_partitioned_tables`;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;CREATE TABLE `daily_partitioned_tables` (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`DBName` varchar(150) NOT NULL DEFAULT &#39;&#39;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`TableName` varchar(250) NOT NULL DEFAULT &#39;&#39;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`DaysBetween` int(2) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`EngineType` varchar(100) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;PRIMARY KEY (`DBName`,`TableName`)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;) ENGINE=InnoDB DEFAULT CHARSET=utf8;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;INSERT INTO `daily_partitioned_tables` VALUES (&#39;&lt;/span&gt;&lt;/div&gt;
&lt;/span&gt;&lt;div&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;db_name&gt;&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;&#39;,&#39;&lt;/span&gt;&lt;tab_name&gt;&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;&#39;,1,&#39;InnoDB&#39;);&lt;/span&gt;
&lt;/tab_name&gt;&lt;/db_name&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table border=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table border=&quot;2&quot; cellpadding=&quot;3&quot; cellspacing=&quot;0&quot; style=&quot;height: 317px; width: 546px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;maintpartitionsmetadata&lt;/span&gt;&lt;/b&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;DROP TABLE IF EXISTS `maintpartitionsmetadata`;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;CREATE TABLE `maintpartitionsmetadata` (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`ID` bigint(20) NOT NULL AUTO_INCREMENT,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`DBName` varchar(150) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`TableName` varchar(250) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`AllowedFreespacePercent` int(11) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`RowsPerPartition` bigint(20) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`EngineType` varchar(100) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`PartitionType` varchar(100) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;div&gt;
`PartitionedColumn` varchar(100) DEFAULT NULL,&lt;/div&gt;
&lt;div&gt;
PRIMARY KEY (`ID`),&lt;/div&gt;
&lt;div&gt;
KEY `idx_mpmd_DBName_TableName` (`DBName`,`TableName`)&lt;/div&gt;
&lt;div&gt;
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;&lt;/div&gt;
&lt;/span&gt;&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;INSERT INTO `maintpartitionsmetadata` VALUES (1,&#39;&lt;/span&gt;&lt;tab_name&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&#39;,&#39;&lt;/span&gt;&lt;db_name&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&#39;,10,120000000,&#39;InnoDB&#39;,&#39;RANGE&#39;,&#39;ID&#39;);&lt;/span&gt;
&lt;/db_name&gt;&lt;/tab_name&gt;&lt;/div&gt;
&lt;/span&gt;&lt;div&gt;
&lt;/div&gt;
&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table border=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table border=&quot;2&quot; cellpadding=&quot;3&quot; cellspacing=&quot;0&quot; style=&quot;height: 323px; width: 545px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;maintpartitionsruntime&lt;/span&gt;&lt;/b&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;DROP TABLE IF EXISTS `maintpartitionsruntime`;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;CREATE TABLE `maintpartitionsruntime` (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`ID` bigint(20) NOT NULL AUTO_INCREMENT,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`TimeStamp` datetime DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`DBName` varchar(150) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`TableName` varchar(250) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`PartitionID` bigint(20) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`PartitionName` varchar(250) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`HighValue` bigint(20) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;div&gt;
PRIMARY KEY (`ID`),&lt;/div&gt;
&lt;div&gt;
KEY `idx_mprt_DBName_TableName` (`DBName`,`TableName`)&lt;/div&gt;
&lt;div&gt;
) ENGINE=InnoDB DEFAULT CHARSET=utf8;&lt;/div&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table border=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table border=&quot;2&quot; cellpadding=&quot;3&quot; cellspacing=&quot;0&quot; style=&quot;height: 308px; width: 544px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;maint_partitions_norun_log&lt;/span&gt;&lt;/b&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;DROP TABLE IF EXISTS `maint_partitions_norun_log`;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;CREATE TABLE `maint_partitions_norun_log` (&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`ID` bigint(20) NOT NULL AUTO_INCREMENT,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`TimeStamp` datetime DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`DBName` varchar(150) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`TableName` varchar(250) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`PartitionID` bigint(20) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;`PartitionName` varchar(250) DEFAULT NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;&lt;span style=&quot;color: #134f5c;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;
&lt;div&gt;
`HighValue` bigint(20) DEFAULT NULL,&lt;/div&gt;
&lt;div&gt;
PRIMARY KEY (`ID`)&lt;/div&gt;
&lt;div&gt;
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
&lt;/div&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-family: Arial; font-size: large;&quot;&gt;Controling Procedures&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
(2012-10-23 - added error handling to procedures)&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;There are two procedures that creates the new partition, one is for the date partition -&lt;/span&gt; &lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;AddDailyPartition&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;, the other is for the amount partition - &lt;/span&gt;&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;AddPartition&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;2&quot; cellpadding=&quot;3&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;AddDailyPartition&lt;/b&gt;&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;DROP PROCEDURE IF EXISTS `AddDailyPartition` ;&lt;br /&gt;DELIMITER ;;&lt;br /&gt;CREATE PROCEDURE `AddDailyPartition`()&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp; DECLARE vDBName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR(150) ;&lt;br /&gt;&amp;nbsp; DECLARE vTableName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR(250) ;&lt;br /&gt;&amp;nbsp; DECLARE vDaysBetween&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INT(2) ;&lt;br /&gt;&amp;nbsp; DECLARE vEngineType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR(100) ;&lt;br /&gt;&amp;nbsp; DECLARE vPartitionID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BIGINT ;&lt;br /&gt;&amp;nbsp; DECLARE vPartitionedColumn&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR(100) ;&lt;br /&gt;&amp;nbsp; DECLARE vPartitionDate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TIMESTAMP ;&lt;br /&gt;&amp;nbsp; DECLARE vHighValue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BIGINT ;&lt;br /&gt;&amp;nbsp; DECLARE vPartitionName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR(250) ;&lt;br /&gt;&amp;nbsp; DECLARE vCurrentMaxValue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BIGINT ;&lt;br /&gt;&amp;nbsp; DECLARE hNoMoreRows&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INT DEFAULT FALSE ;&lt;br /&gt;&amp;nbsp; DECLARE l_error&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INT(2) DEFAULT 0;&lt;br /&gt;&amp;nbsp; DECLARE l_loop_inx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INT DEFAULT 1;&lt;br /&gt;&amp;nbsp; DECLARE curDailyPartitionedTables CURSOR FOR&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONVERT(DBName USING utf8),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONVERT(TableName USING utf8),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONVERT(DaysBetween USING utf8),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONVERT(EngineType USING utf8)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM&amp;nbsp;&amp;nbsp; maintenancedb.daily_partitioned_tables ;&lt;br /&gt;&amp;nbsp; DECLARE CONTINUE HANDLER FOR NOT FOUND&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET hNoMoreRows = TRUE ;&lt;br /&gt;&amp;nbsp; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET l_error = 1;&lt;br /&gt;&amp;nbsp; DECLARE EXIT HANDLER FOR 1517&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET l_error = 2;&lt;br /&gt;&amp;nbsp; DECLARE CONTINUE HANDLER FOR SQLSTATE &#39;23000&#39; SET l_error = 3;&lt;br /&gt;&amp;nbsp; -- Read more at http://www.devshed.com/c/a/MySQL/Error-Handling-Examples/1/#Md3L1K2Fj0EgzS6W.99&lt;br /&gt;&lt;br /&gt;&amp;nbsp; INSERT INTO maintenancedb.maint_partitions_norun_log (TimeStamp, DBName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TableName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PartitionID, PartitionName, HighValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (NOW(),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;maintenancedb&#39;, &#39;AddDailyPartition&#39;, 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Start&#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l_error) ;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; OPEN curDailyPartitionedTables ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tables_Loop: LOOP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FETCH curDailyPartitionedTables INTO vDBName, vTableName, vDaysBetween, vEngineType ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT INTO maintenancedb.maint_partitions_norun_log (TimeStamp, DBName,&amp;nbsp; TableName,&amp;nbsp; PartitionID, PartitionName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HighValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (NOW(),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vDBName, vTableName, l_loop_inx,&amp;nbsp; &#39;Loop Cursor - Start&#39;, l_error) ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET l_loop_inx = l_loop_inx + 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF NOT hNoMoreRows THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT PARTITION_ORDINAL_POSITION&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AS &quot;PartitionID&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REPLACE(REPLACE(PARTITION_EXPRESSION, &#39;`&#39;, &#39;&#39;), &#39; &#39;, &#39;&#39;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AS &quot;PartitionedColumn&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STR_TO_DATE(substr(partition_name,2,9),GET_FORMAT(DATE,&#39;INTERNAL&#39;)) AS &quot;PartitionDate&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PARTITION_DESCRIPTION&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AS &quot;MaxValue&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO&amp;nbsp;&amp;nbsp; vPartitionID, vPartitionedColumn, vPartitionDate, vHighValue&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM&amp;nbsp;&amp;nbsp; information_schema.PARTITIONS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE&amp;nbsp; TABLE_SCHEMA = vDBName&amp;nbsp;&amp;nbsp;&amp;nbsp; collate utf8_unicode_ci&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AND&amp;nbsp;&amp;nbsp;&amp;nbsp; TABLE_NAME&amp;nbsp;&amp;nbsp; = vTableName collate utf8_unicode_ci&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ORDER&amp;nbsp; BY 1 DESC&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LIMIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF vHighValue &amp;lt;= (TO_DAYS(NOW()) + vDaysBetween + 1) THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET vHighValue = TO_DAYS(NOW()) + vDaysBetween + 1 ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONVERT(CONCAT(&#39;p&#39;,DATE_FORMAT(FROM_DAYS(vHighValue) - INTERVAL 1 DAY,&#39;%Y%m%d&#39;)) USING utf8)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO&amp;nbsp;&amp;nbsp; vPartitionName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET @Insert = CONCAT(&#39;ALTER TABLE &#39;, vDBName, &#39;.&#39;, vTableName, &#39; ADD PARTITION (PARTITION &#39;, vPartitionName,&#39; VALUES LESS THAN (&#39;, vHighValue , &#39;) ENGINE = &#39;, vEngineType, &#39;)&#39;) ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PREPARE STMT2 FROM @Insert ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXECUTE STMT2 ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT INTO maintenancedb.maintpartitionsruntime (TimeStamp, DBName,&amp;nbsp; TableName,&amp;nbsp; PartitionID,&amp;nbsp;&amp;nbsp;&amp;nbsp; PartitionName,&amp;nbsp; HighValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (NOW(),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vDBName, vTableName, vPartitionID+1, vPartitionName, vHighValue) ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT INTO maintenancedb.maint_partitions_norun_log (TimeStamp, DBName,&amp;nbsp; TableName,&amp;nbsp; PartitionID,&amp;nbsp; PartitionName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HighValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (NOW(),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vDBName, vTableName, vPartitionID, &#39;NoNeedToAddPart&#39;, vHighValue) ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END IF ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOSE curDailyPartitionedTables ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEAVE Tables_Loop ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; END IF ;&lt;br /&gt;&amp;nbsp; END LOOP ;&lt;br /&gt;END ;;&lt;br /&gt;DELIMITER ;
&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table border=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table border=&quot;2&quot; cellpadding=&quot;3&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;AddPartition&lt;/b&gt;&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;DROP PROCEDURE IF EXISTS `AddPartition` ;&lt;br /&gt;DELIMITER ;;&lt;br /&gt;CREATE PROCEDURE `AddPartition`()&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp; DECLARE vAllowedFreespacePercent INT ;&lt;br /&gt;&amp;nbsp; DECLARE vRowsPerPartition&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BIGINT ;&lt;br /&gt;&amp;nbsp; DECLARE vPartitionedColumn&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR(100) ;&lt;br /&gt;&amp;nbsp; DECLARE vEngineType&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR(100) ;&lt;br /&gt;&amp;nbsp; DECLARE vPartitionID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BIGINT ;&lt;br /&gt;&amp;nbsp; DECLARE vPartitionName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR(250) ;&lt;br /&gt;&amp;nbsp; DECLARE vHighValue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BIGINT ;&lt;br /&gt;&amp;nbsp; DECLARE vCurrentMaxValue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BIGINT ;&lt;br /&gt;&amp;nbsp; DECLARE vDBName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR(150) ;&lt;br /&gt;&amp;nbsp; DECLARE vTableName&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR(250) ;&lt;br /&gt;&amp;nbsp; DECLARE hNoMoreRows&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INT DEFAULT FALSE ;&lt;br /&gt;&amp;nbsp; DECLARE l_error&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INT DEFAULT FALSE;&lt;br /&gt;&amp;nbsp; DECLARE l_loop_inx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INT DEFAULT 1;&lt;br /&gt;&amp;nbsp; DECLARE curPartitionedTables CURSOR FOR&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONVERT(DBName USING utf8),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONVERT(TableName USING utf8),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONVERT(AllowedFreespacePercent USING utf8),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONVERT(RowsPerPartition USING utf8),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONVERT(EngineType USING utf8)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM&amp;nbsp;&amp;nbsp; maintenancedb.maintpartitionsmetadata ;&lt;br /&gt;&amp;nbsp; DECLARE CONTINUE HANDLER FOR NOT FOUND SET hNoMoreRows = TRUE ;&lt;br /&gt;&amp;nbsp; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET l_error = TRUE;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; INSERT INTO maintenancedb.maint_partitions_norun_log (TimeStamp, DBName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TableName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PartitionID, PartitionName, HighValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (NOW(),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;maintenancedb&#39;, &#39;AddPartition&#39;, 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Start&#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; l_error) ;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; OPEN curPartitionedTables ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tables_Loop: LOOP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FETCH curPartitionedTables INTO vDBName, vTableName, vAllowedFreespacePercent, vRowsPerPartition, vEngineType ;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT INTO maintenancedb.maint_partitions_norun_log (TimeStamp, DBName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TableName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PartitionID, PartitionName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HighValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (NOW(),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;maintenancedb&#39;, &#39;AddPartition&#39;, l_loop_inx,&amp;nbsp; &#39;Loop Cursor - Start&#39;, l_error) ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET l_loop_inx = l_loop_inx + 1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF NOT hNoMoreRows THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT PARTITION_ORDINAL_POSITION&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AS &quot;PartitionID&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; REPLACE(REPLACE(PARTITION_EXPRESSION, &#39;`&#39;, &#39;&#39;), &#39; &#39;, &#39;&#39;) AS &quot;PartitionedColumn&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PARTITION_DESCRIPTION&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AS &quot;MaxValue&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO&amp;nbsp;&amp;nbsp; vPartitionID, vPartitionedColumn, vHighValue&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM&amp;nbsp;&amp;nbsp; information_schema.PARTITIONS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE&amp;nbsp; TABLE_SCHEMA = vDBName&amp;nbsp;&amp;nbsp;&amp;nbsp; collate utf8_unicode_ci&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AND&amp;nbsp;&amp;nbsp;&amp;nbsp; TABLE_NAME&amp;nbsp;&amp;nbsp; = vTableName collate utf8_unicode_ci&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ORDER&amp;nbsp; BY 1 DESC&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LIMIT&amp;nbsp; 1 ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET @Table&amp;nbsp;&amp;nbsp;&amp;nbsp; = vTableName ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET @Database = vDBName ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET @Query = CONCAT(&#39;SELECT MAX(&#39;, vPartitionedColumn, &#39;) INTO @CurrentMaxValue FROM &#39;, vDBName, &#39;.&#39;, vTableName) ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PREPARE STMT1 FROM @Query ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXECUTE STMT1 ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET vCurrentMaxValue = @CurrentMaxValue ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF (vHighValue-vCurrentMaxValue) &amp;lt;= vAllowedFreespacePercent*(vRowsPerPartition/100) THEN&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT CONVERT(CONCAT(&#39;p&#39;,SUBSTR(REPLACE(REPLACE(REPLACE(NOW(),&#39;-&#39;,&#39;&#39;),&#39;:&#39;,&#39;&#39;),&#39; &#39;,&#39;_&#39;),1,13)) USING utf8)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO&amp;nbsp;&amp;nbsp; vPartitionName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET vHighValue = vHighValue+vRowsPerPartition ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET @Insert = CONCAT(&#39;ALTER TABLE &#39;, vDBName, &#39;.&#39;, vTableName, &#39; ADD PARTITION (PARTITION &#39;, vPartitionName,&#39; VALUES LESS THAN (&#39;, vHighValue, &#39;) ENGINE = &#39;, vEngineType, &#39;)&#39;) ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PREPARE STMT2 FROM @Insert ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EXECUTE STMT2 ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT (vHighValue-vCurrentMaxValue) AS &quot;FreeRows&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vAllowedFreespacePercent*(vRowsPerPartition/100) AS &quot;FreeRowsAllowed&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;Yes&quot; AS &quot;NeedsPartition?&quot; ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT INTO maintenancedb.maintpartitionsruntime (TimeStamp, DBName, TableName, PartitionID, PartitionName, HighValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (NOW(), vDBName, vTableName, vPartitionID+1, vPartitionName, vHighValue) ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT (vHighValue-vCurrentMaxValue) AS &quot;FreeRows&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vAllowedFreespacePercent*(vRowsPerPartition/100) AS &quot;FreeRowsAllowed&quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &quot;No&quot; AS &quot;NeedsPartition?&quot; ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT INTO maintenancedb.maint_partitions_norun_log (TimeStamp, DBName, TableName, PartitionID, PartitionName, HighValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (NOW(), vDBName, vTableName, vPartitionID, &#39;NoNeedToAddPart&#39;, vHighValue) ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; END IF ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELSE&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLOSE curPartitionedTables ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LEAVE Tables_Loop ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; END IF ;&lt;br /&gt;&amp;nbsp; END LOOP ;&lt;br /&gt;END ;;&lt;br /&gt;DELIMITER ;&lt;/span&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;u&gt;&lt;span style=&quot;font-family: Arial; font-size: large;&quot;&gt;Main Job Procedure&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;2&quot; cellpadding=&quot;3&quot; cellspacing=&quot;0&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;RunMaintenance_Jobs_prc&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;DROP PROCEDURE IF EXISTS `RunMaintenance_Jobs_prc` ;&lt;br /&gt;DELIMITER ;;&lt;br /&gt;CREATE PROCEDURE `RunMaintenance_Jobs_prc`(p_run_type&amp;nbsp;&amp;nbsp;&amp;nbsp; int(1))&lt;br /&gt;BEGIN&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp; INSERT INTO maintenancedb.maint_partitions_norun_log (TimeStamp, DBName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TableName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PartitionID, PartitionName, HighValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (NOW(),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;maintenancedb&#39;, &#39;RunMaintenance_Jobs_prc&#39;, 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;Start&#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0) ;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp; IF p_run_type = 0 THEN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL maintenancedb.AddPartition();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT INTO maintenancedb.maint_partitions_norun_log (TimeStamp, DBName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TableName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PartitionID, PartitionName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HighValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (NOW(),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;maintenancedb&#39;, &#39;RunMaintenance_Jobs_prc&#39;, 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;After AddPartition&#39;, 0) ;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CALL maintenancedb.AddDailyPartition();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT INTO maintenancedb.maint_partitions_norun_log (TimeStamp, DBName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TableName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PartitionID, PartitionName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HighValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (NOW(),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;maintenancedb&#39;, &#39;RunMaintenance_Jobs_prc&#39;, 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;After AddDailyPartition&#39;, 0) ;&lt;br /&gt;&amp;nbsp;&amp;nbsp; END IF;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp;&amp;nbsp; INSERT INTO maintenancedb.maint_partitions_norun_log (TimeStamp, DBName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TableName,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PartitionID, PartitionName, HighValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUES (NOW(),&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;maintenancedb&#39;, &#39;RunMaintenance_Jobs_prc&#39;, 0,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;END&#39;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0) ;&lt;br /&gt;END ;;&lt;br /&gt;DELIMITER ;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;span style=&quot;color: black; font-family: Arial;&quot;&gt;This is the simpliest frame work.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif; font-size: large;&quot;&gt;&lt;b&gt;Create Event&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
That will do: &quot;&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;CALL maintenancedb.RunMaintenance_Jobs_prc(0)&lt;/span&gt;&quot; every 10min.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #134f5c; font-family: &amp;quot;Courier New&amp;quot;, Courier, monospace;&quot;&gt;
CREATE EVENT maintenancedb_event
    ON SCHEDULE EVERY 10 MINUTE STARTS CURRENT_TIMESTAMP + INTERVAL 10 MINUTE
    DO
    CALL maintenancedb.RunMaintenance_Jobs_prc(0);&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;tf&gt;

&lt;/tf&gt;&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;span style=&quot;font-family: Arial; font-size: large;&quot;&gt;&lt;b&gt;&lt;u&gt;Thing To Do:&lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Add difrent date ranges: week, month, year.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;Control the logos - if any and what level.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;Thats all for now.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/1736172916541832582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/1736172916541832582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/1736172916541832582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/1736172916541832582'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2011/11/mysql-automatic-partitions-managment.html' title='MySQL Automatic Partition Management'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-6279436114004514095</id><published>2011-09-20T10:28:00.000+03:00</published><updated>2016-12-19T16:07:54.978+02:00</updated><title type='text'>Install Zabbix MySQL plugin (imported from Cacti)</title><content type='html'>While the MySQL plugin for Zabbix is limited the Cacti plugin is very detailed and maintenance by &lt;a href=&quot;http://www.palominodb.com/blog/2010/12/13/zabbix-templates-mysql&quot;&gt;Percona&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;table style=&quot;width:50%&quot; border=1&gt;&lt;tr&gt;&lt;th bgcolor=#D5E8EE align=center&gt;
&lt;a href=&quot;http://www.banggood.com/Xiaomi-Mi5-5_15-inch-3GB-RAM-32GB-ROM-Snapdragon-820-Quad-Core-4G-Smartphone-p-1038074.html?p=1Z04063693327201602J&quot; target=&quot;_blank&quot;&gt;Best Prices for Xiaomi MI5 celphone!!!&lt;/a&gt;
&lt;/th&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
Thanks to &lt;a href=&quot;http://www.palominodb.com/blog/2010/12/13/zabbix-templates-mysql&quot;&gt;PalominiDB &lt;/a&gt;the Cacti plugin is ported to Zabbix.&lt;br /&gt;
&lt;br /&gt;
The installation process is very simple, the most complicated part is creating the XML for the template from the Zabbix plugin &lt;a href=&quot;http://appaloosa-zabbix-templates.googlecode.com/files/appaloosa-zabbix-templates-0.0.1.tgz&quot;&gt;download &lt;/a&gt;, all U have to do is open the file and:&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot; id=&quot;aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown&quot; style=&quot;background-color: #eeeeee; font-family: Monaco, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Lucida Console&#39;, monospace; font-size: 12px; max-width: 70em; overflow-x: auto; overflow-y: auto; padding-bottom: 0.5em; padding-left: 0.5em; padding-right: 0.5em; padding-top: 0.5em;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;&lt;span class=&quot;pln&quot; id=&quot;&quot; style=&quot;color: black;&quot;&gt;cd appaloosa&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;zabbix&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;pln&quot; id=&quot;&quot; style=&quot;color: black;&quot;&gt;templates
perl tools&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;gen_template&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;pl defs&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;pl mysql&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; id=&quot;&quot; style=&quot;color: black;&quot;&gt;xml&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
Which will create the mysql.xml file needed for the Zabbix Server to install the MySQL template.&lt;br /&gt;
&lt;br /&gt;
Next, create the config file for the agent by editing (using&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #eeeeee; font-family: &amp;quot;monaco&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;lucida console&amp;quot; , monospace; font-size: 12px; white-space: pre;&quot;&gt;sed &lt;/span&gt;command) the&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #eeeeee; font-family: &amp;quot;monaco&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;lucida console&amp;quot; , monospace; font-size: 12px; white-space: pre;&quot;&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;conf&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;mysql_agentd&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;conf&lt;/span&gt;&lt;/span&gt;&amp;nbsp;file and creating&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #eeeeee; font-family: &amp;quot;monaco&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;lucida console&amp;quot; , monospace; font-size: 12px; white-space: pre;&quot;&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;conf&lt;/span&gt;&lt;/span&gt;&amp;nbsp;file ( the&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #eeeeee; color: #008800; font-family: &amp;quot;monaco&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;lucida console&amp;quot; , monospace; font-size: 12px; white-space: pre;&quot;&gt;/usr/local/zabbix/plugins&lt;/span&gt;&amp;nbsp;is a path U will have to create on the agent server - see below) :&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot; id=&quot;aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown&quot; style=&quot;background-color: #eeeeee; font-family: Monaco, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Lucida Console&#39;, monospace; font-size: 12px; max-width: 70em; overflow-x: auto; overflow-y: auto; padding-bottom: 0.5em; padding-left: 0.5em; padding-right: 0.5em; padding-top: 0.5em;&quot;&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;sed &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;e &lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;color: #008800;&quot;&gt;&#39;s|$ZABBIX_AGENT_PATH|/usr/local/zabbix/plugins|&#39;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; conf&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;mysql_agentd&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;conf &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; mysql&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;conf&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
Now U need to get the PHP file from the Cacti template, &lt;a href=&quot;http://code.google.com/p/mysql-cacti-templates/downloads/list&quot;&gt;download &lt;/a&gt;the latest version. Open the file, the file U need is:&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #444444;&quot;&gt;&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &amp;quot;monaco&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;lucida console&amp;quot; , monospace; font-size: 12px; line-height: 16px;&quot;&gt;ss_get_mysql_stats.php&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &amp;quot;monaco&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;lucida console&amp;quot; , monospace; font-size: 12px; line-height: 16px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
Agent side server:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Make sure PHP5 is installed.&lt;/li&gt;
&lt;li&gt;Make sure MySQL plugin for PHP is installed.&lt;/li&gt;
&lt;li&gt;Make sure php-cli is installed (command line PHP).&lt;/li&gt;
&lt;li&gt;U need an installation dir like:&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #eeeeee; font-family: &amp;quot;monaco&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;lucida console&amp;quot; , monospace; font-size: 12px; white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #444444;&quot;&gt;&lt;span class=&quot;str&quot; id=&quot;aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown&quot;&gt;/usr/&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;local&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;zabbix&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Create a sub-dir:&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #eeeeee; font-family: &amp;quot;monaco&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;lucida console&amp;quot; , monospace; font-size: 12px; white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #444444;&quot;&gt;&lt;span class=&quot;str&quot; id=&quot;aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown&quot;&gt;/usr/&lt;/span&gt;&lt;span class=&quot;kwd&quot; id=&quot;&quot;&gt;local&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;zabbix&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;plugins&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Copy the&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &amp;quot;monaco&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;lucida console&amp;quot; , monospace; font-size: 12px; line-height: 16px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #444444;&quot;&gt;ss_get_mysql_stats.php&lt;/span&gt;&lt;/span&gt;&amp;nbsp; to this dir.&lt;/li&gt;
&lt;li&gt;Create a sub-dir:&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #eeeeee; font-family: &amp;quot;monaco&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;lucida console&amp;quot; , monospace; font-size: 12px; white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #444444;&quot;&gt;&lt;span class=&quot;str&quot;&gt;/usr/&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;local&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;zabbix&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;agent&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Copy the&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #eeeeee; font-family: &amp;quot;monaco&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;lucida console&amp;quot; , monospace; font-size: 12px; white-space: pre;&quot;&gt;&lt;span class=&quot;pln&quot; id=&quot;aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown&quot; style=&quot;color: black;&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;pun&quot; id=&quot;&quot; style=&quot;color: #666600;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt;conf&lt;/span&gt;&lt;/span&gt;&amp;nbsp; file to this dir.&lt;/li&gt;
&lt;li&gt;Edit the&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #eeeeee; color: #444444; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;/etc/zabbix/zabbix_agentd.conf&lt;/span&gt; file.&lt;/li&gt;
&lt;li&gt;Add:&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #eeeeee; font-family: &amp;quot;monaco&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;lucida console&amp;quot; , monospace; font-size: 12px; white-space: pre;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #444444;&quot;&gt;&lt;span class=&quot;typ&quot;&gt;Include&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;str&quot;&gt;/usr/&lt;/span&gt;&lt;span class=&quot;kwd&quot;&gt;local&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;zabbix&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;agent&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot;&gt;d&lt;/span&gt;&lt;span class=&quot;pun&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Create a MySQL database user:&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: &amp;quot;arial&amp;quot; , sans-serif; font-size: 13px;&quot;&gt;&lt;pre class=&quot;prettyprint&quot; style=&quot;background-color: #eeeeee; font-family: Monaco, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, &#39;Lucida Console&#39;, monospace; font-size: 12px; max-width: 70em; overflow-x: auto; overflow-y: auto; padding-bottom: 0.5em; padding-left: 0.5em; padding-right: 0.5em; padding-top: 0.5em;&quot;&gt;&lt;span class=&quot;pln&quot; id=&quot;aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown&quot; style=&quot;color: black;&quot;&gt;GRANT SELECT&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; SUPER&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; PROCESS ON &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;*.*&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; TO &lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;color: #008800;&quot;&gt;&#39;zabbix&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;color: #008800;&quot;&gt;&#39;localhost&#39;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;color: black;&quot;&gt; identified BY &lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;color: #008800;&quot;&gt;&#39;some_password&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;color: #666600;&quot;&gt;;&lt;/span&gt;&lt;/pre&gt;
&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Edit the&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; color: #444444; font-family: &amp;quot;monaco&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;lucida console&amp;quot; , monospace; font-size: 12px; line-height: 16px;&quot;&gt;ss_get_mysql_stats.php&lt;/span&gt;&amp;nbsp;file, change the:&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: #eeeeee; color: #444444; font-family: &amp;quot;courier new&amp;quot; , &amp;quot;courier&amp;quot; , monospace;&quot;&gt;$mysql_user = &#39;zabbix&#39;;&amp;nbsp;$mysql_pass = &#39;some_password&#39;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Restart the agent.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px;&quot;&gt;import mysql.xml into Zabbix, and associate Template_MySQL with each database server.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px;&quot;&gt;Possible problem: &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;line-height: 16px;&quot;&gt;If your server use the Zabbix Linux template it include the check for &quot;mysqld&quot; process so U can&#39;t add the Tamplate_Mysql to this server, workaround: create a new server for this tamplate.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/6279436114004514095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/6279436114004514095' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/6279436114004514095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/6279436114004514095'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2011/09/install-zabbix-mysql-plugin-imported.html' title='Install Zabbix MySQL plugin (imported from Cacti)'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-2745229615760469135</id><published>2011-04-04T15:29:00.000+03:00</published><updated>2011-04-04T15:29:03.732+03:00</updated><title type='text'>Remove (full UnInstall) MySQL server form UBUNTU</title><content type='html'>I needed to fully remove MySQL from my UBUNTU server in order to re-install it from scratch. The installation included files on NFS (NetApp).&lt;br /&gt;
&lt;br /&gt;
First I auto remove the installation that was done with &quot;apt-get&quot;:&lt;br /&gt;
prompt &gt; apt-get autoremove mysql-server-core-5.1&lt;br /&gt;
&lt;br /&gt;
Then I checked for leftovers:&lt;br /&gt;
prompt &gt; dpkg --get-selections | grep mysql&lt;br /&gt;
&lt;br /&gt;
There was a list of packages in &quot;deinstall&quot; status, so I compliantly remove them by:&lt;br /&gt;
prompt &gt; pkg -P mysql-server-5.1&lt;br /&gt;
prompt &gt; dpkg -P mysql-common&lt;br /&gt;
&lt;br /&gt;
After that I remove manually all the files created on the NFS, and re-install from clean machine.</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/2745229615760469135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/2745229615760469135' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/2745229615760469135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/2745229615760469135'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2011/04/remove-full-uninstall-mysql-server-form.html' title='Remove (full UnInstall) MySQL server form UBUNTU'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-5781214586961275755</id><published>2009-11-05T13:28:00.000+02:00</published><updated>2009-11-05T14:39:28.666+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="11gR2"/><category scheme="http://www.blogger.com/atom/ns#" term="database"/><category scheme="http://www.blogger.com/atom/ns#" term="install"/><category scheme="http://www.blogger.com/atom/ns#" term="oracle"/><title type='text'>Installing Oracle 11gR2 on CentOS 5</title><content type='html'>Its about time and we decided to upgrade to Oracle 11gR2, so first thing first is the installation. I downloaded the two installation ZIP&#39;s and extract them to a staging area.&lt;br /&gt;&lt;br /&gt;In order to meet the oracle requirements for the installation please refer to: &lt;a href=&quot;http://download.oracle.com/docs/cd/E11882_01/install.112/e10861/toc.htm&quot;&gt;Oracle® Database Client Quick Installation Guide&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The good news is that the installer is making all the checks has part of the installation (See stage 11) so U can go with the process and fix what need fixing while the installation is running.&lt;br /&gt;&lt;br /&gt;1. Create an env. file so that if U will have to run the process more then once U will not have to set it again and again. Basically U want to set the ORACLE_BASE &amp; ORACLE_SID and unset ORACLE_HOME &amp; TNS_ADMIN:&lt;br /&gt;&lt;blockquote&gt;export ORACLE_BASE=/&lt;span style=&quot;font-style:italic;&quot;&gt;path&lt;/span&gt;&lt;br /&gt;export ORACLE_SID=xxx&lt;br /&gt;&lt;br /&gt;unset ORACLE_HOME&lt;br /&gt;unset TNS_ADMIN&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;2. Run the installer (runInstaller) from the staging area.&lt;br /&gt;&lt;br /&gt;3. The first screen:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_094123.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_094123.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. Next is the installation option, I choose to install only the software:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_094159.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_094159.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5. Next is the type of installation, in my case single:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_094216.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_094216.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6. Next screen is the language:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_094647.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_094647.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;7a. Select the Database Edition that suites U:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_094729.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_094729.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;7b.Use the &quot;Select Option&quot; button to chane the Oracle Options:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_095934.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_095934.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;8.Installation location - Remmember that the ORALCE_BASE is the place where the installation will create the following directories:&lt;br /&gt;&lt;blockquote&gt;admin&lt;br /&gt;cfgtoollogs&lt;br /&gt;checkpoints&lt;br /&gt;diag&lt;br /&gt;oraInventory&lt;/blockquote&gt;  &lt;br /&gt;&lt;br /&gt;So choose it wisely:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100221.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100221.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;9. OS groups:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100452.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100452.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;10.The istaller is running checks:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100507.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100507.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;11. Check results:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100517.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100517.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;At this stage all the kernel errors and missing packages will appeare, U can then fix them (change kernel params, install needed pkg.) and use the &quot;Check Agin&quot; button.&lt;br /&gt;&lt;br /&gt;12. In the end if there are still error that can be ignored use the &quot;Ignore All&quot; check box:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100537.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100537.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;13. Summery:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100554.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100554.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;14. U can save the Summery to a response file for latter use in a silent install:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100641.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100641.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;15. Install stages:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100704.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_100704.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;  &lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_101157.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_101157.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_101648.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_101648.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_101757.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_101757.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_101815.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_101815.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;16. Now run has &quot;root&quot; the script:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_102103.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_102103.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;17. That&#39;s it installation ended successfully:&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_103121.png&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 600px; height: 460px;&quot; src=&quot;http://buzznt.fatcow.com/oracle/images/2009-10-27_103121.png&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The installation is completed, the next step is to create the DB - I did it using the &quot;dbca&quot; in the next post.</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/5781214586961275755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/5781214586961275755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/5781214586961275755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/5781214586961275755'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2009/11/installing-oracle-11gr2-on-centos-5.html' title='Installing Oracle 11gR2 on CentOS 5'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11844393.post-4761354526117478280</id><published>2009-06-04T22:00:00.000+03:00</published><updated>2009-06-04T22:00:43.880+03:00</updated><title type='text'>The Story of Stuff with Annie Leonard</title><content type='html'>&lt;a href=&quot;http://www.storyofstuff.com/&quot;&gt;The Story of Stuff with Annie Leonard&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://buzznt.blogspot.com/feeds/4761354526117478280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/11844393/4761354526117478280' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/4761354526117478280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11844393/posts/default/4761354526117478280'/><link rel='alternate' type='text/html' href='http://buzznt.blogspot.com/2009/06/story-of-stuff-with-annie-leonard.html' title='The Story of Stuff with Annie Leonard'/><author><name>buzznt</name><uri>http://www.blogger.com/profile/00017278444232800073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>