IP Library Granted Patent US 12,314,229
Granted Patent B2
US 12,314,229 · App. 18/236,775 · Granted May 27, 2025

Tracking row and object database activity into block level heatmaps

Inventors: Vineet Marwah (San Ramon, CA); Sujatha Muthulingam (Sunnyvale, CA); Amit Ganesh (San Jose, CA)
Assignee: Oracle International Corporation
G06F16/185G06F3/0649G06F16/113G06F16/21G06F16/217G06F16/22G06F16/27
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,314,229
App. No.
18/236,775
Granted
May 27, 2025
Kind
B2
Abstract

A method, apparatus, and system for tracking row and object database activity into block level heatmaps is provided. Database activity including reads, writes, and creates can be tracked by a database management system at the finest possible level of granularity, or the row and object level. To efficiently record the tracked database activity, a two-part structure is described for writing the activity into heatmaps. A hierarchical in-memory component may use a dynamically allocated sparse pool of bitmap blocks. Periodically, the in-memory component is persisted to a stored representation component, sharable with multiple database instances, which may include consolidated last access times and/or a history of heatmap snapshots to reflect access over time. The heatmaps may then be externalized to database users and applications to provide and support a variety of features.

Claims (34)

1. A method comprising:

persisting a plurality of map blocks, wherein each map block of the plurality of map blocks contains a mapping from each LBA range of a respective plurality of ranges of logical block addresses (LBAs) to a respective statistics block that contains access activity statistics that include an access timestamp for each data block of a plurality of data blocks in the LBA range, wherein said plurality of data blocks store database data for a database object in a database, wherein activity tracked by said access activity statistics includes read accesses;

accessing a plurality of statistic blocks that are indicated by said mappings in a subset plurality of the persisted plurality of man blocks,

detecting, based on said plurality of statistic blocks that are indicated by said mappings in said subset plurality of the persisted plurality of map blocks and without accessing a plurality of data blocks in the database object, whether the database object has or has not been accessed since a particular time; and

archiving the plurality of data blocks in response to said detecting whether the database object has or has not been accessed.

2. The method of claim 1 wherein said persisting the plurality of map blocks comprises storing the plurality of map blocks in at least one selected from a group consisting of:

a tablespace that stores the plurality of data blocks,

a tablespace that does not store the plurality of data blocks, and

a tablespace that stores a heatmap.

3. The method of claim 1 wherein said persisting the plurality of map blocks comprises contiguously storing the plurality of map blocks in a single allocation stripe.

4. The method of claim 1 wherein said persisting the plurality of map blocks comprises storing the plurality of map blocks in multiple allocation stripes.

5. The method of claim 1 wherein said persisting the plurality of map blocks comprises persisting an index that identifies the plurality of map blocks.

6. The method of claim 1 wherein said access activity statistics comprises a last access timestamp for each data block of said plurality of data blocks in the LBA range.

7. The method of claim 6 wherein said last access timestamp for each data block comprises a last read timestamp.

8. The method of claim 6 wherein said last access timestamp for each data block consists of one selected from the group consisting of: 32 bits and 64 bits.

9. The method of claim 1 wherein said access activity statistics consists of a fixed size record for each data block of said plurality of data blocks in the LBA range.

10. The method of claim 1 further comprising storing the plurality of map blocks in volatile memory.

11. One or more non-transitory computer-readable media storing instructions that, when executed by one or more processors, cause:

persisting a plurality of map blocks, wherein each map block of the plurality of map blocks contains a mapping from each LBA range of a respective plurality of ranges of logical block addresses (LBAs) to a respective statistics block that contains access activity statistics that include an access timestamp for each data block of a plurality of data blocks in the LBA range, wherein said plurality of data blocks store database data for a database object in a database, wherein activity tracked by said access activity statistics includes read accesses;

accessing a plurality of statistic blocks that are indicated by said mappings in a subset plurality of the persisted plurality of map blocks,

detecting, based on said plurality of statistic blocks that are indicated by said mappings in said subset plurality of the persisted plurality of map blocks and without accessing a plurality of data blocks in the database object, whether the database object has or has not been accessed since a particular time; and

archiving the plurality of data blocks in response to said detecting whether the database object has or has not been accessed.

12. The one or more non-transitory computer-readable media of claim 11 wherein said persisting the plurality of map blocks comprises storing the plurality of map blocks in at least one selected from a group consisting of:

a tablespace that stores the plurality of data blocks,

a tablespace that does not store the plurality of data blocks, and

