Chcesz również upewnić się, że znaczniki daty i godziny każdej tabeli. Wyszukaj dowolne metadane w systemie dla każdej tabeli, uporządkuj listę według daty ostatniej aktualizacji i wyświetl dane wyjściowe w kolejności malejącej według daty. Możesz również sprawdzić rozmiar stołu pod kątem nawet niewielkiej zmiany rozmiaru.
Na przykład w MySQL 5.x masz information_schema.tables, które wyglądają tak:
mysql> desc information_schema.tables;
+-----------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------------+------+-----+---------+-------+
| TABLE_CATALOG | varchar(512) | NO | | | |
| TABLE_SCHEMA | varchar(64) | NO | | | |
| TABLE_NAME | varchar(64) | NO | | | |
| TABLE_TYPE | varchar(64) | NO | | | |
| ENGINE | varchar(64) | YES | | NULL | |
| VERSION | bigint(21) unsigned | YES | | NULL | |
| ROW_FORMAT | varchar(10) | YES | | NULL | |
| TABLE_ROWS | bigint(21) unsigned | YES | | NULL | |
| AVG_ROW_LENGTH | bigint(21) unsigned | YES | | NULL | |
| DATA_LENGTH | bigint(21) unsigned | YES | | NULL | |
| MAX_DATA_LENGTH | bigint(21) unsigned | YES | | NULL | |
| INDEX_LENGTH | bigint(21) unsigned | YES | | NULL | |
| DATA_FREE | bigint(21) unsigned | YES | | NULL | |
| AUTO_INCREMENT | bigint(21) unsigned | YES | | NULL | |
| CREATE_TIME | datetime | YES | | NULL | |
| UPDATE_TIME | datetime | YES | | NULL | |
| CHECK_TIME | datetime | YES | | NULL | |
| TABLE_COLLATION | varchar(32) | YES | | NULL | |
| CHECKSUM | bigint(21) unsigned | YES | | NULL | |
| CREATE_OPTIONS | varchar(255) | YES | | NULL | |
| TABLE_COMMENT | varchar(2048) | NO | | | |
+-----------------+---------------------+------+-----+---------+-------+
21 rows in set (0.01 sec)
Kolumna UPDATE_TIME zapisuje ostatni raz, kiedy INSERT, UPDATE lub DELETE zostały ostatnio zastosowane do tabeli. Możesz uruchomić takie zapytania, aby dowiedzieć się, kiedy ostatnio uzyskiwano dostęp do każdej bazy danych:
Ostatni dostęp do tabeli w każdej bazie danych:
SELECT table_schema,MAX(update_time) last_accessed
FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','mysql')
AND update_time IS NOT NULL
GROUP BY table_schema;
Ostatni dostęp do tabeli w dowolnej bazie danych:
SELECT MAX(update_time) last_accessed FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','mysql');
Ostatnie 10 dat dostępu do tabeli:
SELECT * FROM
(SELECT * FROM
(SELECT last_accessed,COUNT(1) access_count
FROM (SELECT DATE(update_time) last_accessed
FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','mysql')
AND update_time IS NOT NULL) A
GROUP BY last_accessed) AA
ORDER BY last_accessed DESC) AAA
LIMIT 10;
To tylko kilka przykładów, jak uzyskać takie metadane z MySQL. Jestem pewien, że Oracle i SQL Server mają podobne lub lepsze metody.
Po upewnieniu się, jak często lub rzadko uzyskuje się dostęp do bazy danych (lub schematu), należy ręcznie zrzucić / wyeksportować przestarzałe bazy danych wraz z kopiami samego schematu oprócz danych. Przepraszam, że moja odpowiedź nie jest DB agnostyczna. SQLServer i Oracle DBA również powinny wyrazić swoje odpowiedzi tutaj, ponieważ koncepcja schematu będącego kolekcją w instancji bazy danych jest niewyraźna w MySQL, ale bardzo ściśle przestrzegana w SQLServer i Oracle.