Kami memiliki lingkungan "organik", artinya orang menumpuk kode pada kode selama sepuluh tahun dengan pengawasan atau dokumentasi minimal. Server yang saya gunakan memiliki beberapa basis data yang saya yakin tidak lagi digunakan; Saya ingin menghapusnya dan meninggalkan hanya tiga yang benar-benar saya gunakan.
Pada kondisi ekstrim yang gegabah, saya bisa menonaktifkan basis data ini dan menunggu seseorang menjerit; di sisi lain aku bisa membiarkan mereka berjalan selamanya "untuk berjaga-jaga". Langkah apa yang Anda anggap berharga dalam mengidentifikasi apakah server sedang digunakan, dan bagaimana?
Juga, langkah-langkah apa yang akan Anda rekomendasikan untuk memastikan bahwa, ketika seseorang bergerak maju dalam sistem penonaktifan, bahwa mereka tetap dapat dibalik untuk periode waktu tertentu (misalnya, mengganti nama objek daripada menghapusnya langsung)?
Terima kasih!
sumber
Jawaban:
Anda juga ingin memastikan perangko datetime dari setiap tabel. Cari metadata apa saja di sistem untuk setiap tabel, pesan daftar seperti itu menurut datetime terakhir diperbarui, dan tampilkan output dalam urutan desc pada datetime. Anda juga bisa memeriksa ukuran tabel meskipun ada sedikit perubahan ukuran.
Misalnya, di MySQL 5.x, Anda memiliki information_schema.tables yang terlihat seperti ini:
Kolom UPDATE_TIME mencatat kapan terakhir kali INSERT, UPDATE, atau DELETE terakhir diterapkan pada tabel. Anda bisa menjalankan kueri seperti ini untuk mencari tahu kapan setiap basis data terakhir diakses:
Terakhir kali tabel diakses di setiap basis data:
Terakhir kali tabel diakses di basis data apa pun:
10 tanggal terakhir sebuah tabel diakses:
Ini hanya beberapa contoh cara mendapatkan metadata dari MySQL. Saya yakin Oracle dan SQL Server memiliki metode yang sama atau lebih baik.
Setelah Anda yakin seberapa sering atau jarang suatu basis data (atau skema) diakses, Anda harus secara manual membuang / mengekspor basis data yang berusia bersama dengan salinan skema itu sendiri selain dari data. Maaf, jawaban saya bukan DB agnostik. SQLServer dan Oracle DBAs juga harus menyuarakan jawaban mereka di sini, karena konsep skema yang menjadi kumpulan dalam instance database dikaburkan di MySQL tetapi sangat ketat diikuti dalam SQLServer dan Oracle.
sumber
SELECT S.name, MAX(T.modify_date) AS MostRecentDataModification FROM sys.schemas AS S INNER JOIN sys.tables AS T ON S.schema_id = T.schema_id GROUP BY S.name
Anda bisa mencoba membuat jejak yang hanya menangkap koneksi dan ke basis data apa mereka terhubung. Saya akan membiarkan ini berjalan sebentar dan kemudian memastikan tidak ada yang terhubung dengannya.
Satu masalah dengan itu adalah jika Anda memiliki beberapa kode yang membuka pada master db tetapi memanggil DB lain dalam kode. Saya tidak yakin seberapa buruk kode ini yang menunjuk ke DB Anda.
Saya juga akan menanyakan semua pekerjaan Anda dan memastikan tidak ada yang menunjuk ke DB itu
Anda juga dapat menggunakan audit SQL jika Anda memiliki versi SQL yang tepat (perusahaan 2008 R2).
Anda juga bisa menggunakan pemicu masuk untuk memperbarui tabel ketika seseorang masuk ke DB itu. Ini akan menunjukkan kepada Anda jika ada sesuatu yang terhubung ke DB itu.
sumber
Di SQL Server, Anda dapat mengambil basis data " offline " yang membuat basis data tetap ada, tetapi membuat koneksi ke sana melalui kode tidak dimungkinkan. Jika database "offline", ia masih tetap tersedia dan dapat dibalik dalam beberapa menit.
Pada pekerjaan terakhir saya, kami memiliki beberapa produk yang beroperasi selama beberapa bulan per tahun, jadi mematikan, atau offline, database selama berbulan-bulan pada suatu waktu tidak akan diperhatikan oleh orang-orang yang bekerja dengan produk itu. Sebagai salah satu contoh, salah satu produk melibatkan formulir W-2, sehingga 98% bisnis terjadi pada bulan Januari dan Februari (untuk sebagian besar perusahaan, data tidak tersedia hingga minggu pertama bulan Januari, dan batas waktu peraturan federal untuk pengajuan informasi adalah hari kerja terakhir di bulan Januari). Server web biasanya dimatikan dari Mei / Juni hingga Desember.
Di perusahaan itu, kami memiliki spreadsheet dengan "pemilik" database - satu orang yang bertanggung jawab atas produk tersebut. Sementara orang lain dapat membuat pembaruan pada struktur tabel, "pemilik" adalah orang yang tepat ketika ada pertanyaan yang harus diajukan. Jika pemilik meninggalkan perusahaan (jarang sampai tahun lalu), seseorang akan ditugaskan untuk menjadi pemilik baru sebelum mereka pergi.
Di perusahaan lain, kami telah mengambil basis data offline selama seperempat, jika mereka tetap offline tanpa melanggar (seperti pelaporan bulan / triwulanan), mereka dicadangkan untuk terakhir kalinya dan dihapus. Ini memungkinkan seseorang untuk kemudian kembali dan mengembalikan database (yang membutuhkan beberapa menit) untuk situasi yang memiliki cerita seperti "oh, itu untuk proyek jones yang harus kami sisihkan sementara kami menyelesaikan proyek fred."
sumber