a tablespace that stores a heatmap.

13. The one or more non-transitory computer-readable media of claim 11 wherein said persisting the plurality of map blocks comprises contiguously storing the plurality of map blocks in a single allocation stripe.

14. The one or more non-transitory computer-readable media of claim 11 wherein said persisting the plurality of map blocks comprises storing the plurality of map blocks in multiple allocation stripes.

15. The one or more non-transitory computer-readable media of claim 11 wherein said persisting the plurality of map blocks comprises persisting an index that identifies the plurality of map blocks.

16. The one or more non-transitory computer-readable media of claim 11 wherein said access activity statistics comprises a last access timestamp for each data block of said plurality of data blocks in the LBA range.

17. The one or more non-transitory computer-readable media of claim 16 wherein said last access timestamp for each data block comprises a last read timestamp.

18. The one or more non-transitory computer-readable media of claim 16 wherein said last access timestamp for each data block consists of one selected from the group consisting of: 32 bits and 64 bits.

19. The one or more non-transitory computer-readable media of claim 11 wherein said access activity statistics consists of a fixed size record for each data block of said plurality of data blocks in the LBA range.

20. The one or more non-transitory computer-readable media of claim 11 the instructions further cause storing the plurality of map blocks in volatile memory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 22, 2023
From: MARWAH, VINEET; MUTHULINGAM, SUJATHA; GANESH, AMIT
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 064669/0540 →
Continuity (4)
Continuation 16861180 · Apr 28, 2020
Continuation 13804884 · Mar 14, 2013
Provisional Application 61707685 · Sep 28, 2012
Related Publication 20230394012A1 · Dec 7, 2023
References Cited (40)
US 6223344B1 · Gerard · 2001 [cited by examiner]
US 8547379B2 · Pacheco · 2013 [cited by examiner]
US 8700674B2 · Bear · 2014 [cited by examiner]
US 8862837B1 · Marshak · 2014 [cited by examiner]
US 8994755B2 · Robinson · 2015 [cited by examiner]
US 9275063B1 · Natanzon · 2016 [cited by applicant]
US 10089637B2 · Bredenberg · 2018 [cited by examiner]
US 10817185B1 · Dumitru · 2020 [cited by examiner]
US 11556505B2 · Marwah · 2023 [cited by examiner]
US 20020124137A1 · Ulrich · 2002 [cited by examiner]
US 20020138559A1 · Ulrich · 2002 [cited by examiner]
US 20020169827A1 · Ulrich · 2002 [cited by examiner]
US 20020191311A1 · Ulrich · 2002 [cited by examiner]
US 20020194523A1 · Ulrich · 2002 [cited by examiner]
US 20060061795A1 · Walmsley · 2006 [cited by examiner]
US 20060101052A1 · Netrakanti · 2006 [cited by examiner]
US 20070088912A1 · Mukherjee · 2007 [cited by examiner]
US 20070134662A1 · Singh · 2007 [cited by examiner]
US 20090198729A1 · Gong · 2009 [cited by examiner]
US 20100070535A1 · Irun-Briz · 2010 [cited by examiner]
US 20100287178A1 · Lambert · 2010 [cited by examiner]
US 20110016157A1 · Bear · 2011 [cited by examiner]
US 20110179066A1 · Cardno · 2011 [cited by examiner]
US 20110282830A1 · Malige · 2011 [cited by examiner]
US 20120137059A1 · Yang · 2012 [cited by examiner]
US 20120137061A1 · Yang · 2012 [cited by examiner]
US 20120144098A1 · Yang · 2012 [cited by examiner]
US 20120144099A1 · Yang · 2012 [cited by examiner]
US 20120173477A1 · Coutts · 2012 [cited by examiner]
US 20120260040A1 · Mallge · 2012 [cited by examiner]
US 20130155118A1 · Robinson · 2013 [cited by examiner]
US 20130169666A1 · Pacheco · 2013 [cited by examiner]
US 20130325326A1 · Blumenberg · 2013 [cited by examiner]
US 20130339298A1 · Muller · 2013 [cited by examiner]
US 20130339299A1 · Muller · 2013 [cited by examiner]
US 20140033120A1 · Bental · 2014 [cited by examiner]
US 20140095438A1 · Marwah · 2014 [cited by examiner]
US 20140095450A1 · Marwah · 2014 [cited by examiner]
US 20140244623A1 · King · 2014 [cited by examiner]
US 20150170382A1 · Bhatia · 2015 [cited by examiner]