{"id":7021,"date":"2016-02-03T16:50:32","date_gmt":"2016-02-03T15:50:32","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/edb-postgres-advanced-server-9-5-new-features-profiles\/"},"modified":"2016-02-03T16:50:32","modified_gmt":"2016-02-03T15:50:32","slug":"edb-postgres-advanced-server-9-5-new-features-profiles","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/edb-postgres-advanced-server-9-5-new-features-profiles\/","title":{"rendered":"EDB Postgres Advanced Server 9.5 new features &#8211; Profiles"},"content":{"rendered":"<p>The just released version of EDB Postgres Advanced Server 9.5 introduces profiles very much the same as in Oracle. Lets have a look at it. <\/p>\n<p>As in Oracle there is a default profile:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5445) [postgres] &gt; x\nExpanded display is on.\n(enterprisedb@[local]:5445) [postgres] &gt; select * from edb_profile;\n-[ RECORD 1 ]-----------+--------\nprfname                 | default\nprffailedloginattempts  | -2\nprfpasswordlocktime     | -2\nprfpasswordlifetime     | -2\nprfpasswordgracetime    | -2\nprfpasswordreusetime    | -2\nprfpasswordreusemax     | -2\nprfpasswordverifyfuncdb | NULL\nprfpasswordverifyfunc   | NULL\n<\/pre>\n<p>You can also query the dba_profiles view exactly as in Oracle:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5445) [postgres] &gt; x\nExpanded display is off.\n(enterprisedb@[local]:5445) [postgres] &gt; select * from dba_profiles;\n profile |      resource_name       | resource_type |   limit   | common \n---------+--------------------------+---------------+-----------+--------\n DEFAULT | FAILED_LOGIN_ATTEMPTS    | PASSWORD      | UNLIMITED | NO\n DEFAULT | PASSWORD_GRACE_TIME      | PASSWORD      | UNLIMITED | NO\n DEFAULT | PASSWORD_LIFE_TIME       | PASSWORD      | UNLIMITED | NO\n DEFAULT | PASSWORD_LOCK_TIME       | PASSWORD      | UNLIMITED | NO\n DEFAULT | PASSWORD_REUSE_MAX       | PASSWORD      | UNLIMITED | NO\n DEFAULT | PASSWORD_REUSE_TIME      | PASSWORD      | UNLIMITED | NO\n DEFAULT | PASSWORD_VERIFY_FUNCTION | PASSWORD      | NULL      | NO\n(7 rows)\n<\/pre>\n<p>In fact the dba_profiles view is just a view on top of edb_profile. You can verify this by:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5445) [postgres] &gt;  d+ dba_profiles                                                        \n                           View \"sys.dba_profiles\"\n    Column     |          Type          | Modifiers | Storage  | Description \n---------------+------------------------+-----------+----------+-------------\n profile       | character varying(128) |           | extended | \n resource_name | character varying(32)  |           | extended | \n resource_type | character varying(8)   |           | extended | \n limit         | character varying(128) |           | extended | \n common        | character varying(3)   |           | extended | \nView definition:\n SELECT\n        CASE\n...\n<\/pre>\n<p>When there are profiles the &#8220;create user\/role&#8221; syntax should have been extended, too:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5445) [postgres] &gt; h create user\nCommand:     CREATE USER\nDescription: define a new database role\nSyntax:\nCREATE USER name [ [ WITH ] option [ ... ] ]\n\nwhere option can be:\n\n      SUPERUSER | NOSUPERUSER\n    | CREATEDB | NOCREATEDB\n    | CREATEROLE | NOCREATEROLE\n    | CREATEUSER | NOCREATEUSER\n    | INHERIT | NOINHERIT\n    | LOGIN | NOLOGIN\n    | REPLICATION | NOREPLICATION\n    | CONNECTION LIMIT connlimit\n    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'\n    | VALID UNTIL 'timestamp'\n    | PROFILE profile_name      &lt;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n    | ACCOUNT { LOCK | UNLOCK }\n    | LOCK TIME &#039;timestamp&#039;\n    | PASSWORD EXPIRE [ AT &#039;timestamp&#039; ]\n    | IN ROLE role_name [, ...]\n    | IN GROUP role_name [, ...]\n    | ROLE role_name [, ...]\n    | ADMIN role_name [, ...]\n    | USER role_name [, ...]\n    | SYSID uid\n<\/pre>\n<p>I would expect that every new user gets the default profile if we do not specify one:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5445) [postgres] &gt; create user u1 login password 'u1';\nCREATE ROLE\n(enterprisedb@[local]:5445) [postgres] &gt; du+ u1\n                     List of roles\n Role name |   Attributes    | Member of | Description \n-----------+-----------------+-----------+-------------\n u1        | Profile default | {}        | \n<\/pre>\n<p>As expected. So lets play with a new profile:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5445) [postgres] &gt; create profile my_profile;\nCREATE PROFILE\nTime: 18.296 ms\n(enterprisedb@[local]:5445) [postgres] &gt; alter profile my_profile limit FAILED_LOGIN_ATTEMPTS 1;\nALTER PROFILE\nTime: 1.799 ms\n(enterprisedb@[local]:5445) [postgres] &gt; alter profile my_profile limit PASSWORD_LOCK_TIME 1;   \nALTER PROFILE\nTime: 0.979 ms\n(enterprisedb@[local]:5445) [postgres] &gt; alter profile my_profile limit PASSWORD_LIFE_TIME 1;\n<\/pre>\n<p>Pretty much the same as in Oracle. For a full list and a description of the limits check the <a href=\"http:\/\/www.enterprisedb.com\/docs\/en\/9.5\/eeguide\/Postgres_Plus_Enterprise_Edition_Guide.1.027.html\" target=\"_blank\" rel=\"noopener\">documentation<\/a>. <\/p>\n<p>Lets attach the new profile to our user:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5445) [postgres] &gt; alter user u1 profile my_profile ;\nALTER ROLE\nTime: 1.931 ms\n(enterprisedb@[local]:5445) [postgres] &gt; du u1\n               List of roles\n Role name |     Attributes     | Member of \n-----------+--------------------+-----------\n u1        | Profile my_profile | {}\n<\/pre>\n<p>An important point to understand is that profiles are not per database but per instance. Once a profile is created it is available in all databases:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5445) [postgres] &gt; c edb\nYou are now connected to database \"edb\" as user \"enterprisedb\".\n(enterprisedb@[local]:5445) [edb] &gt; select distinct profile from dba_profiles;\n  profile   \n------------\n DEFAULT\n MY_PROFILE\n(2 rows)\n\nTime: 63.333 ms\n(enterprisedb@[local]:5445) [edb] &gt; c postgres                               \nYou are now connected to database \"postgres\" as user \"enterprisedb\".\n(enterprisedb@[local]:5445) [postgres] &gt; select distinct profile from dba_profiles;\n  profile   \n------------\n DEFAULT\n MY_PROFILE\n(2 rows)\n\nTime: 2.130 ms\n\n(enterprisedb@[local]:5445) [postgres] &gt; create database db1;\nCREATE DATABASE\nTime: 1226.746 ms\n(enterprisedb@[local]:5445) [postgres] &gt; c db1\nYou are now connected to database \"db1\" as user \"enterprisedb\".\n(enterprisedb@[local]:5445) [db1] &gt; select distinct profile from dba_profiles;\n  profile   \n------------\n DEFAULT\n MY_PROFILE\n(2 rows)\n<\/pre>\n<p>When profiles are global what about a password verify function you may attach to the profile? Functions are per database, aren&#8217;t they? Lets create a simple function:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\ncreate or replace function my_func ( password in varchar(30) ) return boolean\nis\nbegin\n  if ( length (password) &lt; 5 )\n  then\n    raise_application_error ( -20001, &#039;to short&#039;);\n  end if;\n  return true;\nend my_func;\n\/\n<\/pre>\n<p>And then assign this function to the profile:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5445) [postgres] &gt; df\n                             List of functions\n Schema |  Name   | Result data type |    Argument data types     |  Type  \n--------+---------+------------------+----------------------------+--------\n public | my_func | boolean          | password character varying | normal\n(1 row)\n\n(enterprisedb@[local]:5445) [postgres] &gt; alter profile my_profile limit password_verify_function my_func;\nERROR:  function my_func does not exist\nTime: 0.479 ms\n<\/pre>\n<p>Hm. The function clearly exists. The issue here is that there are some specific requirements for the password verify function:<\/p>\n<ul>\n<li>It needs to be owned by a super user<\/li>\n<li>It needs to be in the sys schema<\/li>\n<li>It needs to have the following signature: function_name (varchar2, varchar2, varchar2) return boolean <\/li>\n<\/ul>\n<p>Knowing this let&#8217;s try again with this function:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nCREATE OR REPLACE FUNCTION sys.my_func (username varchar2, password varchar2, old_password varchar2)  \nRETURN boolean IMMUTABLE  \nIS  \nBEGIN  \n  if ( length (password) &lt; 5 )  \n  then  \n    raise_application_error ( -20001, &#039;too short&#039;);  \n  end if;  \n  return true;  \nEND my_func;  \n<\/pre>\n<p>To be sure lets set the owner of this function to a super user<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5445) [postgres] &gt; alter function my_func (varchar2,varchar2,varchar2) owner to enterprisedb;\nALTER FUNCTION\nTime: 0.311 ms\n<\/pre>\n<p>Do we succeed now?<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5445) [postgres] &gt; alter profile my_profile limit password_verify_function my_func;\nALTER PROFILE\nTime: 21.048 ms\n<\/pre>\n<p>Yes, much better. Lets do a simple test:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5445) [postgres] &gt; alter user u1 password 'u1';\nERROR:  EDB-20001: too short\nCONTEXT:  edb-spl function my_func(character varying,character varying,character varying) line 5 at procedure\/function invocation statement\nTime: 67.705 ms\n<\/pre>\n<p>Ok, now it really works. But what does happen if I am connected to another database where the password verify function does not exist?<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(enterprisedb@[local]:5445) [postgres] &gt; c edb\nYou are now connected to database \"edb\" as user \"enterprisedb\".\n(enterprisedb@[local]:5445) [edb] &gt; create user u2 password 'u2' profile my_profile;\nERROR:  password verify function is stored in database postgres\nHINT:  You must connect to this database in order to assign a password.\nTime: 0.644 ms\n(enterprisedb@[local]:5445) [edb] &gt; \n<\/pre>\n<p>Ok, at least the server is telling me where I need to connect to. <\/p>\n<p>This does not lock like a big new feature but it is another little piece that makes migrations from Oracle less problematic especially if there are requirements for password policies.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The just released version of EDB Postgres Advanced Server 9.5 introduces profiles very much the same as in Oracle. Lets have a look at it. As in Oracle there is a default profile: (enterprisedb@[local]:5445) [postgres] &gt; x Expanded display is on. (enterprisedb@[local]:5445) [postgres] &gt; select * from edb_profile; -[ RECORD 1 ]&#8212;&#8212;&#8212;&#8211;+&#8212;&#8212;&#8211; prfname | default&hellip;&nbsp;<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[4133],"tags":[713,25],"class_list":["post-7021","post","type-post","status-publish","format-standard","hentry","category-database","tag-enterprisedb","tag-security"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.4 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>EDB Postgres Advanced Server 9.5 new features - Profiles - dbi services | 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\/edb-postgres-advanced-server-9-5-new-features-profiles\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"EDB Postgres Advanced Server 9.5 new features - Profiles\" \/>\n<meta property=\"og:description\" content=\"The just released version of EDB Postgres Advanced Server 9.5 introduces profiles very much the same as in Oracle. Lets have a look at it. As in Oracle there is a default profile: (enterprisedb@[local]:5445) [postgres] &gt; x Expanded display is on. (enterprisedb@[local]:5445) [postgres] &gt; select * from edb_profile; -[ RECORD 1 ]-----------+-------- prfname | default&hellip;&nbsp;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/edb-postgres-advanced-server-9-5-new-features-profiles\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi services | Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/dbiservices\/\" \/>\n<meta property=\"article:published_time\" content=\"2016-02-03T15:50:32+00:00\" \/>\n<meta name=\"author\" content=\"Open source Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dbiservices\" \/>\n<meta name=\"twitter:site\" content=\"@dbiservices\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Open source Team\" \/>\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\\\/edb-postgres-advanced-server-9-5-new-features-profiles\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-postgres-advanced-server-9-5-new-features-profiles\\\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0b4548362cac3eeff8b3eaf329e3530a\"},\"headline\":\"EDB Postgres Advanced Server 9.5 new features &#8211; Profiles\",\"datePublished\":\"2016-02-03T15:50:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-postgres-advanced-server-9-5-new-features-profiles\\\/\"},\"wordCount\":356,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"keywords\":[\"EnterpriseDB\",\"Security\"],\"articleSection\":[\"Database\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-postgres-advanced-server-9-5-new-features-profiles\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-postgres-advanced-server-9-5-new-features-profiles\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-postgres-advanced-server-9-5-new-features-profiles\\\/\",\"name\":\"EDB Postgres Advanced Server 9.5 new features - Profiles - dbi services | Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2016-02-03T15:50:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-postgres-advanced-server-9-5-new-features-profiles\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-postgres-advanced-server-9-5-new-features-profiles\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-postgres-advanced-server-9-5-new-features-profiles\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"EDB Postgres Advanced Server 9.5 new features &#8211; Profiles\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi services Blog\",\"description\":\"#BeSharing\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"alternateName\":\"dbi Blog\",\"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\":\"Organization\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\",\"name\":\"dbi services\",\"alternateName\":\"dbi\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dbi-services-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dbi-services-logo.png\",\"width\":512,\"height\":512,\"caption\":\"dbi services\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/dbiservices\\\/\",\"https:\\\/\\\/x.com\\\/dbiservices\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/dbi-services\\\/\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/dbiservices\"],\"description\":\"Swiss IT consulting and services company specialised in efficient data infrastructures and platforms: databases, application servers, cloud, DevOps, digitalization, analytics, data quality and monitoring. Headquartered in Del\u00e9mont with offices in Nyon, Basel, Bern and Zurich.\",\"email\":\"info@dbi-services.com\",\"telephone\":\"+41 32 422 96 00\",\"legalName\":\"dbi services SA\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0b4548362cac3eeff8b3eaf329e3530a\",\"name\":\"Open source Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"caption\":\"Open source Team\"},\"description\":\"Posts published under the Open source Team account are collective contributions by the dbi services open infrastructure consultants. The practice covers open-source databases and platforms, PostgreSQL first of all, along with MySQL, MariaDB, and Linux, from architecture, replication, and high availability to performance tuning and operations under service level agreements, and contributes actively to the PostgreSQL community.\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/open-source-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"EDB Postgres Advanced Server 9.5 new features - Profiles - dbi services | 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\/edb-postgres-advanced-server-9-5-new-features-profiles\/","og_locale":"en_US","og_type":"article","og_title":"EDB Postgres Advanced Server 9.5 new features - Profiles","og_description":"The just released version of EDB Postgres Advanced Server 9.5 introduces profiles very much the same as in Oracle. Lets have a look at it. As in Oracle there is a default profile: (enterprisedb@[local]:5445) [postgres] &gt; x Expanded display is on. (enterprisedb@[local]:5445) [postgres] &gt; select * from edb_profile; -[ RECORD 1 ]-----------+-------- prfname | default&hellip;&nbsp;","og_url":"https:\/\/www.dbi-services.com\/blog\/edb-postgres-advanced-server-9-5-new-features-profiles\/","og_site_name":"dbi services | Blog","article_publisher":"https:\/\/www.facebook.com\/dbiservices\/","article_published_time":"2016-02-03T15:50:32+00:00","author":"Open source Team","twitter_card":"summary_large_image","twitter_creator":"@dbiservices","twitter_site":"@dbiservices","twitter_misc":{"Written by":"Open source Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/edb-postgres-advanced-server-9-5-new-features-profiles\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/edb-postgres-advanced-server-9-5-new-features-profiles\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0b4548362cac3eeff8b3eaf329e3530a"},"headline":"EDB Postgres Advanced Server 9.5 new features &#8211; Profiles","datePublished":"2016-02-03T15:50:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/edb-postgres-advanced-server-9-5-new-features-profiles\/"},"wordCount":356,"commentCount":0,"publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"keywords":["EnterpriseDB","Security"],"articleSection":["Database"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/edb-postgres-advanced-server-9-5-new-features-profiles\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/edb-postgres-advanced-server-9-5-new-features-profiles\/","url":"https:\/\/www.dbi-services.com\/blog\/edb-postgres-advanced-server-9-5-new-features-profiles\/","name":"EDB Postgres Advanced Server 9.5 new features - Profiles - dbi services | Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2016-02-03T15:50:32+00:00","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/edb-postgres-advanced-server-9-5-new-features-profiles\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/edb-postgres-advanced-server-9-5-new-features-profiles\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/edb-postgres-advanced-server-9-5-new-features-profiles\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"EDB Postgres Advanced Server 9.5 new features &#8211; Profiles"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi services Blog","description":"#BeSharing","publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"alternateName":"dbi Blog","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":"Organization","@id":"https:\/\/www.dbi-services.com\/blog\/#organization","name":"dbi services","alternateName":"dbi","url":"https:\/\/www.dbi-services.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2026\/09\/dbi-services-logo.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2026\/09\/dbi-services-logo.png","width":512,"height":512,"caption":"dbi services"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/dbiservices\/","https:\/\/x.com\/dbiservices","https:\/\/www.linkedin.com\/company\/dbi-services\/","https:\/\/www.youtube.com\/user\/dbiservices"],"description":"Swiss IT consulting and services company specialised in efficient data infrastructures and platforms: databases, application servers, cloud, DevOps, digitalization, analytics, data quality and monitoring. Headquartered in Del\u00e9mont with offices in Nyon, Basel, Bern and Zurich.","email":"info@dbi-services.com","telephone":"+41 32 422 96 00","legalName":"dbi services SA"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0b4548362cac3eeff8b3eaf329e3530a","name":"Open source Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","caption":"Open source Team"},"description":"Posts published under the Open source Team account are collective contributions by the dbi services open infrastructure consultants. The practice covers open-source databases and platforms, PostgreSQL first of all, along with MySQL, MariaDB, and Linux, from architecture, replication, and high availability to performance tuning and operations under service level agreements, and contributes actively to the PostgreSQL community.","url":"https:\/\/www.dbi-services.com\/blog\/author\/open-source-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/7021","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\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=7021"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/7021\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=7021"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=7021"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=7021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}