{"id":10354,"date":"2017-07-13T13:19:58","date_gmt":"2017-07-13T11:19:58","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/"},"modified":"2017-07-13T13:19:58","modified_gmt":"2017-07-13T11:19:58","slug":"did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/","title":{"rendered":"Did you ever wonder what PostgreSQL is executing in the background when you use the psql shortcuts?"},"content":{"rendered":"<p>When you work with PostgreSQL you are probably using <a href=\"https:\/\/www.postgresql.org\/docs\/current\/static\/app-psql.html\" target=\"_blank\" rel=\"noopener\">psql<\/a> and when you use psql you are probably using one or more of the shortcuts psql is providing. These shortcuts provide a quick and convenient way to get meta data out of the PostgreSQL catalog which safes you from a lot of typing and typos. The only issue with that is that it hides the statements which are executed to get the meta data so you don&#8217;t know were the information is actually coming from. Of course you can check either the <a href=\"https:\/\/www.postgresql.org\/docs\/current\/static\/information-schema.html\" target=\"_blank\" rel=\"noopener\">information_schema<\/a> or the PostgreSQL <a href=\"https:\/\/www.postgresql.org\/docs\/current\/static\/catalogs.html\" target=\"_blank\" rel=\"noopener\">system catalog<\/a> and then write your own queries for what you are looking for. But, hey, there is a much easier way.<\/p>\n<p><!--more--><\/p>\n<p>Lets start by creating a dummy table and an index:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create table dummy ( a int primary key, b varchar(50), c timestamp with time zone );\nCREATE TABLE\npostgres=# create index i_dummy on dummy ( c );\nCREATE INDEX\npostgres=# \n<\/pre>\n<p>The fastest way to get the definition of the table is:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# d dummy\n             Table \"public.dummy\"\n Column |           Type           | Modifiers \n--------+--------------------------+-----------\n a      | integer                  | not null\n b      | character varying(50)    | \n c      | timestamp with time zone | \nIndexes:\n    \"dummy_pkey\" PRIMARY KEY, btree (a)\n    \"i_dummy\" btree (c)\n<\/pre>\n<p>As you can see you do not only get the definition of the table itself but also information about the primary key and the index. But where does this information come from? As information about the index and the primary key is displayed as well the information must be coming from more than one catalog table, but which? Quite easy when you check the options of psql:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\npostgres@pgbox:\/home\/postgres\/ [PG962] psql --help | grep \"hidden\"\n  -E, --echo-hidden        display queries that internal commands generate\n<\/pre>\n<p>When you fire up psql with this option all the internal statements will be displayed when you use a short cut:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres@pgbox:\/home\/postgres\/ [PG962] psql -E postgres\npostgres=# d dummy\n********* QUERY **********\nSELECT c.oid,\n  n.nspname,\n  c.relname\nFROM pg_catalog.pg_class c\n     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\nWHERE c.relname ~ '^(dummy)$'\n  AND pg_catalog.pg_table_is_visible(c.oid)\nORDER BY 2, 3;\n**************************\n\n********* QUERY **********\nSELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, c.relhasoids, '', c.reltablespace, CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relpersistence, c.relreplident\nFROM pg_catalog.pg_class c\n LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)\nWHERE c.oid = '16679';\n**************************\n\n********* QUERY **********\nSELECT a.attname,\n  pg_catalog.format_type(a.atttypid, a.atttypmod),\n  (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)\n   FROM pg_catalog.pg_attrdef d\n   WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef),\n  a.attnotnull, a.attnum,\n  (SELECT c.collname FROM pg_catalog.pg_collation c, pg_catalog.pg_type t\n   WHERE c.oid = a.attcollation AND t.oid = a.atttypid AND a.attcollation  t.typcollation) AS attcollation,\n  NULL AS indexdef,\n  NULL AS attfdwoptions\nFROM pg_catalog.pg_attribute a\nWHERE a.attrelid = '16679' AND a.attnum &gt; 0 AND NOT a.attisdropped\nORDER BY a.attnum;\n**************************\n\n********* QUERY **********\nSELECT c2.relname, i.indisprimary, i.indisunique, i.indisclustered, i.indisvalid, pg_catalog.pg_get_indexdef(i.indexrelid, 0, true),\n  pg_catalog.pg_get_constraintdef(con.oid, true), contype, condeferrable, condeferred, i.indisreplident, c2.reltablespace\nFROM pg_catalog.pg_class c, pg_catalog.pg_class c2, pg_catalog.pg_index i\n  LEFT JOIN pg_catalog.pg_constraint con ON (conrelid = i.indrelid AND conindid = i.indexrelid AND contype IN ('p','u','x'))\nWHERE c.oid = '16679' AND c.oid = i.indrelid AND i.indexrelid = c2.oid\nORDER BY i.indisprimary DESC, i.indisunique DESC, c2.relname;\n**************************\n\n********* QUERY **********\nSELECT pol.polname,\nCASE WHEN pol.polroles = '{0}' THEN NULL ELSE array_to_string(array(select rolname from pg_roles where oid = any (pol.polroles) order by 1),',') END,\npg_catalog.pg_get_expr(pol.polqual, pol.polrelid),\npg_catalog.pg_get_expr(pol.polwithcheck, pol.polrelid),\nCASE pol.polcmd \nWHEN 'r' THEN 'SELECT'\nWHEN 'a' THEN 'INSERT'\nWHEN 'w' THEN 'UPDATE'\nWHEN 'd' THEN 'DELETE'\nWHEN '*' THEN 'ALL'\nEND AS cmd\nFROM pg_catalog.pg_policy pol\nWHERE pol.polrelid = '16679' ORDER BY 1;\n**************************\n\n********* QUERY **********\nSELECT c.oid::pg_catalog.regclass FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid=i.inhparent AND i.inhrelid = '16679' ORDER BY inhseqno;\n**************************\n\n********* QUERY **********\nSELECT c.oid::pg_catalog.regclass FROM pg_catalog.pg_class c, pg_catalog.pg_inherits i WHERE c.oid=i.inhrelid AND i.inhparent = '16679' ORDER BY c.oid::pg_catalog.regclass::pg_catalog.text;\n**************************\n\n             Table \"public.dummy\"\n Column |           Type           | Modifiers \n--------+--------------------------+-----------\n a      | integer                  | not null\n b      | character varying(50)    | \n c      | timestamp with time zone | \nIndexes:\n    \"dummy_pkey\" PRIMARY KEY, btree (a)\n    \"i_dummy\" btree (c)\n<\/pre>\n<p>Here you go. Quite a lot of stuff is happening in the background and you can exactly see what it is. This is a great way to get known to the catalog. When you are already inside psql and want to switch the display of the hidden stuff to on you can do that as well:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# set ECHO_HIDDEN on\npostgres=# d dummy\n********* QUERY **********\nSELECT c.oid,\n  n.nspname,\n  c.relname\nFROM pg_catalog.pg_class c\n     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace\nWHERE c.relname ~ '^(dummy)$'\n  AND pg_catalog.pg_table_is_visible(c.oid)\nORDER BY 2, 3;\n**************************\n\n...\n<\/pre>\n<p>When you want to make this permanent add it to your <a href=\"https:\/\/www.postgresql.org\/docs\/current\/static\/app-psql.html\" target=\"_blank\" rel=\"noopener\">.psqlrc<\/a> (scroll down to the &#8220;Files&#8221; section). Have fun &#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When you work with PostgreSQL you are probably using psql and when you use psql you are probably using one or more of the shortcuts psql is providing. These shortcuts provide a quick and convenient way to get meta data out of the PostgreSQL catalog which safes you from a lot of typing and typos. [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[77],"type_dbi":[],"class_list":["post-10354","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","tag-postgresql"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Did you ever wonder what PostgreSQL is executing in the background when you use the psql shortcuts? - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Did you ever wonder what PostgreSQL is executing in the background when you use the psql shortcuts?\" \/>\n<meta property=\"og:description\" content=\"When you work with PostgreSQL you are probably using psql and when you use psql you are probably using one or more of the shortcuts psql is providing. These shortcuts provide a quick and convenient way to get meta data out of the PostgreSQL catalog which safes you from a lot of typing and typos. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-07-13T11:19:58+00:00\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\\\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"Did you ever wonder what PostgreSQL is executing in the background when you use the psql shortcuts?\",\"datePublished\":\"2017-07-13T11:19:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\\\/\"},\"wordCount\":322,\"commentCount\":0,\"keywords\":[\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\\\/\",\"name\":\"Did you ever wonder what PostgreSQL is executing in the background when you use the psql shortcuts? - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2017-07-13T11:19:58+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Did you ever wonder what PostgreSQL is executing in the background when you use the psql shortcuts?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\\\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\\\/\\\/x.com\\\/westermanndanie\"],\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/daniel-westermann\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Did you ever wonder what PostgreSQL is executing in the background when you use the psql shortcuts? - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/","og_locale":"en_US","og_type":"article","og_title":"Did you ever wonder what PostgreSQL is executing in the background when you use the psql shortcuts?","og_description":"When you work with PostgreSQL you are probably using psql and when you use psql you are probably using one or more of the shortcuts psql is providing. These shortcuts provide a quick and convenient way to get meta data out of the PostgreSQL catalog which safes you from a lot of typing and typos. [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/","og_site_name":"dbi Blog","article_published_time":"2017-07-13T11:19:58+00:00","author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"Did you ever wonder what PostgreSQL is executing in the background when you use the psql shortcuts?","datePublished":"2017-07-13T11:19:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/"},"wordCount":322,"commentCount":0,"keywords":["PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/","url":"https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/","name":"Did you ever wonder what PostgreSQL is executing in the background when you use the psql shortcuts? - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2017-07-13T11:19:58+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/did-you-ever-wonder-what-postgresql-is-executing-in-the-background-when-you-use-the-psql-shortcuts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Did you ever wonder what PostgreSQL is executing in the background when you use the psql shortcuts?"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/10354","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=10354"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/10354\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=10354"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=10354"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=10354"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=10354"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}