PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL 9.0 में डेटाबेस निर्माण समय कैसे प्राप्त करें?

PostgreSQL में, डेटाबेस निर्माण समय किसी भी pg_catalogs में संग्रहीत नहीं होता है। तो सवाल उठता है, हमें कैसे पता चलेगा कि डेटाबेस कब बनाया गया था।

प्रत्येक डेटाबेस के लिए, $PGDATA/base . के अंतर्गत डेटाबेस-ओआईडी संख्या के साथ एक निर्देशिका बनाई जाती है OID's,OID_fsm,OID_vm, PG_VERSION के सेट के साथ प्रत्येक ऑब्जेक्ट के लिए फ़ाइलें (टेबल्स/इंडेक्स/व्यू/आदि,)।

डेटाबेस-स्तर पर किए गए परिवर्तनों के अनुसार प्रत्येक OID,OID_fsm,OID_vm, फ़ाइलें अपडेट की जाएंगी। हालाँकि, PG_VERSION फ़ाइल डेटाबेस में किए गए किसी भी परिवर्तन पर कभी भी अपडेट नहीं होगी। इसलिए, हम डेटाबेस निर्माण समय के रूप में PG_VERSION फ़ाइल के टाइमस्टैम्प का उपयोग करने जा रहे हैं। मुझे विश्वास है कि PG_VERSION टाइमस्टैम्प बदलने की संभावना होगी, लेकिन मुझे यकीन नहीं है कि यह परिवर्तन किस स्थिति में होगा।

PG_VERSION का टाइमस्टैम्प प्राप्त करने के लिए, मुझे कुछ ऐसा चाहिए जो PG इंस्टेंस-स्तर पर OS कमांड निष्पादित करे। इसलिए, मैंने अपने एक सहयोगी विभोर कुमार द्वारा बनाए गए pl/perlu फ़ंक्शन का उपयोग किया।

http://vibhork.blogspot.com/2011/04/plperl-functions-for-getting-number-of.html

pl/perlu समारोह

CREATE OR REPLACE FUNCTION execute_shell(text) returns setof text
as
$$
$output=`$_[0] 2>&1`;
@output=split(/[nr]+/,$output);
foreach $out (@output)
{ return_next($out);
}
return undef;
$$ language plperlu;

और, डेटाबेस oid प्राप्त करने के लिए एक फ़ंक्शन।

CREATE OR REPLACE FUNCTION public.get_pg_version_loc(dbname varchar) RETURNS text AS
$body$
DECLARE
dbname ALIAS FOR $1;
data_dir text;
db_oid text;
os_execute text;
BEGIN
SELECT INTO db_oid oid from pg_database where datname = dbname;
show data_directory into data_dir;
os_execute := 'stat -c "%y" '||data_dir||'/base/'||db_oid||'/PG_VERSION';
return os_execute;
END;
$body$
LANGUAGE 'plpgsql';

आउटपुट:

=# select datname,execute_shell(get_pg_version_loc(datname::text)) as "DB_Createion_Time"
-# from pg_database where datname not in ('template0','template1');
datname | DB_Createion_Time
--------------+-------------------------------------
postgres | 2011-01-10 21:48:37.222016571 +0530
provider | 2011-05-26 11:40:14.253434477 +0530
pgbench_test | 2011-08-14 16:52:21.689198728 +0530
pgpool | 2011-08-26 12:30:19.864134713 +0530
(4 rows)

अधिक सामान के साथ वापस आऊंगा :)। यदि कोई हो तो अपनी टिप्पणी पोस्ट करें, उनकी अत्यधिक सराहना की जाएगी।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQLs कमांड लाइन उपयोगिता (psql) से कैसे बाहर निकलें

  2. PgAdmin4 चलाने का प्रयास करने में त्रुटि

  3. फ्लाई पर टेबल बनाने के लिए डेटाबेस डिज़ाइन

  4. पोस्टग्रेज में सिंगल यूजर मोड में टेबल बनाना

  5. PostgreSQL LIKE क्वेरी प्रदर्शन विविधताएं